>백엔드 개발 >PHP 튜토리얼 >PHP에서 체크박스를 사용하여 여러 행을 올바르게 삭제하는 방법은 무엇입니까?

PHP에서 체크박스를 사용하여 여러 행을 올바르게 삭제하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-28 07:23:02507검색

How to Correctly Delete Multiple Rows Using Checkboxes in PHP?

PHP를 사용하여 체크박스로 선택한 여러 행 삭제

사용자 선택에 따라 데이터베이스에서 여러 행을 삭제하는 것은 웹 개발에서 일반적인 작업입니다. . 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.