PHP を使用してチェックボックスで選択された複数の行を削除する
ユーザーの選択に基づいてデータベースから複数の行を削除することは、Web 開発における一般的なタスクです。 PHP でチェックボックスを使用してこれを実行するには、特定の手順に従う必要があります。
コード分析
提供されたコードは、チェックボックスの選択に基づいて複数の行を削除しようとしていますが、次の内容が含まれています。いくつかのエラー:
解決策
これらの問題を解決し、行の削除を確実に成功させるには、次の調整を行う必要があります。
配列ベースのチェックボックス名
削除のループを容易にするために、チェックボックスの入力名は配列として扱われる必要があります。これは、チェックボックス名に [] を追加することで実現できます。
<code class="html"><input name="checkbox[]" type="checkbox" value="<?php echo $row['link_id']; ?>"></code>
クエリ内のデータベース接続
データベース接続 ($dbc) は、 mysqli_query を使用してクエリにパラメータを追加します:
<code class="php">$result = mysqli_query($dbc, $sql);</code>
サンプル スクリプト
以下の修正されたスクリプトにはこれらの変更が組み込まれており、機能を示しています:
<code class="php"><?php // Database connection $dbc = mysqli_connect('localhost', 'root', 'admin', 'sample') or die('Error connecting to MySQL server'); // Query to retrieve records $query = "select * from links ORDER BY link_id"; $result = mysqli_query($dbc, $query) or die('Error querying database'); // Count records $count = mysqli_num_rows($result); ?> <table width="400" border="0" cellspacing="1" cellpadding="0"> <tr> <td> <form name="form1" method="post" action=""> <table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC"> <tr> <td bgcolor="#FFFFFF"> </td> <td colspan="3" bgcolor="#FFFFFF"> <strong>Delete multiple links</strong> </td> </tr> <tr> <td align="center" bgcolor="#FFFFFF">#</td> <td align="center" bgcolor="#FFFFFF"> <strong>Link ID</strong> </td> <td align="center" bgcolor="#FFFFFF"> <strong>Link Name</strong> </td> <td align="center" bgcolor="#FFFFFF"> <strong>Link URL</strong> </td> </tr> <?php while ($row = mysqli_fetch_array($result)) { ?> <tr> <td align="center" bgcolor="#FFFFFF"> <input name="checkbox[]" type="checkbox" value="<?php echo $row['link_id']; ?>"> </td> <td bgcolor="#FFFFFF"><?php echo $row['link_id']; ?></td> <td bgcolor="#FFFFFF"><?php echo $row['link_name']; ?></td> <td bgcolor="#FFFFFF"><?php echo $row['link_url']; ?></td> </tr> <?php } ?> <tr> <td colspan="4" align="center" bgcolor="#FFFFFF"> <input name="delete" type="submit" value="Delete"> </td> </tr> </table> </form> </td> </tr> </table> <?php // Check if delete button active, start this if (isset($_POST['delete'])) { $checkbox = $_POST['checkbox']; for ($i = 0; $i < count($checkbox); $i++) { $del_id = $checkbox[$i]; $sql = "DELETE FROM links WHERE link_id='$del_id'"; $result = mysqli_query($dbc, $sql); } // If successful, redirect to view_links.php if ($result) { echo '<meta http-equiv="refresh" content="0;URL=view_links.php">'; } } mysqli_close($dbc); ?></code>
これらの修正を行うことで、スクリプトはユーザーのチェックボックスの選択に基づいて、指定されたテーブルから複数の行を効果的に削除します。
以上がPHP でチェックボックスを使用して複数の行を正しく削除する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。