Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 提交带有多个复选框的单个表单_Php_Html_Forms_Checkbox - Fatal编程技术网

Php 提交带有多个复选框的单个表单

Php 提交带有多个复选框的单个表单,php,html,forms,checkbox,Php,Html,Forms,Checkbox,我用PHP创建了一个网站。我完成了所有的任务,但在这方面仍然有问题。 我写这段代码是为了能够删除控制面板中的多个复选框 它可以工作,但只删除一个框 function SelectDelete() { $a = new mysqli("localhost", "root", "", "gamsite"); if($a->connect_error) {

我用PHP创建了一个网站。我完成了所有的任务,但在这方面仍然有问题。 我写这段代码是为了能够删除控制面板中的多个复选框

它可以工作,但只删除一个框

function SelectDelete()
{
        $a = new mysqli("localhost", "root", "", "gamsite");
        if($a->connect_error)
        {
                die("something went worng".$a->connect_error);
        }
        $tmp=$a->query("SELECT * FROM game");
        if($tmp->num_rows>0)
        {
             while($record=$tmp->fetch_assoc())
             {
                ?>

<form  method="post">
<table class="table table-dark">

  <thead>
    <tr>
    <th scope="col"></th>
    <th scope="col"></th>
    <th scope="col"></th>
      <th scope="col">ID</th>
      <th scope="col">Name</th>
      <th scope="col">Download</th>
      <th scope="col">Image</th>
      <th scope="col">video</th>
      <th scope="col">subgame</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row"></th>
      <th scope="col"></th>
      <input type="hidden" name="act" value="SelectDelete">
      <td>
      <input type="checkbox" name="check[]" value="<?php echo $record['id']; ?>">
      </td>
      <td  name="id"><?php echo $record['id']; ?></td>
      <td name="name"><?php echo $record['name']; ?></td>
      <td name="download"><?php echo $record['download']; ?></td>
      <td name="image"><?php echo $record['image']; ?> </td>
      <td name="video"><?php echo $record['video']; ?></td>
      <td name="subgame"><?php echo $record['subgame']; ?></td>
      <th scope="col"><th scope="col">
    <button type="submit" name="delete" class="btn btn-danger" onclick="location.reload()">Delete</button>
    </th> 
    </tr>
   
  </tbody>
  
</table>
</form>

                 <?php
             }
        }
        else
        {
         echo "There is no data";
        }
if(isset($_POST['delete']))
{
        if(isset($_POST['check']))
        {
             foreach($_POST['check'] as $delete_id)
             {
                $a = new mysqli("localhost", "root", "", "gamsite");
                if($a->connect_error)
                {
                        die("something went worng".$a->connect_error);
                }
                $a->query("DELETE FROM game WHERE id='$delete_id'" );                  
             }   
        }
    }
}

我尽了一切努力使它工作,但没有任何效果。在YouTube上观看了几段视频,但我必须更改代码结构。

您正在整个表单上启动while循环。这意味着每个提交按钮只有一个复选框。您应该在HTML中启动表单,然后运行循环以获得多个复选框

例如:

<form method="post">
    <?php while($record = $tmp->fetch_assoc()): ?>
        // Add the other HTML here, including your checkbox
        <input type="checkbox" name="check[]" value="<?=$record['id']?>">
    <?php endwhile; ?>
</form>

您应该考虑如何显示这些数据。目前,每个表单只有一个复选框,因此提交时只会删除一个复选框。

不要建立多个数据库连接。您的脚本应该只连接一次,并对所有查询重新使用该连接。您的删除查询不安全/不稳定,因为您没有使用准备好的语句。在您的例子中,mysqli结果集对象$tmp可以立即馈送到foreach中,并作为关联数组的索引数组处理,而无需任何获取调用。我建议更合理地命名连接变量-$a不是连接的好名称。将连接传递给自定义函数SelectDelete$conn。我也不喜欢onclick=location.reload或的外观。我想这些应该消失。我想你的死亡文本中有一个打字错误——应该是斯莫尼希·纽特吗?