你如何使用多个下拉菜单并了解每个下拉菜单的状态?

时间:2010-10-31 15:03:12

标签: php mysql forms

以下代码显示了一个表,其中包含要接受或拒绝的用户。代码本身有一个下拉列表,允许接受它,拒绝它或保持原样。底部有一个按钮用于提交表单,之后应该有一个php脚本来决定哪个用户被接受,被拒绝或者仍在等待。

这是最好的方法,因为我发现很难链接下拉框和ID。

<table align='center' width='90%'>
                        <tr>
                            <center><td><strong>ID:</strong></td></center>
                            <center><td><strong>Name:</strong></td></center>
                            <center><td><strong>Level:</strong></td></center>
                            <center><td><strong>Job:</strong></td></center>
                            <center><td><strong>Guild:</strong></td></center>
                            <center><td><strong>Date:</strong></td></center>
                            <center><td><strong>Action:</strong></td></center>
                        </tr>
                        <?php
                        $id = 0;
                        $result=mysql_query("SELECT * FROM accounts WHERE active ='0' ORDER BY date LIMIT 10") or die(mysql_error());
                        while($row = mysql_fetch_array( $result )) {
                        $id = $id + 1;
                        ?>
                        <form method='POST' action=''>
                        <tr>
                            <center><td><?php echo $row['id']; ?></td></center>
                            <center><td><?php echo $row['user']; ?></td></center>
                            <center><td><?php echo $row['level']; ?></td></center>
                            <center><td><?php echo $row['job']; ?></td></center>
                            <center><td><?php echo $row['guild']; ?></td></center>
                            <center><td><?php echo $row['date']; ?></td></center>
                            <td>
                                <select name='action_<?php echo $row['id']; ?>'>
                                    <option value='none'>None</option>
                                    <option value='accept'>Accept</option>
                                    <option value='decline'>Decline</option>
                                </select>
                            </td>
                        </tr>
                        <?php } ?>
                        <tr>
                            <br /><td align='right'><input type='submit' value='Submit' name='submit' /></td>
                        </tr>
                        </form>

                    </table>
<?php 
            if(isset($_POST['submit'])) {
                if(isset($_POST['action_'.$row['id'].'']) && $_POST['action_'.$row['id'].''] == "accept" ) {
                    $acc = mysql_query("UPDATE `accounts` SET `active`='1' WHERE `id` = '".$row['id']."'");
                    echo "<meta http-equiv=refresh content=\"5; url=?wesofly=main&page=recruitment\">";
                }elseif(isset($_POST['action_'.$row['id'].'']) && $_POST['action_'.$row['id'].''] == "decline" ) {
                    $dec = mysql_query("DELETE * from `accounts` WHERE '".$row['id']."'");
                    echo "<meta http-equiv=refresh content=\"0; url=?wesofly=main&page=recruitment\">";
                }
            }
?>

2 个答案:

答案 0 :(得分:1)

我认为你最好使用HTML表单数组,例如:

<select name="action[<?php echo $row['id']; ?>]">
    <option value="none">None</option>
    <option value="accept">Accept</option>
    <option value="decline">Decline</option>
</select>

在你的php代码中,你只需遍历action数组中提交的$_POST字段,找到哪个id有哪个动作。每个条目都将显示为一个数组,密钥将是用户的ID。

答案 1 :(得分:1)

您的代码令人困惑。 WHILE循环在表单标记之前开始,但WHILE循环在表单标记关闭之前关闭。这意味着您将拥有多个表单元素。

首先,在代码中更改它。接下来你希望它的工作方式是使用数组。

您的下拉框应如下所示

<select name='action[<?php echo $row['id']; ?>]'>
  <option value='none'>None</option>
  <option value='accept'>Accept</option>
  <option value='decline'>Decline</option>
</select>

然后在PHP方面,您应该可以执行类似

的操作
foreach ($_REQUEST['action'] as $key => $value) {
   $id = $key;
   $status = $value;
   // put your code here to update the specific database item
} 
相关问题