Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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&;MySQL-删除表行问题_Php_Mysql_Xhtml - Fatal编程技术网

PHP&;MySQL-删除表行问题

PHP&;MySQL-删除表行问题,php,mysql,xhtml,Php,Mysql,Xhtml,好的,我的脚本应该删除存储在2个MySQL表中的特定用户案例,但由于某种原因,当用户删除特定案例时,它会删除所有用户案例,我只希望它删除用户选择的案例。我想知道如何解决这个问题?提前谢谢你的帮助 下面是PHP&MySQL代码 if(isset($_POST['delete_case'])) { $cases_ids = array(); $mysqli = mysqli_connect("localhost", "root", "", "sitename"); $dbc = mysqli_q

好的,我的脚本应该删除存储在2个MySQL表中的特定用户案例,但由于某种原因,当用户删除特定案例时,它会删除所有用户案例,我只希望它删除用户选择的案例。我想知道如何解决这个问题?提前谢谢你的帮助

下面是PHP&MySQL代码

if(isset($_POST['delete_case'])) {

$cases_ids = array();

$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT cases.*, users_cases.* FROM cases INNER JOIN users_cases ON users_cases.cases_id = cases.id WHERE users_cases.user_id='$user_id'");

if (!$dbc) {
    print mysqli_error($mysqli);
}  else {
    while($row = mysqli_fetch_array($dbc)){ 
        $cases_ids[] = $row["cases_id"];
    }
}

foreach($_POST['delete_id'] as $di) {
    if(in_array($di, $cases_ids)) {
        $mysqli = mysqli_connect("localhost", "root", "", "sitename");
        $dbc = mysqli_query($mysqli,"DELETE FROM users_cases WHERE cases_id = '$di'");

        $dbc2 = mysqli_query($mysqli,"DELETE FROM cases WHERE id = '$di'");
    }

}

}
这是XHTML代码

<li>
<input type="text" name="file[]" size="25" />
<input type="text" name="case[]" size="25" />
<input type="text" name="name[]" size="25" />
<input type="submit" name="delete_case" id="delete_case" value="Delete Case" />
<input type="hidden" name="delete_id[]" value="' . $row['cases_id'] . '" />
</li>

<li>
<input type="text" name="file[]" size="25" />
<input type="text" name="case[]" size="25" />
<input type="text" name="name[]" size="25" />
<input type="submit" name="delete_case" id="delete_case" value="Delete Case" />
<input type="hidden" name="delete_id[]" value="' . $row['cases_id'] . '" /> 
</li>

<li>
<input type="text" name="file[]" size="25" />
<input type="text" name="case[]" size="25" />
<input type="text" name="name[]" size="25" />
<input type="submit" name="delete_case" id="delete_case" value="Delete Case" />
<input type="hidden" name="delete_id[]" value="' . $row['cases_id'] . '" /> 
</li>

乍一看,这可能是因为所有HTML都包含在同一个表单中。因此,无论单击哪个Delete Case按钮,每个Delete_id[]隐藏字段都将提交到服务器

所以你需要把每一行分成它自己的形式,就像

<li>
<form method="POST" action="someURL.php">
<input type="text" name="file[]" size="25" />
<input type="text" name="case[]" size="25" />
<input type="text" name="name[]" size="25" />
<input type="submit" name="delete_case" id="delete_case" value="Delete Case" />
<input type="hidden" name="delete_id[]" value="' . $row['cases_id'] . '" />
</form>
</li>

  • 或者将提交按钮更改为普通按钮并添加一些javascript…

    这可能是因为即使用户选择了一个案例,也会传递所有案例的id

    以下内容可能仅用于获取用户选择的值

  • 将复选框与具有唯一id的每个li关联
  • 让用户选中要删除的案例的复选框
  • 当用户按下“删除”或其他按钮时,使用javascript收集选中复选框的案例的id
  • 然后将这些ID提交到下一页

  • 你试过调试你的代码吗?所有变量和查询的值是多少?@schraspel上校,是的,我尝试调试代码,但没有成功。这可能是因为即使用户选择了一个案例,所有案例的id都会被传递……我如何解决此问题,以便只有特定案例发送id?另一个备选方案的可能重复是,您保留一个表单,只有一个删除案例按钮和复选框,因此,用户可以检查要删除的案例(即,将
    替换为
    <li>
    <form method="POST" action="someURL.php">
    <input type="text" name="file[]" size="25" />
    <input type="text" name="case[]" size="25" />
    <input type="text" name="name[]" size="25" />
    <input type="submit" name="delete_case" id="delete_case" value="Delete Case" />
    <input type="hidden" name="delete_id[]" value="' . $row['cases_id'] . '" />
    </form>
    </li>