Как вы используете несколько выпадающих и знаете, какой статус у каждого? - PullRequest
0 голосов
/ 31 октября 2010

в приведенном ниже коде показана таблица с пользователями, которых нужно принять или отклонить. код в конце имеет выпадающий список, позволяющий либо принять его, либо отклонить, либо оставить как есть. внизу есть кнопка для отправки формы, после чего должен быть php-скрипт, который решает, какой пользователь принят, отклонен или все еще ожидает рассмотрения.

Каков наилучший подход, чтобы сделать эту работу, так как мне трудно связать выпадающий список и идентификатор.

<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 ]

1 голос
/ 31 октября 2010

Ваш код сбивает с толку. Ваш цикл 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
} 
1 голос
/ 31 октября 2010

Я думаю, вам будет лучше с массивами 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массив, чтобы найти, какой идентификатор имел какое действие.Каждая запись будет представлена ​​в виде массива, ключом будет идентификатор пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...