-1

削除するアイテムをユーザーに確認させようとしています。ユーザーが1つまたは複数の項目をチェックして[削除]ボタンをクリックすると、それらのデータはデータベースから消去されます。DVDを検索するための検索ボックスも追加しました。検索ボックスは機能しますが、削除は機能しません。これは、ブラウザでどのように表示されるかです。

PHPの削除

私のPHPは次のよ​​うになります(検索コードを取り出しました):

<form action="" method="post">
<p><input type="text" name="search"> <input type="submit" value="Search"></p>
<p><input type="submit" name="deleting" value="Delete"></p>
</form>
<?php   
    $link = mysqli_connect( $host, $user, $password, $dbname);
    if (!$link) {
        die('Could not connect: ' . mysqli_connect_error());
    }
    echo 'Connected successfully<br/>';

//searching code goes here 

if (isset ($_POST['deleting']) && isset ($_POST['deleteThese']) )
{
$deleteThese = implode(",", $_POST['deleteThese']); 
$queryTwo = "DELETE FROM `$dbname`.`dvds` WHERE `dvds`.`DvdID` IN ($deleteThese)"; 
$resultTwo = mysqli_query($link, $queryTwo);
}

echo "<table border=\"1\"><tr><th>DvdTitle</th><th>RunningTime</th><th>Delete</th></tr>";
if (mysqli_num_rows($result) == 0)
   echo "<tr><td colspan='2'>No records found.</td></tr>";

   else {
    while ($row = mysqli_fetch_assoc($result)) {
    echo "<tr><td>" . $row['DvdTitle'] . "</td>";
    echo "<td>" . $row['RunningTime'] . "</td>";
    echo "<td>" . "<form>" . "<input type='checkbox' name='deleteThese[]' value='" . $row['DvdID'] . "' >" . "</form>" . "</td></tr>\n"; 
           }
        }
    echo "</table>";
    mysqli_free_result($result);
    mysqli_close($link);
?>

各DvdTitleには一意のDvdIDがあるため、各行の値はdvdのID$row['DvdID']です。

4

2 に答える 2

1

括弧を追加すると、それらのIDを削除対象として選択できるようになります。

 IN($deleteThese)

編集

送信ボタンの後でフォームを閉じないでください。それをコードの最後に置きます。これにより、フォームにチェックボックスの値を含めることができます。

<form action="" method="post">
<p><input type="text" name="search"> <input type="submit" value="Search"></p>
<!-- YOUR PHP CODE -->
<p><input type="submit" name="deleting" value="Delete"></p>
</form>

2回目の編集[コードの改善を依頼]

issetをフォームの上に移動します。

<?php
if (isset ($_POST['deleting']) && isset ($_POST['deleteThese']) )
{
  $deleteThese = implode(",", $_POST['deleteThese']); 
  $queryTwo = "DELETE FROM `$dbname`.`dvds` WHERE `dvds`.`DvdID` IN ($deleteThese)"; 
  $resultTwo = mysqli_query($link, $queryTwo);
}
?>
<form>....
于 2013-03-24T23:29:13.590 に答える
0

$deletethese引用符で囲む必要があるかもしれません。

于 2013-03-24T23:34:36.500 に答える