【问题标题】:Creating a Drop Down Menu in PHP from MySQL?从 MySQL 在 PHP 中创建下拉菜单?
【发布时间】:2012-07-20 09:31:22
【问题描述】:

我对 PHP 和 MySQL 有一定的经验,所以我能掌握一些事情的窍门,但是我正在尝试获得一些可能超出我水平的东西(不太确定这方面的难度级别)。基本上,我希望创建 2 个下拉菜单来删除 MySQL 表中用户的访问权限。所以第一个下拉菜单将用于我拥有的用户列表,第二个下拉菜单将用于他们拥有的访问权限。我希望当我选择一个用户时,第二个下拉菜单只显示用户可以访问的选项,例如;

    <form name="form" method="post" action="access.php">
    <select name='user'>
    <?php 
require "sqlconfig.php"; // My SQL Configuration
$conn=mysql_connect($host, $user, $pass); // The Connection
$selectdb=mysql_select_db("$db"); // The Database
    $userlist1 = mysql_query("SELECT `Username` FROM `accounts` ORDER BY Username ASC");
        while ($userlist = mysql_fetch_array($userlist1)) {
        print "<option value='username'>$userlist[Username]</option>";
        }
    ?>
    </select>
<select name='task'>
<option value="notask" <?php if($_GET['task'] == notask) { echo "selected"; } ?>>Select a Task</option>
<option value="admin" <?php if($_GET['task'] == admin) { echo "selected"; } ?>>Administrator</option>
<option value="user" <?php if($_GET['task'] == user) { echo "selected"; } ?>>user</option>
<option value="guest" <?php if($_GET['task'] == guest) { echo "selected"; } ?>>Guest</option>
</select>
<input type="submit" value="Remove" />
    </form>

我已经拥有一个表的权限,每个值都是整数 0 表示假,1 表示真。所以基本上当从第一个菜单中选择用户时,我希望第二个菜单刷新,并且只显示他们拥有的 = 到 1 的值(这意味着他们拥有它),当然,当提交表单时,它会将选择的任务从 1 更改为 0,这意味着它会自行删除。

基本上,当用户(例如;Joe)被选中时,第二个菜单将刷新 Joe 拥有的任务(例如;Admin、User)。一旦我选择了一个任务然后单击删除,脚本应该发布用户名菜单,并获取在提交之前选择的任何任务,然后运行脚本以将“管理员”之类的用户字段从 1(true) 更新为 0(false )

谁能帮我用代码设置它,或者至少给我指导我自己设置它?

【问题讨论】:

  • 欢迎来到 Stack Overflow!请不要将mysql_* 函数用于新代码。它们不再维护,社区已经开始deprecation process。看到red box?相反,您应该了解prepared statements 并使用PDOMySQLi。如果您不能决定,this article 将帮助您选择。如果你想学习,here is good PDO tutorial.
  • 您必须使用 Javascript 或 jQuery + Ajax 来实现您想要的。您必须使用 javacript 或 jquery 在第一个下拉菜单的 onchange 事件上触发一个函数。在该函数中连接到数据库,查询数据库,并将结果作为下拉元素返回。

标签: php mysql


【解决方案1】:

创建一个 div 并给它一个 id="result" 并在该 div 中放置一个空的选择标签。

然后使用 jQuery + Ajax,获取第二个下拉菜单:

$('select[name="user"]').change(function(){
   var user = $(this).val();

   $.ajax({
      type:'post',
      url:'getSecondDropDown.php',
      data:'user='+user,
      success:function(result){
         $('div#result').html(result);
      }
   });

});

在您的“getSecondDropDown.php”文件中,包含以下内容:

<select name="task">
<?php
$user = $_POST['user'];
$q = mysql_query("SELECT task FROM tablename WHERE user=".$user.") or die();
while($r = mysql_fetch_array($q))
{ ?>
  <option value="<?php echo $r['task]; ?>"><?php echo $r['task]; ?></option>

<?php
}
?>
</select>

【讨论】:

    【解决方案2】:

    您需要使用 JavaScript 来执行此操作。向服务器中的页面发送 AJAX 请求,该页面将为您获取用户的详细信息,然后将结果返回给 JavaScript。

    在 JavaScript 中获得数据后,使用 DOM 操作将结果填充到第二个 &lt;select&gt;

    【讨论】:

    • 我仍然需要知道使用哪种编码方式从我的表单中获取结果,然后根据用户和我选择的访问权限删除访问权限。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多