【问题标题】:how to get checkbox checked with MySQL data?如何使用 MySQL 数据检查复选框?
【发布时间】:2021-08-31 16:30:25
【问题描述】:

我什至不知道如何写这个问题,但我有一个复选框列表,我可以使用 php 将它们的数据作为 json 插入到我的数据库中。我现在想要的是当我打开页面而不刷新时,抓住需要检查的 json 和复选框并将其他的留空。

我知道 ajax 可以解决这个问题,但我没有任何 ajax 技能

我的 HTML

      <div style='display:none;' id="priv">                                                
       <li><input name="chk[]" id="settings" value="settings" type="checkbox">Can Access Settings</input></li>
       <li><input name="chk[]" id="view_team" value="view_team" type="checkbox">Can View Team Data</input> </li>
       <li><input name="chk[]" id="delete_team" value="delete_team" type="checkbox">Can Delete Team Profile</input></li>
       <li><input name="chk[]" id="edit_team" value="edit_team" type="checkbox">Can Edit Team Profile</input> </li> 

在这些复选框之前是一个选择菜单,其中包含一些项目,所以每当我选择一个项目时,它应该向我的数据库发送一个请求,获取选中的值并相应地填写这些复选框

<select onchange="showDiv('priv', this)" id="role_selector" name="roles">
<option value='0' disabled selected >Please Choose</option><                             
 <option value='0' disabled selected >Admin</option>                                     
 <option value='0' disabled selected >Editor</option>

我有一个 javascript 函数来显示和隐藏包含复选框的 div

function showDiv(divId, element){
    document.getElementById(divId).style.display = element.value == 1 ? 'block' :'none';
}

我的 PHP 代码

if (isset($_POST['chk'])) {
    $access=$_POST['chk'];
}
$json=json_encode($access);
$sql= "UPDATE `roles` SET privilege='$json' WHERE `id`=$role_id ;";

【问题讨论】:

  • 分享你的完整代码,我可以重写代码
  • 良好的代码缩进将帮助我们阅读代码,更重要的是,它将帮助您调试代码Take a quick look at a coding standard 为您自己的利益。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。
  • @karzanNawzad 特别是服务器端代码。
  • 您的脚本对SQL Injection Attack 开放。即使是if you are escaping inputs, its not safe!,您也应该始终在MYSQLI_PDO API 中使用prepared parameterized statements,而不是将用户提供的值连接到查询中。永远不要相信任何用户输入!
  • 学习错误的方法然后正确的方法要么是浪费时间和精力,要么你很可能永远不会学习正确的方法

标签: javascript php html ajax


【解决方案1】:

这是一个示例解决方案

<?php
// This is an example to edit by Ajmal Praveen

/*
If database role value are following, you can use as below. which is the simple and right solution for you.
Admin = 1
Editor = 2
*/

$role = $row['role'];

?>
<option value="" disabled selected required>Please Choose</option>
<option value='0' <?php if ($role = '1') { echo 'selected'; } ?> >Admin</option>                                     
<option value='1' <?php if ($role = '2') { echo 'selected'; } ?> >Editor</option>

希望你现在明白了,你可以随意修改和开发它。

【讨论】:

  • 我没有投反对票,其他人投了票。但你错过了理解这个问题。我们选择了 2 个角色,当您点击 admin 时,它会显示所有复选框,表明管理员拥有的权限
  • 我们误解了,因为您没有很好地解释自己,您基本上是在要求我们设计,或者根据规范设计和编写代码。这不是 StackOverflow 的用途,我们互相帮助解决我们遇到的与代码相关的问题,我们不会为您编写代码
  • 我发誓我正在尽我所能,但英语不是我的第一语言,所以编程和学习对我来说是一个挑战
  • @karzan Nawzad 所以您需要提供代码,而不是共享它,我们如何为您提供帮助?思考。我明白你在说什么。您需要为用户创建一个唯一列,将其标记为管理员或用户,例如:1 = 管理员和 0 = 用户。我们检查他是否可以编辑或任何其他权限。或者如果你想做得更复杂,那么你需要创建更多的表,比如在单独的表中写入、读取、权限。希望你明白我在说什么。我与很多用户、管理仪表板一起工作。那是我在建议你的方式。
  • @AjmalPraveen 我会试一试,谢谢
【解决方案2】:

你的问题我能理解的是..

  1. 您正在请求一个 php 文件以提供 2 个用户 {select} 的权限详细信息。
  2. 在请求后,您应该根据用户来检查复选框。

我无法理解的内容

  1. UPDATE roles SET privilege='$json' WHERE id=$role_id这个查询在做什么,你是不是要改变权限..?

不管怎样,我会做这样的事情......

工作示例here

HTML

<select onchange="showpriv(this)" id="role_selector" name="roles">
<option value='0' disabled selected >Please Choose</option><                             
 <option value='1' disabled selected >Admin</option>                                     
 <option value='2' disabled selected >Editor</option>
</select>

<div style='display:none;' id="priv">                                                
               <li><input name="chk[]" id="settings" value="settings" type="checkbox">Can Access Settings</input></li>
               <li><input name="chk[]" id="view_team" value="view_team" type="checkbox">Can View Team Data</input> </li>
               <li><input name="chk[]" id="delete_team" value="delete_team" type="checkbox">Can Delete Team Profile</input></li>
               <li><input name="chk[]" id="edit_team" value="edit_team" type="checkbox">Can Edit Team Profile</input> </li>
        </div>
<!-- I am gonna load the scripts here to check and uncheck boxes accordingly -->
<div class="privscripts"></div>

脚本/JQuery {for ajax 请求}

function showpriv(elem){
   $.post("privileges.php",
       { role : elem.value, type : "privilege" },
       function(data, status){
          if(status == "success"){ 
              console.log(data);
              document.getElementById('priv').style.display='';
              $('.privscripts').html(data);
            }
          else console.log("something went wrong");
       }
);
}

PHP 代码

<?php
 if(isset($_POST['type'])){
    if($_POST['type']== "privilege"){//Just to ensure everything goes right...!
       if($_POST['role'] == 1){//If admin
          //Echo out script to check/uncheck boxes
          echo "<script> 
          document.getElementById('settings').checked = true;
          document.getElementById('view_team').checked = true;
          document.getElementById('delete_team').checked = true;
          document.getElementById('edit_team').checked = true;
          </script>";
        }
        else if($_POST['role'] == 2){//If editor
          //Echo out script to check/uncheck boxes
          echo "<script> 
          document.getElementById('settings').checked = false;
          document.getElementById('view_team').checked = true;
          document.getElementById('delete_team').checked = false;
          document.getElementById('edit_team').checked = true;
          </script>";    
        }
     }
  }
?>

您可以与 DB 交互并随心所欲地做自己的事情,我已经举了一个例子。 你可以 ECHO 出 html/json/some error/debug code,然后在 AJAX 函数中做相应的事情,explore 并学习。

如有任何疑问,请随时发表评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2014-12-12
    • 2020-06-07
    相关资源
    最近更新 更多