HTML表单发送错误的数据库ID PHP

时间:2016-12-17 12:28:04

标签: php html forms

我为我的网站制作了一个用户系统。如果你打开它,你会看到所有用户的列表,你可以通过将数据库中的“n_gesperrt”更改为1或0来锁定或解锁它们.1表示已锁定。 您在此处看到的表单始终将最后一个用户ID(n_id)发送到顶部的php脚本。因此,如果我想要更改某些内容,它只适用于列表中显示的最后一个用户。 我该如何解决这个问题? 这些是代码片段:

表格:

    while ($zeile = mysqli_fetch_assoc($res))
 {  
echo "<form name=\"nutzer_sperren\" method=\"POST\" action=\"index.php?page=nutzer_sperren\">";
    echo "<input type=\"hidden\" name=\"n_id\" value=\"".$zeile['n_id']."\">";
    echo $zeile['n_id'];
        if($zeile['n_gesperrt'] == 0){
            echo "<input type =\"submit\" name=\"sperren\" value=\"Nutzer sperren\">";
        }
        else {
            echo "<input type =\"submit\" name=\"entsperren\" value=\"Nutzer entsperren\">";
        }
    echo '</form">';    

数据库中的编辑:

        if(isset($_POST['sperren']))
{   
    $sperrung = mysqli_real_escape_string($verbinde, 1);
    mysqli_query($verbinde, 'UPDATE nutzer SET n_gesperrt ="'.$sperrung.'" WHERE n_id ='.$_POST["n_id"].'') or die(mysqli_error($verbinde));
    echo "Daten wurden erfolgreich geändert. <br>Bitte aktualisieren Sie die Seite!";
    echo $_POST["n_id"];
    echo "<hr>";
}



if(isset($_POST['entsperren']))
{
    $entsperren = mysqli_real_escape_string($verbinde, 0);
    mysqli_query($verbinde, 'UPDATE nutzer SET n_gesperrt ="'.$entsperren.'" WHERE n_id ='.$_POST["n_id"].'') or die(mysqli_error($verbinde));
    echo "Daten wurden erfolgreich geändert. <br>Bitte aktualisieren Sie die Seite!";
    echo $_POST["n_id"];
    echo "<hr>";
}

2 个答案:

答案 0 :(得分:0)

使用name作为数组 如下所示,您将获得数组

的结果
     while ($zeile = mysqli_fetch_assoc($res))
     {  
    echo "<form name=\"nutzer_sperren\" method=\"POST\" action=\"index.php?page=nutzer_sperren\">";
        echo "<input type=\"hidden\" name=\"n_id[]\" value=\"".$zeile['n_id']."\">";
        echo $zeile['n_id'];
            if($zeile['n_gesperrt'] == 0){
                echo "<input type =\"submit\" name=\"sperren[]\" value=\"Nutzer sperren\">";
            }
            else {
                echo "<input type =\"submit\" name=\"entsperren[]\" value=\"Nutzer entsperren\">";
            }
        echo '</form">';
提交页面上的

获取价值     $名称= $ _ POST [&#39; entsperren&#39;];

print_r($name);

答案 1 :(得分:0)

您需要在代码中更改一些内容,例如:

  •   

    ...您在此处看到的表单总是将最后一个用户ID(n_id)发送到顶部的php脚本。因此,如果我想要更改某些内容,它只适用于列表中显示的最后一个用户。

    这是因为您为所有隐藏输入元素分配了相同的name属性。按以下方式更改name属性

    ... name='n_id[]' ...
    
  • 提交元素的name属性更改为submit,因为这样您就不必使用两个单独的{{1}阻止用户的响应。

  • if中移除双引号,否则您的表单会中断。

所以你的echo '</form">';循环应该是这样的:

while()

此外,正如我上面所说,您不必使用两个单独的while ($zeile = mysqli_fetch_assoc($res)){ echo "<form method='POST' action='index.php?page=nutzer_sperren'>"; echo "<input type='hidden' name='n_id[]' value='".$zeile['n_id']."'>"; if($zeile['n_gesperrt'] == 0){ echo "<input type ='submit' name='submit' value='Nutzer sperren'>"; } else { echo "<input type ='submit' name='submit' value='Nutzer entsperren'>"; } echo '</form>'; } 块,只需使用一个if块来检查表单是否已提交并切换< if操作中的em> n_gesperrt 列值,如下所示:

UPDATE