【问题标题】:How to get <option value> as an array out of database?如何从数据库中获取 <option value> 作为数组?
【发布时间】:2016-05-02 12:34:38
【问题描述】:

我只是尝试获得自己的用户管理工具,所以首先我只想通过使用表格来显示所有用户。然后我想允许使用&lt;select&gt; 标签来改变用户的角色。我的问题是我想预先选择每个用户的当前角色,并且我希望有可能通过搜索数据库获取可能的角色数组来进行更改。但这怎么可能?在这里你可以看到我的代码:

<?php

header('Content-Type: text/html; charset=UTF-8');
include("db.php"); //just the database connection
session_start();
?>

<html>
    <head>
        <title></title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    </head>
    <body>
</html>
<?php
    $abfrage= mysql_query("SELECT * FROM user ORDER BY Name desc");
    //$ergebnis = mysql_query($abfrage) or die( mysql_error() ); 
    echo "<table>";
    echo"<caption>Mitglieder<br></caption>";
    echo"<table border=\"1\" style=\"width:300px\">";
    echo "<th>Name</th>
          <th>Prename</th>
          <th>Role</th>";

    while($row = mysql_fetch_object($abfrage)) {

        echo "<tr>";
        echo "<td align=center>",$row->Name,"</td>";
        echo "<td align=center>",$row->Prename,"</td>";
        echo "<td align=center><select><option value=",$row->Role,">",$row->Role,"</option></select></td>";
        //Here is the Problem

        echo "</tr>";
    }
    echo "</table>";
?>

它正确显示了包含用户及其角色的表。 Bur 我需要选择其他角色。 我希望有人可以帮助我。

【问题讨论】:

  • 您只是将他们的角色作为一个选项输出,因为这是您唯一可以访问的角色。您需要有一组可选角色,并在显示其余角色时将selected="true" 分配给他们的实际角色。
  • 感谢您的快速答复。如何循环数组以获取每个角色?
  • 请不要使用 mysql_ 数据库扩展,它已被弃用(在 PHP7 中永远消失了)特别是如果您只是学习 PHP,请花精力学习 PDOmysqli_ 数据库扩展, and here is some help to decide which to use
  • 您将这些角色保存在数据库中的什么位置。我假设用户有一个角色,但如果你想从数据库中获取所有角色,它们需要存储在某个地方,然后单独选择给用户
  • 每个用户都有一个角色:作者、管理员、读者。我只想获得在

标签: php html mysql


【解决方案1】:

编辑 - 添加 SQL 查询:

$available_roles = [];
$available_roles_query = mysql_query("SELECT * FROM roles");

while($role = mysql_fetch_object($available_roles_query)){

    $available_roles[] = $role->Name;
}

原帖:

while($row = mysql_fetch_object($abfrage)): ?>
   <tr>
       <td align="center"><?php echo $row->Name; ?></td>
       <td align="center"><?php echo $row->Prename; ?></td>
       <td align="center">
           <select>
               <option value="none">Please Select:</option>
               <?php foreach($available_roles as $role): ?>
                   <?php if($row->Role == $role): ?>
                      <option value="<?php echo $role; ?>" selected="true"><?php echo $role; ?></option>
                   <?php else: ?>
                       <option value="<?php echo $role; ?>"><?php echo $role; ?></option>
                   <?php endif; ?>
               <?php endforeach; ?>
           </select>
    </tr>
<?php endwhile;

有什么不明白的,请告诉我。我太累了,无法为您可能遇到的最可能的问题写出解释。

附:这将不允许您更新值。您需要自己添加该功能,当您这样做时,我建议为每个角色使用与其名称不同的键。

【讨论】:

  • 您可以改用&lt;?= "Hi" ?&gt; 来回显内容,这样可以避免您在类似&lt;?php echo "Hi"; ?&gt; 的语句中查找丢失的分号,但似乎没有很多人知道它,所以我'将保持理智并仅发表评论而不是实际上使用它。
  • 他想从数据库中获取角色?不是硬编码数组!
  • @RiggsFolly 从他最初的问题可以看出,他知道如何查询数据库。我为什么要告诉他一些他知道的事情?是你投了反对票吗?
  • 他很明显不知道自己在做什么,给他一个他已经说过不想要的解决方案,浪费磁盘空间,见Thank you, but is it possible to get the Array dynamically from the database?
  • @RiggsFolly 我已经编辑以包含 SQL 查询。请删除您的反对票。
【解决方案2】:

1.你需要将所有角色作为数组获取

$roles = ['admin', 'user', .....]; // or you can get roles from database

2.循环角色

$options = "<option value=".$row->Role.">".$row->Role."</option>";
foreach( $roles as $role ){
    $options .= "<option value={$role}>{$role}</option>";
}
echo "<td align=center><select>{$options}</select></td>";

【讨论】:

  • 谢谢,但是可以从数据库中动态获取数组吗?因为我希望管理员动态命名角色,将它们存储到数据库中并在 标记中取出它们
  • $re= mysql_query("select role_name from role_table where 1");
  • $roles = [];while( $data = mysql_fetch_assoc($re) ){$roles[]=$data['role_name'];}
猜你喜欢
  • 2019-09-16
  • 2020-04-13
  • 2022-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-18
  • 1970-01-01
相关资源
最近更新 更多