我为我的网站制作了一个用户系统。如果你打开它,你会看到所有用户的列表,你可以通过将数据库中的“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>";
}
答案 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