0

私のウェブサイトは、PHP と MySQL でプログラムされたオンライン案内広告を掲載しています。次のコードにより、管理者はチェックボックス ツールを使用して複数のレコードを削除できます。

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >   
  <table>
    <td><? echo $rows['CountryName']; ?></td>
    <td><input name="delete_items[]" type="checkbox" value="<?php echo $rows['id']; ?>" /></td>
  </table>
  <input type="submit" name="deleteSelected" value="Submit" >
</form>

<?php
if(isset($_POST['deleteSelected'])) {
$delete_items = join(', ', $_POST["delete_items"]);  
$query = "DELETE FROM $table_name WHERE id IN ($deleted_items)";    
$result = mysql_query($query);    
header("Location: admin.php"); }
?>

チェックボックスをオンにせずに送信ボタンを押すと (すべてのボックスがオフになっている)、次のエラーメッセージが表示されます (チェックボックスがオンになっている場合、スクリプトはエラーメッセージなしで正常に動作しています)。

警告: join() [function.join]: C:\xampp\htdocs\admin_listing.php 行 87 で無効な引数が渡されました

implodeを使用する代わりに関数を試しましたjoinが、それでもエラー メッセージが表示されます。関数を介して配列を正しく渡していない可能性がありますが、上記の解決策が見つかりません。

アドバイスをいただければ幸いです。

4

2 に答える 2

0

データベースのすべてのレコードをフォームの単一の入力に表示しているようです。

このコードはおそらく試したとおりにうまく機能しimplode()ますが、オプションを使用してフォームを適切に生成するには、フォームの表示でループを使用する必要があります。

このようなもの:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >   
    <table>
    <?php
    while($row=$databaseResult) //however you are getting the data out of the database.
    {
        echo "<tr><td>".$rows['CountryName']."</td><td><input name='delete_items[]' type='checkbox' value=".$rows['id']."/></td></tr>";
    }
    ?>
    </table>
    <input type="submit" name="deleteSelected" value="Submit" >
</form>
于 2012-08-19T04:01:21.780 に答える
0

助けてくれてありがとう、次のように1行のコード行を追加することで簡単な解決策を見つけました:

<?php 
if(isset($_POST['deleteSelected'])) { 
  if(isset($_POST["delete_items"][0])) {
    $delete_items = join(', ', $_POST["delete_items"]);   
    $query = "DELETE FROM $table_name WHERE id IN ($delete_items)";     
    $result = mysql_query($query);     
    header("Location: admin.php"); 
  }
 } 
?> 

それが他の誰かを助けることができることを願っています...

于 2012-08-19T15:47:14.410 に答える