やりたい事、ここまではやった事
[insert]
1.画面に名前を選択するセレクトボックスと、送信ボタンがある
↓
2.名前を選択して、送信ボタンを押す
↓
3.DBに登録される
PHP
1<form action="" method="post"> 2<select name="staff_id"> 3 <option></option> 4 <?php 5 // DBに接続 6 $stmt = $dbh->prepare( 7 "SELECT staff_id, name FROM staff_master"); 8 $stmt->execute(); 9 while ($row = $stmt->fetch()) : 10 $id = $row['staff_id']; 11 $name = $row['name']; 12 ?> 13 <option value="<?= $id; ?>"><?= $name; ?></option> 14 <?php endwhile; ?> 15</select> 16<input type="submit" name="insert" id="insert" value="登録"> 17</form>
PHP
1if (isset($_POST['insert')) { 2 $staff_id = $_POST['staff_id']; 3 if ($staff_id === "") { 4 $errorMessage = "×"; 5 } 6 if (!empty($staff_id)) { 7 $stamp = "○"; 8 // DB接続 9 $stmt = $dbh->prepare( 10 "INSERT INTO timestamp (staff_id, stamp, timedate) VALUES (?, ?, now())"); 11 $stmt->bindParam(1, $staff_id, PDO::PARAM_STR); 12 $stmt->bindParam(2, $stamp, PDO::PARAM_STR); 13 $stmt->execute();
[serch]
1.年と月をそれぞれセレクトボックスで選択し、名前もセレクトボックスで選択して検索ボタンを押す
※名前に関しては全員分と個別を選べるようにしておく
HTML
1<form action="" method="post"> 2 <select name="year"> 3 // 省略 4 </select> 5 <select name="month"> 6 // 省略 7 </select> 8 <select name="staff_id"> 9 <option></option> // いきなり誰かの名前が出ていないように 10 <option value="all">全員</option> // 全員分を出すように 11 // insertでのstaff_id抽出と同様 12 </select> 13 <input type="submit" id="serch" name="serch" value="検索"> 14</form>
PHP
1if (isset($_POST['serch'])) { 2 $staff_id = $_POST['staff_id']; 3 if ($staff_id === "") { 4 // 選択されてなかったらエラーメッセージ 5 } 6 if ($staff_id === "all") { 7 // allだったら、全員分select 8 "SELECT name, timestamp.id, stamp, timedate FROM staff_master INNER JOIN timestamp ON staff_master.staff_id = timestamp.staff_id" 9 } 10 if ($staff_id != "all") { 11 // allではなかったら、選択された人をselect 12 "SELECT name, timestamp.id, stamp, timedate FROM staff_master INNER JOIN timestamp ON staff_master.staff_id = timestamp.staff_id WHERE staff_id = ?" 13 }
大分省略してしまいましたが、書き方はすごく初心者の書き方です。
PDOで接続したりしています。
ここからの表示部分に関してアドバイスください。
[date_list]
上記の検索フォームからデータをとりあえず取得し、表示できるようにしたのが、、
PHP
1while ($row = $stmt->fetch()) : 2 $id = $row['id']; 3 $name = $row['name']; 4 $stamp = $row['stamp']; 5 $timedate = $row['timedate']; 6 list ($year, $month, $day, $hour, $minutes, $second) = preg_split('/[-: ]/', $timedate); 7?>
として、表示させることはできます。
この表示方法ですが、、、、、
例えば、データとして
2016年4月のテストさんのデータを検索したとします。
// idは表示させませんが、編集など用に取得しただけです。 名前, 日, スタンプ テスト, 3, ○ テスト, 4, ○ テスト, 7, ○ テスト, 9, ○ テスト, 11, ○
上記のようにデータを取得したとします。
これを、下記のような感じにしようと思ったら、まずどのようなことをしないといけないでしょうか?
[やりたい表示] 縦に日付の場合 テスト テスト2 // 全員表示なら横に増えていく 1 2 3 ○ 4 ○ 5 6 横に日付の場合 1 2 3 4 5 6 テスト ○ ○ テスト2 // 全員表示なら縦に増えていく
※実際は表示さえできていれば問題はないのですが、、、できればこういう見た目の表示ができるようになればと思います。
※他に必要な情報等あればご指摘ください。
※質問内容が不適切な場合はご指摘ください。
※質問の文章が猥雑になってしまい大変申し訳ございません。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/22 02:58