【问题标题】:How to add POST method如何添加 POST 方法
【发布时间】:2021-10-01 20:53:30
【问题描述】:

编辑:

代码:

<form action="" method="post">
                  <input type = "submit" name="sql_update" value="SQL Update">
                  <?php $admin_checkbox = '<input type="checkbox" name="admin_status">';?>
                      </form>

$getusers = "SELECT id, username, firstname, lastname, admin FROM registered_users";
$result = mysqli_query($db, $getusers);

if ($result->num_rows > 0) {

    while($row = $result->fetch_assoc()) {
        echo "<br>". $row["id"]. " &nbsp; - &nbsp;  " . $row["username"]. "  &nbsp; - &nbsp;  " . $row["firstname"]. " &nbsp; - &nbsp;  " .$row["lastname"]. "  &nbsp; - &nbsp;  " .$row["admin"]. "  &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;  " .$admin_checkbox. "<br>";
    }
}

if (isset($_POST['sql_update'])) {
  if (empty($_POST["admin_status"])){
    echo ("Ni obkljukano");
  }

如何与 $admin_checkbox 连接以使此代码正常工作。

if (empty($_POST["admin_status"])){
    echo ("Ni obkljukano");
  }

更新:

一切正常!

现在我也想知道如何做反向效果。如果用户已经是管理员。我必须在 elseif 语句中输入什么。问了这么多问题我真的很难过:/

if (isset($_POST['sql_update'])) {
  if (empty($_POST["admin_status"])){
    echo ("Ni izbranih elementov.");
  } 
  elseif(){

    $sql_admin_off = mysqli_query($db, "UPDATE registered_users SET admin = 0 WHERE id IN (".implode(',', $_POST['admin_status']).") ");
    $sql_admin_off;
    echo("test");

  }
  else {

    $sql_admin_on = mysqli_query($db, "UPDATE registered_users SET admin = 1 WHERE id IN (".implode(',', $_POST['admin_status']).") ");
    $sql_admin_on;
    echo("SQL uspešno zapisan!");

  }


    }

更新 #2

if (isset($_POST['sql_update'])) {
  if (empty($_POST["admin_status"])){
    echo ("Ni izbranih elementov.");
  } else {

    $sql_admin_on = mysqli_query($db, "UPDATE registered_users SET admin = 1 WHERE id IN (".implode(',', $_POST['admin_status']).") ");
    $sql_admin_on;
    echo("SQL uspešno zapisan!");


    $sql_admin_off = mysqli_query($db, "UPDATE registered_users SET admin = 0 WHERE id NOT IN (".implode(',', $_POST['admin_status']).") ");
    $sql_admin_off;
    echo("test");
  }

  }

【问题讨论】:

  • 您好,欢迎来到 SO!请使用tour 并阅读help center 页面。对于您的问题,这就是您的意思吗:一旦打开,它将列出所有用户+复选框(管理员权限)。一旦提交,它会给用户复选框选中一个管理员,对吗?

标签: php html sql post


【解决方案1】:

假设您已成功列出所有带有管理员复选框的用户:

HTML 表单

当您为每个用户列出所有带有复选框的用户时,请将复选框值设置为userId。还可以使用 字段名称数组 将所有复选框 name="adminId[]" 分组。稍后$_POST['adminId'] 将包含ID's 的数组,其中复选框被选中

然后,如果 ID$_POST['adminId'] 中列出,您可以简单地使用 SQL in 运算符更新 'admin_rights=true'。 Implode() 将使用字符串 (,) 连接数组元素。

<form action="..." method="post">
    <label>
       User ID1: 
       <!-- Admin Checkbox -->
       <input type="checkbox" name="adminId[]" value="id1" />
    </label><br>
    <label>
       User ID2: 
       <!-- Admin Checkbox -->
       <input type="checkbox" name="adminId[]" value="id2" />
    </label><br>
    <label>
       User ID3: 
       <!-- Admin Checkbox -->
       <input type="checkbox" name="adminId[]" value="id3" />
    </label><br>
    <input type="submit" id="edit" name="edit"/>
</form>

PHP

<?php
// If edit button pressed
if( isset($_POST['edit'])) )
{
    // If Admin checkbox were selected then add Admin Rights
    if (isset($_POST['adminId']){
       $sql = 'UPDATE `usertable` SET `admin_rights`= 'true' WHERE id IN ('.implode(',', $_POST['adminId']).')';
       mysqli_query($sql);
    }
}
?>

似乎我误解了您的问题,您仍然无法使用复选框(作为一个整体)列出用户。

看看下面的表格

<form action="" method="post">
    <input type = "submit" name="sql_update" value="SQL Update">
           
<?php
   $getusers = "SELECT id, username, firstname, lastname, admin FROM registered_users";
   $result = mysqli_query($db, $getusers);

   if ($result->num_rows > 0) {
      while($row = $result->fetch_assoc()) {
         if ($row['admin'] == 1){
              echo "<br>". $row['id']. " &nbsp; - &nbsp;  " . $row['username']. "  &nbsp; - &nbsp;  " . $row['firstname']. " &nbsp; - &nbsp;  " .$row['lastname']. "  &nbsp; - &nbsp;  " .$row['admin']. "  &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <input type='checkbox' name='admin_status[]' value='".$row['id']."' checked><br>";
         }
         else echo "<br>". $row['id']. " &nbsp; - &nbsp;  " . $row['username']. "  &nbsp; - &nbsp;  " . $row['firstname']. " &nbsp; - &nbsp;  " .$row['lastname']. "  &nbsp; - &nbsp;  " .$row['admin']. "  &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <input type='checkbox' name='admin_status[]' value='".$row['id']."'><br>";
       }
   }
?>
</form>

检查$_POST值的代码:

<?php
   if (isset($_POST['sql_update'])) {
       if (empty($_POST["admin_status"])){
         echo ("Ni obkljukano");
       }
   }
?>

更新 #2

的进一步更新
if (isset($_POST['sql_update'])) {
  // All unchecked, set all admin to 0
    if (empty($_POST['admin_status'])){
        $sql_admin_off = mysqli_query($conn, "UPDATE user SET admin = 0");
    }
    else{
        $sql_admin_on = mysqli_query($conn, "UPDATE user SET admin = 1 WHERE id IN (".implode(',', $_POST['admin_status']).") ");
        $sql_admin_off = mysqli_query($conn, "UPDATE user SET admin = 0 WHERE id NOT IN (".implode(',', $_POST['admin_status']).") ");
    }
}

【讨论】:

  • 你可能误解了我的问题,或者我只是不知道我在做什么:P。我编辑了我的帖子,现在可能会帮助你理解。
  • 您好,如果我误解了您的问题,请见谅。所以您的问题是回显checkbox 并使其与$_POST 一起使用?您应该用一种形式包装整个事物(列出所有用户)。每次列出用户时,您不必将表单放入 php 变量中,然后 echo 它。只需在使用更新按钮列出之前回显 &lt;form&gt; 标记,并在您的 while 循环之后立即回显关闭 &lt;/form&gt; 标记。您还应该使用 字段数组名称,例如 admin_status[] 用于复选框。
  • 你能举个例子吗?我正在努力理解,但就像我说的那样,我真的很新?我想尽可能多地学习,但没有帮助真的很难
  • 我还在复选框中添加了值,并将其设置为用户 ID。这样 $_POST(admin_status) 将返回一个带有复选框的 id 数组(管理员状态)。
  • 谢谢它的工作。但现在我有另一个问题。
猜你喜欢
  • 2020-09-07
  • 1970-01-01
  • 2019-05-29
  • 2020-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-04
  • 2016-04-29
相关资源
最近更新 更多