Пустой $_ GET после успешной передачи параметра с использованием URL

#php #get

#php #получить

Вопрос:

Я передаю параметр request_id из request.php чтобы offer.php используя URL-адрес, но в то время как значение request_ id отображается в URL-адресе offer.php , $GET[‘request_id’] остается неопределенным.

Код в request.php генерация URL-адреса:

 if (!isset($_GET['category_id'])) {
    $query = "SELECT * FROM requests WHERE category_id='$category' ";
}
else {
    $query = "SELECT * FROM requests WHERE category_id = '" . 
     $_GET['category_id'] . "'";
}
$data = mysqli_query($dbc, $query);
if (mysqli_num_rows($data)>0){
   echo '<table>';  
   while ($row = mysqli_fetch_array($data)) {
      echo '<tr><td><a href="offer.php?request_id=' . $row['request_id'] . 
       '">Make Offer</a></td></tr>';
  

Код в offer.php где $_GET[‘request_id’] не определено:

 <?php
 $request_id = $_GET['request_id'];
 $asking_price = mysqli_real_escape_string($dbc, trim($_POST['asking_price']));
?>
 <form enctype="multipart/form-data" method="post" action="<?php echo 
  $_SERVER['PHP_SELF']; ?>">
 <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo MM_MAXFILESIZE; 
  ?>" />
   <fieldset>
     <legend>Make an Offer</legend>
     <label for="ask_price">Asking Price:</label>
     <input type="text"  name="asking_price" /><br />
     <label for="comment">Comments</label>
     <textarea name="comment" /></textarea><br />
     <input type="hidden" name="old_picture" value="<?php if 
      (!empty($old_picture)) echo $old_picture; ?>" />
     <label for="itempicture">Picture of Item</label>
     <input type="file"  name="new_picture" />
   </fieldset>
     <input type="submit" value="Make Offer" name="submit" />
     <?php echo '<input type="hidden" name="request_id" value="' . 
      $request_id . '" />';?>    
 </form>
  

URL-адрес offer.php :
http://localhost/offer.php?request_id=12

Я хочу иметь возможность извлекать значение request_id в offer.php URL-АДРЕС

Комментарии:

1. Является ли опечатка в вашем вопросе здесь тем, что ваш $request_id = $_GET['request_id']; не завернут в теги php?

2. он завернут в теги php в ошибочном коде, просто не скопировал теги, извините.

3. Не могли бы вы отредактировать свой вопрос, чтобы код соответствовал вашему фактическому коду? Упрощает помощь вам.

4. теперь он идентичен. Если вам не нужен весь код?

Ответ №1:

Я бы ожидал offer.php чтобы быть $_GET[request_id] заполненным при переходе по ссылке request.php в. (Я бы также ожидал, что в $asking_price = строке не определено, потому что нет $_POST['asking_price'] .

Я бы ожидал offer.php чтобы выдать «Неопределенный $_GET[‘request_id’]» при достижении кнопки отправки в offer.php .

Запрос от offer.php действие отправки будет представлять собой запрос post на offer.php на основе атрибутов формы.

Если вы хотите отправить request_id в строке запроса с помощью кнопки отправки в offer.php , вы могли бы создать атрибут действия следующим образом:
action="<?php echo $_SERVER['PHP_SELF']."?request_id=".$_GET['request_id']; ?>"> так что строка запроса отправляется с запросом post.

Вы можете рассмотреть возможность добавления if ($_SERVER['REQUEST_METHOD'] == 'GET') {} else {} блока, чтобы переменные могли быть установлены соответствующим образом, на основе метода запроса.

Комментарии:

1. Да, но идентификатор запроса в URL должен быть сохранен в переменной $request_id и отправлен на сервер вместе с остальными данными с помощью $_POST

2. На данный момент $ _GET, похоже, не собирает данные с URL-адреса

3. Зависит ли это от того, нажата ли ссылка в <td> или кнопка отправки?

4. Это должно зависеть от ссылки в <td> . Но эта часть, похоже, выполняет свою работу, потому что при нажатии на URL offer.php выглядит так: «localhost/offer.php?request_id=12». Значение request_id изменяется в зависимости от того, какая ссылка нажата.

5. Отправляет ли действие формы строку запроса? Ответ редактировать FWIW.