質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1261閲覧

PHP:それぞれの日付に管理番号をつけたい

risektj

総合スコア3

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2020/09/26 00:56

編集2020/09/26 01:53

開発環境 PHP7
どう計算しても合わないので困っています;

第一週目の日曜を1としてカウントし始め、
第五週目の土曜まで次の様に連番を振っていくスクリプトを組んでいます。

イメージ説明

最終的には特定の日付を入力した時に、対応した番号が表示できれば良いのですが、試行錯誤してもうまく計算が合わず違う番号が出力されてしまいます。

PHP

1/* 今日の日付でテスト */ 2 3// 今日の日付 4list($y,$m,$d) = explode("-",date("Y-m-d")); 5 6// 今日の曜日は何番目か 7$weekday_num = date("w"); 8 9// 今日は何週目か 10$week_num = getWeekNo($y,$m,$d); 11 12// 計算 13$day_num = ($weekday_num + 1) * $week_num; 14echo $day_num; 15 16// 例えば上記だと 2020年9月26日が第四週目の土曜なので 28が出力されますが 17// 2020年9月27日は第五週目の日曜なので29となるはずがdate("w")が0のせいか 4 と出てしまいます。 18 19function getWeekNo($y,$m,$d){ 20 $l = date("l",mktime(0,0,0,$m,$d,$y)); 21 $f = date("F",mktime(0,0,0,$m,$d,$y)); 22 if(date("j",strtotime("first {$l} of {$f} {$y}"))==$d) return 1; 23 if(date("j",strtotime("second {$l} of {$f} {$y}"))==$d) return 2; 24 if(date("j",strtotime("third {$l} of {$f} {$y}"))==$d) return 3; 25 if(date("j",strtotime("fourth {$l} of {$f} {$y}"))==$d) return 4; 26 if(date("j",strtotime("fifth {$l} of {$f} {$y}"))==$d) return 5; 27 return false; 28} 29

回答お願いしたい点は、
・最終的に $day_num の計算をどうすれば辻褄が合うか
です。
どうか力をお貸し頂ければ幸いです。

計算が難しいのであれば
曜日番号と週番号を配列キーに、要素にIDを入れて、
手動で出力させようと思っています。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

$day_num = ($weekday_num + 1) + (($week_num - 1) * 7);
かな。

投稿2020/09/26 03:22

hana_yama_san

総合スコア923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

risektj

2020/09/26 05:07

回答ありがとうございます!! おかげさまで計算式ばっちり合いました。 2020-10-01の例文が間違っていたことにも先ほど気付きましたm(__)m お手数おかけ致しました。
guest

0

管理番号は、tableタグの日付表示のセルのナンバリングですよね?

htmlの内容がわからなかったので、こちらで勝手に判断したやり方ですが、
日付のtdタグに.dayというクラス名を付与して、

javascript

1var cells = document.querySelectorAll("table td.day"); 2for( var i=0; i<cells.length; i++){ 3 cells[i].setAttribute("data-cell-number" , i) 4}

とセットすると、対象の日付のセル箇所で"cell.getAttribute('data-cell-number')"をすると番号取得ができると思いますが、
こういうやり方でいかがでしょう?

ちなみに、日付の値もdata属性で書き込んでおくと、システム側で扱いやすいですよ。

投稿2020/09/26 01:32

geta

総合スコア241

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

risektj

2020/09/26 01:35

すみません、HTMLは確かに使用するのですがテーブルでは無く、PHPで今日の日付 or 任意の日付を指定した時にこの数字(ID)を出力させたいのです。
risektj

2020/09/26 03:10

すみませんそのコードなら既に質問に添付しているコードに含まれています、、 曜日番号と何周目かは出せていますので、それらをどう組み合わせれば該当のNumberが出せるのか、という質問になります。 噛み合わない様なら一つ一つ配列に入れて行きますが、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問