2016-11-09 8 views
0

Я хочу иметь выпадающий выбранный вариант, выбранный после отправки/обновления страницы. Я ищу другие примеры, но никто не работает над моим кодом.Как сохранить выпадающий выбранный параметр после отправки/обновления страницы

Как сохранить выбранное значение после отправки/обновления с помощью этого кода?

<form name="test" action="test.php?id=<?php echo $row["id"]; ?>" method="post"> 
    <select id="test_email" name="test_email">  
     <option value="">...select</option> 
     <?php 
      $sql2 = "SELECT test_id, test_email FROM test WHERE status='Act'"; 
      $res = $db->query($sql2); 

      if ($res->num_rows > 0) { 
       while($row1 = mysqli_fetch_array($res)) { 
     ?> 
     <option value="<?php echo $row1['test_email'];?>-<?php echo $row1['test_id'];?>"><?php echo $row1['test_id'];?></option> 
     <?php 
       } 
      } 
     ?> 
    </select> 

решаемые таким образом:

  • Потому что я не мог пройти мимо $_POST['test_email'] с <?php echo $row1['test_email'];?>-<?php echo $row1['test_id'];?>
  • Поскольку я использую explode на $_POST['test_email']
  • я сделать еще один пост (вставка в дб) $test_temp = trim(mysqli_real_escape_string($db, $_POST['test_email'])); чтобы иметь значение dropdown (целая строка) в db.
  • Я добавил скрытый ввод в мою форму <input id="test_temp" type="hidden" name="test_temp" value="<?php echo $row["test_temp"]; ?>">
  • И изменил строку выбора опции на <option value="<?php echo $row1['test_email'] . '-' . $row1['test_id']; ?>"<?php if($row1['test_email'] . '-' . $row1['test_id'] == $row['test_temp']) echo ' selected="selected"' ; ?>><?php echo $row1['test_id'];?></option>.

Возможно, это может быть проще, но это работает как шарм.

@ roberto06: Благодарим вас за руководство.

+0

почему вы не используете выбранный = «выбрано» в варианте? – Rohit

+0

Спасибо. Я использую его, и, наконец, он работает. :) – Falcon

ответ

0

Вам необходимо добавить атрибут selected="selected" по опции, соответствующей вашему значению $_POST.

Возможно, вы также захотите объединить <?php echo $row1['test_email'];?>-<?php echo $row1['test_id'];?> в <?php echo $row1['test_email'] . '-' . $row1['test_id']; ?>, но это зависит от вас.

Вот решение (я предположил, что $POST['test_email'] должен быть равен $row1['test_email'] . '-' . $row1['test_id'] для соответствия условия). Я использую shorthand if...else здесь, но вы также можете использовать классический if:

<form name="test" action="test.php?id=<?php echo $row["id"]; ?>" method="post"> 
    <select id="test_email" name="test_email">  
     <option value="">...select</option> 
       <?php 
        $sql2 = "SELECT test_id, test_email FROM test WHERE status='Act'"; 
        $res = $db->query($sql2); 
        if ($res->num_rows > 0) { 
        while($row1 = mysqli_fetch_array($res)) { 
        ?> 
     <option value="<?php echo $row1['test_email'] . '-' . $row1['test_id']; ?>"<?php echo (isset($_POST['test_email']) && $row1['test_email'] . '-' . $row1['test_id'] == $_POST['test_email']) ? ' selected="selected"' : ''; ?>><?php echo $row1['test_id'];?></option> 
        <?php 
         } 
         } 
        ?> 
    </select> 
</form> 
+0

Теперь, с вашим предложением у меня есть «Примечание: неопределенный индекс: test_email в C: \ xampp ...». Мне нужен «isset» POST и где PLS? Или проблема в том, что я использую explode на test_email на test.php? Спасибо в любом случае roberto06 – Falcon

+0

Спасибо, я решил проблему. Вы мне очень помогаете. – Falcon