PHP でチェックボックスを使用して複数の行を正しく削除する方法は?

Patricia Arquette
リリース: 2024-10-28 07:23:02
オリジナル
420 人が閲覧しました

How to Correctly Delete Multiple Rows Using Checkboxes in PHP?

PHP を使用してチェックボックスで選択された複数の行を削除する

ユーザーの選択に基づいてデータベースから複数の行を削除することは、Web 開発における一般的なタスクです。 PHP でチェックボックスを使用してこれを実行するには、特定の手順に従う必要があります。

コード分析

提供されたコードは、チェックボックスの選択に基づいて複数の行を削除しようとしていますが、次の内容が含まれています。いくつかのエラー:

  • チェックボックスの入力名は配列として扱われないため、削除のための適切なループが妨げられます。
  • mysqli_query を使用してデータベース接続がクエリに渡されません。

解決策

これらの問題を解決し、行の削除を確実に成功させるには、次の調整を行う必要があります。

配列ベースのチェックボックス名

削除のループを容易にするために、チェックボックスの入力名は配列として扱われる必要があります。これは、チェックボックス名に [] を追加することで実現できます。

<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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!