Добавить значение списка выбора к URL-адресу

У меня есть форма, которая представляет собой не что иное, как список выбора, в котором отображаются записи из базы данных и кнопка. Все, что я хочу сделать, это когда они выбирают вариант и нажимают «Отправить», они переходят на страницу, которая удаляет рассматриваемую запись. Чтобы удалить его, мне нужно, чтобы tech_id (из списка выбора) был добавлен к URL-адресу. Я сделал это так же, как с текстовым полем, но это не сработало. Какие-либо предложения?

<form method="post" id="form1" name="form1" action="delete-tech.php?tech_id=<?php echo $_POST['technician']; ?>">
  <p>Choose Technician to Delete:
    <select name="technician" id="technician" title="technician">
      <?php
do {  
?>
      <option value="<?php echo $row_getTechs['tech_id']?>"><?php echo $row_getTechs['tech_name']?></option>
      <?php
} while ($row_getTechs = mysqli_fetch_assoc($getTechs));
  $rows = mysqli_num_rows($getTechs);
  if($rows > 0) {
      mysqli_data_seek($getTechs, 0);
      $row_getTechs = mysqli_fetch_assoc($getTechs);
  }
?>
    </select>
  </p>
  <p>
    <input name="submit" type="submit" id="submit" value="Delete Technician">
  </p>
</form>

person SherwoodPro    schedule 29.10.2013    source источник
comment
Вам нужно method="GET" вместо method="post". Проверьте обновление.   -  person Rajesh Paul    schedule 30.10.2013


Ответы (1)


Ошибка заключается в конструкции кодирования.

Я немного изменил положение сегмента кода, следующего за оператором while, следующим образом (т.е. поместил его перед фразой do):

<form method="GET" id="form1" name="form1" action="delete-tech.php">
  <p>Choose Technician to Delete:
    <select name="technician" id="technician" title="technician">
    <?php
      $rows = mysqli_num_rows($getTechs);
      if($rows > 0) {
          mysqli_data_seek($getTechs, 0);
          $row_getTechs = mysqli_fetch_assoc($getTechs);
          do {  
    ?>
      <option value="<?php echo $row_getTechs['tech_id']?>"><?php echo $row_getTechs['tech_name']?></option>
    <?php
          }while ($row_getTechs = mysqli_fetch_assoc($getTechs));
      }
    ?>
    </select>
  </p>
  <p>
    <input name="submit" type="submit" id="submit" value="Delete Technician">
  </p>
</form>

Он должен добавить информацию (list-value) из form к URL-адресу по вашему желанию. Проверьте это.

Как вы говорите, это не работает, есть другой способ использования JavaScript:

<form method="post" id="form1" name="form1" action="delete-tech.php">
  <p>Choose Technician to Delete:
    <select name="technician" id="technician" title="technician">
    <?php
      $rows = mysqli_num_rows($getTechs);
      if($rows > 0) {
          mysqli_data_seek($getTechs, 0);
          $row_getTechs = mysqli_fetch_assoc($getTechs);
          do {  
    ?>
      <option value="<?php echo $row_getTechs['tech_id']?>"><?php echo $row_getTechs['tech_name']?></option>
    <?php
          }while ($row_getTechs = mysqli_fetch_assoc($getTechs));
      }
    ?>
    </select>
  </p>
  <p>
    <input name="submit" type="button" id="submit" value="Delete Technician" onclick="location.href='delete-tech.php?tech_id='+document.getElementById('technician').value">
  </p>
</form>
person Rajesh Paul    schedule 29.10.2013
comment
Итак, теперь, если у меня есть действие формы: action=delete-tech.php?tech_id=‹?php echo $_POST['technician'];?› Это будет работать? - person SherwoodPro; 29.10.2013
comment
Он по-прежнему не добавляет tech_id в конец URL-адреса. Какие-либо предложения? - person SherwoodPro; 29.10.2013
comment
Вам нужно указать просто delete-tech.php в качестве действия. URL-адрес будет автоматически отформатирован с входными данными формы. нет необходимости указывать URL-адрес в действии. - person Rajesh Paul; 29.10.2013
comment
Да. Однако это не сработает. URL заканчивался на delete-tech.php - person SherwoodPro; 30.10.2013
comment
@SherwoodPro Я добавил еще один способ сделать это. Он должен работать. - person Rajesh Paul; 30.10.2013
comment
Да, это сработало! Это какой-то удобный javascript! Я ценю вашу помощь, Раджеш Пол. Спасибо! Сейчас это кажется просто глупым. :) - person SherwoodPro; 30.10.2013
comment
Если вы действительно хотите, чтобы tech_id отображалось в URL-адресе, вам нужно использовать method='GET' вместо method='post'. Извините, я забыл это. В противном случае 1-й подход был правильным. попробуй это сейчас. Метод POST просто скрывает всю строку запроса из URL-адреса. - person Rajesh Paul; 30.10.2013
comment
Мне сказали, что использование GET менее безопасно, чем POST. Но я думаю, что это не имеет большого значения, когда вы все равно хотите значение в URL-адресе. - person SherwoodPro; 30.10.2013