こんにちは、みなさん宜しくお願い致します。
現在PHPとPostgreSQLを使用して勤務管理を作成しているのですが
またまた躓き自分ではこれ以上解決出来なくなったので、再度こちらにて質問させて頂きます。
※自分が行おうとしている処理一覧です
下記のようなレアウトのテーブルがあります。
----------------------------------------
日付(曜日) | 労働時間 | チェックボックス | 登録ボタン
当月15日
|
翌月15日
----------------------------------------
となっております。
1:日付表示は教えて頂いた処理で実現する事が出来ました。
<?php
$now = time();
$year = date('Y', $now);
$month = date('m', $now);
$day = date('d', $now);
if ($day < 15) $month--;
$numOfDays = date('t', mktime(0, 0, 0, $month, 1, $year));
for ($d = 0; $d < $numOfDays; $d++){
echo date("Y-m-d(D)", mktime(0, 0, 0, $month, 15+$d, $year)). "\n";
}
?>
2:労働時間を入力し、登録ボタンを押せば日付と労働時間がDataBaseに登録される様にしたい
3:出来るならば登録をチェックボックスが押されている項目だけをDatabaseに登録するようにしたいのです。
しかし自分が試した限りではcheckboxを押した項目だけを取得させDatabase
に登録させるという処理が出来ませんでした。
それどころか、労働時間を入力し登録ボタンを押せば労働時間を入力した
日付と労働時間がDataBaseに登録される処理すら出来ない状態です。
ご教授をお願いしたく質問させて頂きました。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
$youbi = $weekday[$w];
echo "<TR>
<TD>$date</TD><TD>$youbi</TD>
<TD><INPUT TYPE='text' NAME='work_time'.$d SIZE='10'VALUE='work_time'.$d></TD>
<TD><INPUT TYPE='checkbox' NAME='work_check'$d></TD>
のところですが、
$youbi = $weekday[$w];
$ymddate = date("Ymd", mktime(0, 0, 0, $month, 15+$d, $year));
echo "<TR>
<TD>$date</TD><TD>$youbi</TD>
<TD><INPUT TYPE='text' NAME='work_time[$ymddate]' SIZE='10'></TD>
<TD><INPUT TYPE='checkbox' NAME='work_check[]' VALUE='$ymddate'></TD>
とかにしておくと、ユーザがチェックした日付(yyyymmdd形式)が、$_POST['work_check']の中に配列で入ります。
労働時間のデータは、例えば2007年04月10日のデータは、
$_POST['work_time']['20070410']とすれば取得できます。
なので、以下のようにすればINSERT用のデータ(チェックボックスがONになっている分)を得られます。
foreach ($_POST['work_check'] as $tmp) {
echo "INSERT用のデータです ";
echo "日付 $tmp : 労働時間 ". $_POST['work_time'][$tmp]. "\n";
}
具体的なSQLのところは、工夫してみてください。
racchoman様、お返事遅くなり申し訳ございません。
教えて頂いたコードで処理を実装する事が出来ました。
しかし肝心な私自身が上記コードを理解出来ていませんので
これからゆっくりと読み解いていきたいと考えております。
ちなみにこれとは関係のない質問なのですが、PHPやDBをどのように
勉強なさっているのでしょうか?
自分は正直解らない事が多過ぎて…上記のような処理も全く思いつきません。
良い勉強方法などがあれば、ご教授頂けませんか?
No.5
- 回答日時:
ざっとみただけですが…
if(work_time1 AND work_check1){
は
if($work_time1 AND isset($_POST[work_check1])){
かな。
又は
<INPUT TYPE='checkbox' ~
を
<INPUT TYPE='checkbox' value='1'~
などにしてから
if($work_time1 AND $_POST[work_check1]){
sjam様、ご返答遅くなり申し訳ございません。
度々のご教授感謝しております。
早速手直しして、動くようにしたいと思います。
ありがとうございました。
No.3
- 回答日時:
> 誤作動するんでしょうか、しないんでしょうか。
> 判らないのであれば、mktime()について調べてみましょう。>#1さん
totsugiinoのプログラムではないので、
別に今はわからなくてもかまいません。
totsugiinoは、ただ心配しているだけです。
調べる必要があるとすれば、元の質問をされたかたのほうです。
よろしいでしょうか。
No.2
- 回答日時:
> > 1:日付表示は教えて頂いた処理で実現する事が出来ました。
> > if ($day < 15) $month--;
>
> 来年の1月になったとき、思わぬ誤動作をしないかと心配です。
「心配」というのは、曖昧な表現です。
誤作動するんでしょうか、しないんでしょうか。
判らないのであれば、mktime()について調べてみましょう。>#1さん
> > しかし自分が試した限りではcheckboxを押した項目だけを取得させDatabase
> > に登録させるという処理が出来ませんでした。
>
> 「試したけどできない」では、状況が伝わりません。
> 「こんなスクリプトを書いてみたらこんなエラーが出た」という風に、
> できるだけ具体的に説明してください。
差し支えない範囲で、プログラムを載せた方が、回答が得られやすいかと思います。
totsugiino様、racchoman様、お返事感謝しております。
どうしても前に進めない為、再度の質問お許しください。
以下コードです
-----------------------------------------------------------
$weekday = array("日","月","火","水","木","金","土");
$now = time(); $year = date('Y', $now); $month = date('m', $now); $day = date('d', $now);
if($day < 15){
$month--;
}
$numOfDays = date('t', mktime(0, 0, 0, $month, 1, $year));
for($d = 0; $d < $numOfDays; $d++){
$date = date("Y年m月d日", mktime(0, 0, 0, $month, 15+$d, $year));
$w = date("w", mktime(0, 0, 0, $month, $d+1, $year));
$youbi = $weekday[$w];
echo "<TR>
<TD>$date</TD><TD>$youbi</TD>
<TD><INPUT TYPE='text' NAME='work_time'.$d SIZE='10'VALUE='work_time'.$d></TD>
<TD><INPUT TYPE='checkbox' NAME='work_check'$d></TD>
</TR>";
}
$work_time1 = $_POST['work_time1'];
$result = pg_query($con, "SELECT TO_CHAR(CURRENT_DATE, 'yyyy-mm-dd')");
$yyyymmdd = pg_fetch_result($result, 0, 0);
if(work_time1 AND work_check1){
pg_query($con, "INSERT INTO work_time_tbl(day, work_time) VALUES ('$yyyymmdd', '$work_time1')");
}
-----------------------------------------------------------
このようにすると形的には
-----------------------------------------
日付(曜日) | 労働時間 | チェックボックス |
当月15日
|
翌月15日
------------------------------------------
となるのですが、チェックボックスを押しても押さなくても値の入力が出来ません。
あとこのコードだとPHPで表示している日付をDBに格納する事が出来ません。
これは完全な知識不足です…(>_<)
望む処理としては
--------------------------------
任意日付| 勤務時間 | チェク済み |
--------------------------------
で登録ボタンを押せばDBにと登録される様にしたいです。
-----------------------
任意日付| 勤務時間 | 1 |
-----------------------
※『1』はチェック済みFlag
この処理で三日間位躓いていますが、一向に解決策が見出せないので
皆様のお力をお借りしたいと考えております。
No.1
- 回答日時:
> 1:日付表示は教えて頂いた処理で実現する事が出来ました。
> if ($day < 15) $month--;
来年の1月になったとき、思わぬ誤動作をしないかと心配です。
> しかし自分が試した限りではcheckboxを押した項目だけを取得させDatabase
> に登録させるという処理が出来ませんでした。
「試したけどできない」では、状況が伝わりません。
「こんなスクリプトを書いてみたらこんなエラーが出た」という風に、
できるだけ具体的に説明してください。
totsugiino様、お返事ありがとうございます。
確かに言われる通り、具体的内容に欠けておりました。
次回からは気をつけるように致します。
ちなみに処理自体は知恵を貸してくれた人達のおかげで実装する事が
出来ました。 本当に感謝しております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- Excel(エクセル) Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい 3 2022/09/13 18:40
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Excel(エクセル) Excel2019、2021の売り上げなどの集計表について 4 2022/11/29 14:03
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- InternetExplorer(IE) お気に入りの「一覧」の表示 2 2022/11/21 13:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Magpie RSSを使用して日付表示...
-
codeigniterの時間設定
-
MySQLのdate型をphpで○年○月○日...
-
rss2.0<pubDate>の日付整形
-
おかしなところがあればどんな...
-
開始と終了を指定して、その間...
-
日付フォーマット
-
Java Scriptで、ある日付に加算...
-
switch()文で値の大小比較
-
「取得先」という表現について
-
【C#】DataGridViewの最大列数...
-
Dosブロンプトでtabを出力したい
-
shシェルスクリプト 空白行の...
-
phpでcookieがうまく保存されない
-
DTOとEntityの差は何ですか。
-
WordでExcelデータを差込...
-
ActiveReportのサブレポート機...
-
DMMの動画を全件取得したのです...
-
wordの差し込み印刷で文字...
-
VBA内でのGetPixelを使用した時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
開始と終了を指定して、その間...
-
ファイル名に日付の挿入
-
昨日の日付を取得するVBscript
-
substrの使い方について教えて...
-
一週間の表示の仕方と文字表示
-
PHPで以下のような占いプログラ...
-
C言語を使って、ある特定の日の...
-
アップロードしたファイル名に...
-
PHPでカレンダーを作る(縦書き)
-
プルダウンメニューの値をDBに...
-
第何週かを取得したい
-
日付によって画像を変える
-
差分の月数を算出する方法
-
SQL:TIMESTAMPの期間検索を指...
-
PHP 指定した期間だけ表示した...
-
C言語でシステム日付との差を...
-
プルダウンで今日以降の日付を...
-
Accessコンボボックス
-
MovableTypeで、ある日付を過ぎ...
-
Java Scriptで、ある日付に加算...
おすすめ情報