現在のコードを書きます。
PHP
1<?php 2// 既に挿入済みのデータを取得するために、年月日で抽出します。 3$year = $_POST['year']; 4$month = $_POST['month']; 5$day = $_POST['day']; 6 7// try catchでデータベースに接続、年月日でWHERE 8try { 9省略 10} catch 11 12while ($row = $stmt->fetch()) : 13?>
次に、データをtableで表示していきます。
HTML
1<tr> 2<td> 3// nameの表示、hiddenのidは表示後、修正するのに使う予定 4<?= $row['name']; ?> 5<input type="hidden" name="id[]" value="<?= $row['id']; ?>"> 6</td> 7<td> 8<select name="dakoku[]"> 9<option <?= $row['dakoku'] != '出勤' ?: 'selected' ?>>出勤</option> 10<option <?= $row['dakoku'] != '退勤' ?: 'selected' ?>>退勤</option> 11</select> 12</td> 13<td> 14<select name="hour[]"> 15<?php 16for ($i = 0; $i <= 24; $i++) : 17?> 18<option <?= $row['hour'] != $i ?: 'selected' ?>><?= $i; ?></option> 19<?php endfor; ?> 20</select> 21</td> 22<td> 23<select name="minutes[]"> 24<?php 25for ($i = 0; $i <= 59; $i++) : 26?> 27<option <?= $row['minutes'] != $i ?: 'selected' ?>><?= $i; ?></option> 28<?php endfor; ?> 29</select> 30</td> 31</tr> 32<?php endwhile; ?> 33<input type="submit" value="変更保存"> 34</form>
次に、DBへUPDATEするのに
PHP
1try { 2 $dbh = new PDO(DSN, DB_USER, DB_PASSWORD); 3 $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 4 $stmt = $dbh->prepare( 5 "UPDATE test SET dakoku = ?, hour = ?, minutesu = ? WHERE id = ?"); 6 $dbh->biginTransaction(); 7 foreach($_POST['data'] as $data) { 8 $stmt->bindParam(1, $data['dakoku'], PDO::PARAM_STR); 9 $stmt->bindParam(2, $data['hour'], PDO::PARAM_STR); 10 $stmt->bindParam(3, $data['minutes'], PDO::PARAM_STR); 11 $stmt->bindParam(4, $data['id'], PDO::PARAM_STR); 12 $stmt->execute(); 13} 14$dbh->commit();
上記のようにしました。
別に質問した際に、HTMLの部分では
HTML
1<input type="hidden" name="data[]['id']" value="<?= $row['id']; ?>">
上記のように配列をということで、教えていただき、、、
foreachでまわせるようにということでした。
が、、、、
知識が乏しいもので、、、
現在のコードからforeachさせるには、、、という部分が理解できておりません。
お手数ですが、教えていただけますか?
※例外等に関しては簡潔にするため、省略です。
回答1件
あなたの回答
tips
プレビュー