如何用php和mySQL创建一个动态选择框

时间:2012-11-28 14:40:48

标签: php mysql drop-down-menu

我有一张表打印出我桌子上的所有用户。每个用户旁边是一个选择框和一个更新按钮。我遇到的问题是脚本只从最后一个选择框中读取。如何使选择框动态化,以便脚本知道选择框来自哪一行?

选择框的代码:

<select name="level" >
<option value="basic" SELECTED>Basic</option>
<option value="premium">Premium</option>
<option value="platinum">Platinum</option>
</select>

<button type="submit" name="update" value="<?php echo $row['id'] ?>">Update</button>

按下提交按钮时生效的另一个脚本中的代码:

if ( isset( $_POST['update'] ) ) {
 //Get the ID of the account that will be updated
 $userID = $_POST['update'];
 //Get the level that the admin wishes to change to
 $level= $_POST['level'];

//Connect to the DB
mysql_connect("localhost", "xxxx", "xxxx")or die("Cannot connect to database");
mysql_select_db("xxxx")or die("Database cannot be selected or it doesnt exist");

//Updates the users access level
mysql_query("UPDATE users SET level='$level' WHERE id='$userID' ");

3 个答案:

答案 0 :(得分:0)

只需查看html,就会覆盖您的选择框值,因为它们都具有相同的名称。

最简单的解决方案是转换数组中选择框的名称:

<select name="level[<?php echo $row['id']; ?>]" >

不,您可以在服务器端访问它们:

$_POST['level'][$userID]

您还需要切换到PDO / mysqli和带有绑定变量的预处理语句,以避免出现sql注入问题。

答案 1 :(得分:0)

你可以使用jquery。试试这个,

 $(document).ready(function(){
  var values = [];
  $('select[name=level]').each(function() {
    values[] = $(this).val(); 
  });

  $('button[name=update]').val(values);

 });

它只读取最后一行的原因是$row['id']只包含迭代结果集的最后一行。

答案 2 :(得分:0)

使用此:

<input type="hidden" name="userid[]" value="#THEUSERID"/>
<select name="level[]" >
<option value="basic" SELECTED>Basic</option>
<option value="premium">Premium</option>
<option value="platinum">Platinum</option>
</select>

if ( isset( $_POST['update'] ) ) {
    foreach($_POST['userid'] as $k=>$userID){

 //Get the level that the admin wishes to change to
        $level= $_POST['level'][$k];

//Connect to the DB
        mysql_connect("localhost", "xxxx", "xxxx")or die("Cannot connect to database");
        mysql_select_db("xxxx")or die("Database cannot be selected or it doesnt exist");

//Updates the users access level
        mysql_query("UPDATE users SET level='$level' WHERE id='$userID' ");
    }
}