データベースへのアクセス回数を減らすべく、mysqli_queryでの更新・削除処理を一回にまとめたいと思って、where句にandを追加して下記コードを書いてみたんですが、foreach文では処理できない様で他のループ文を書いてみようと試みてるんですが、他のループ文の条件式をどのように書けばいいのか調べても不明です
ご指摘いただけませんか
PHP
1 $link = mysqli_connect($host, $user, $pass, $dbname) or die("NG"); 2 3 mysqli_select_db($link, "XXX"); 4 5 if (isset($_POST['name'], $_POST['comment'], $_POST['bbs']) && $_POST['bbs'] == "post") { 6 $name = $_POST['name']; 7 $comment = $_POST['comment']; 8 mysqli_query($link, "INSERT INTO XXX (name, comment) VALUES ('$name', '$comment')"); 9 } elseif (isset($_POST['bbs']) && $_POST['bbs'] == "update") { 10 foreach($_POST['chkid'] as $id) { 11 $name = $_POST['name']; 12 $comment = $_POST['comment']; 13 $update = $id; 14 $delete = $id; 15 mysqli_query($link, "UPDATE XXX SET name = '$name', comment = '$comment' WHERE id = $update and DELETE FROM XXX WHERE id = $delete"); 16 } 17 } 18 19 $result = mysqli_query($link, "SELECT * FROM XXX ORDER BY time DESC"); 20?> 21 22<html> 23 <head> 24 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 25 </head> 26 <body> 27 <form method="post" action=""> 28 <table> 29 <tr> 30 <td> 31 名前:<input type="text" name="name"> 32 内容:<textarea name="comment" cols="30" rows="3"></textarea> 33 <input type="radio" name="bbs" value="post" checked>投稿 34 <input type="radio" name="bbs" value="update">更新 35 <input type="radio" name="bbs" value="delete">削除 36 <input type="submit" value="投稿"> 37 </td> 38 </tr> 39 </table> 40 41<?php 42 while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 43?> 44 45 <table> 46 <input type="checkbox" name="chkid[]" value="<?=$row['id'] ?>"> 47 <tr> 48 <td>名前: 49 <?php echo $row['name'] ?> 50 </td> 51 </tr> 52 <tr> 53 <td>内容: 54 <?php echo $row['comment'] ?> 55 </td> 56 </tr> 57 </table> 58 59<?php 60 } 61 mysqli_free_result($result); 62 63 mysqli_close($link); 64?> 65 66 </form> 67 </body> 68</html>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/16 04:30