Как перенести опцию SELECTED в PHP из MySQL? - PullRequest
2 голосов
/ 19 марта 2010

В моей форме обновления я хочу, чтобы поля вызывали уже сохраненные значения. Это очень просто в текстовом поле, но из-за моего выпадающего меню () у меня проблемы с чтением PHP уже сохраненного имени пользователя. Вот мой запрос и код:

$sql = "SELECT users.user_id, users.name FROM users";
                $result = mysql_query($sql, $connection)
                or die ("Couldn't perform query $sql <br />".mysql_error());
                $row = mysql_fetch_array($result);?>

        <label>Designated Person:</label> <select name="name" id="name">

        <option value="<?php echo $row['user_id']?>" SELECTED><?php echo $row['name']?> - Current</option>

         <?php    
              while($row = mysql_fetch_array($result))
        { ?>                        <option value="<?php echo $row['user_id']; if (isset($_POST['user_id']));?>"><?php echo $row['fullname']?></option>
        <?php } ?>

В результате этого отображаются все пользователи (при необходимости) и я могу выбрать пользователя, а затем успешно выполнить изменение ... однако «ВЫБРАН» всегда является первым в моей базе данных и никогда не был выбранным пользователем когда моя активность была добавлена ​​:( !!!

Ответы [ 3 ]

1 голос
/ 19 марта 2010

Что вы делаете сейчас:

  • Выбор самой первой строки результатов и ее печать в качестве опции с жестко заданным значением SELECTED;
  • Цикл по остальным параметрам вывода строки результатов; вы нигде не проверяете текущее выбранное значение, но у вас есть пустой if () без всякой цели;
  • Я не вижу нигде, где хранится сохраненное имя.

Попробуйте это (при условии, что $curname является текущим выбранным именем):

$sql = "SELECT users.user_id, users.name FROM users";
        $result = mysql_query($sql, $connection)
        or die ("Couldn't perform query $sql <br />".mysql_error());
?>

<label for="name">Designated Person:</label>
    <select name="name" id="name">

 <?php    
      while($row = mysql_fetch_array($result))
{ ?>                        
    <option value="<?php echo $row['user_id'] ?>" <?php if ($curname == $row['name']) echo ' SELECTED'; ?>><?php echo $row['fullname']?></option>
<?php } ?>
1 голос
/ 19 марта 2010

Хм ... я думаю, ваш код не завершен. Например, последняя опция получила оператор if, который ничего не делает ... и вам не следует помещать selected в две разные опции в одном и том же элементе select.

Первый вариант всегда выбран по умолчанию, если никто больше не используется, и .... для xhtml попробуйте использовать selected = "selected" вместо SELECTED

Также вы пытаетесь отобразить $ row ['fullname'], но ваш запрос извлекает столбец 'name'

<?php
$sql = "SELECT users.user_id, users.name FROM users";
$result = mysql_query($sql, $connection) or die ("Couldn't perform query $sql <br/>".mysql_error());
$row = mysql_fetch_array($result);
?>

<label>Designated Person:</label> 

<select name="name" id="name">
    <option value="<?php echo $row['user_id']?>"><?php echo $row['name'] ?> - Current</option>
<?php    
while($row = mysql_fetch_array($result)){ ?>
   <option 
      value="<?php echo $row['user_id'] ?>"
      <?php echo (isset($_POST['name']) && $_POST['name'] == $row['user_id']) ? ' selected="selected"' : '');?>
><?php echo $row['name']?></option>
<?php } ?>
0 голосов
/ 05 июня 2013
            <?php
                $result = mysql_query("select (row) from (table)");
                while($row = mysql_fetch_row($result))
                {
                    echo '<option value='.$row[0].'>'.$row[1].'</option>';
                }
            ?>
...