PHP не может добавить в бд форму на странице с идентификатором в URL и вернуться на страницу с идентификатором в url

#php #sql #url #sql-insert

Вопрос:

Ситуация: У меня есть страница под названием ‘lid.php». Вы попадаете сюда с домашней страницы после нажатия на ссылку, и URL-адрес получает уникальный идентификатор, например — gt; ‘lid.php?lidnummer=4’. на этой странице показаны все данные участника в моей базе данных с идентификатором 4.

На этой странице есть 2 формы для добавления номера телефона или электронной почты указанному участнику. После отправки одной из форм он (должен) переходит на страницу под названием ‘create.php» какой запрос-это данные для базы данных, но это не работает. Кроме того, после того, как это не сработает, он должен вернуться на ту же страницу ‘lid.php?lidnummer=x’, но это также не работает.

Таблица базы данных состоит только из номера телефона (PK) и идентификатора участника (FK).

Я все еще учусь… поэтому, пожалуйста, ответьте с хорошим объяснением, что я делаю неправильно и как я должен решить эту проблему. (также..извините, если я сформулировал свой вопрос немного неудачно, потому что я не знал, как правильно спросить)

[ПРАВИТЬ] добавлен код, который показывает одного участника на экране

форма для получения контактных данных

 lt;form action="includes/create.php" method="POST"gt;lt;bgt;  lt;label for="telefoonnummer"gt;  Telefoonnummer:  lt;input type="text" name="telefoonnummer"gt;  lt;/labelgt;  lt;button type="submit" name='add_telnr'gt;Voeg telnr toelt;/buttongt;  lt;/formgt;lt;brgt;   lt;form action="includes/create.php" method="POST"gt;   lt;label for="email"gt;  Email:  lt;input type="text" name="email"gt;  lt;/labelgt;  lt;button type="submit" name='add_email'gt;Voeg email toelt;/buttongt;lt;/bgt;  lt;/formgt;lt;brgt; lt;/divgt;  

Код, который обрабатывает добавление номера телефона

 if(isset($_POST['add_telnr'])) {  $telnr = get_post($conn, 'telefoonnummer');  $lidnummer = $_GET['lidnummer'];   $stmt_telnr = $conn-gt;prepare("INSERT INTO telefoonnummers VALUES(?,?)");  $stmt_telnr-gt;bind_param('si', $telnr, $lidnummer);  $stmt_telnr-gt;execute();   if($stmt_telnr-gt;affected_rows != 1) {   echo 'lt;scriptgt; alert("Telefoonnummer niet toegevoegd. Waarschijnlijk bestaat deze al. Controleer de lijst en/of probeer het opnieuw.") lt;/scriptgt;';  echo 'lt;scriptgt; window.location.href = "../lid.php?lidnummer=' . $lidnummer . '" lt;/scriptgt;';   } else {  header("location: ../lid.php?lidnummer=' . $lidnummer . '");  }  $stmt_telnr-gt;close(); }  

Код, который показывает участника на экране

 if(isset($_GET['lidnummer'])) {   $lidnummer = $_GET['lidnummer'];    $select_lid_query = "SELECT * FROM leden   JOIN postcodes  WHERE lidnummer='$lidnummer'";   $select_lid_result = $conn-gt;query($select_lid_query);  if(!$select_lid_query) die ("lt;span style='color:red'gt;" . "Kon geen gegevens van de database ophalen.   Klik a.u.b. op het pijltje terug in de browser en probeert u het opnieuw" . "lt;/spangt;");   $gegevens_lid = $select_lid_result-gt;fetch_array(MYSQLI_ASSOC);   foreach($gegevens_lid as $data =gt; $info) {  if($data == 'lidnummer' || $data == 'adres' || $data == 'woonplaats') {  echo 'lt;trgt;';  echo 'lt;tdgt;lt;bgt;' . ucfirst(htmlspecialchars($data)) . 'lt;/bgt;lt;/tdgt;';  echo 'lt;tdgt;' . htmlspecialchars($info) . 'lt;/tdgt;';  echo 'lt;tdgt; ---- lt;/tdgt;';  echo 'lt;tdgt; ---- lt;/tdgt;';  echo 'lt;/trgt;';  } else {  echo 'lt;trgt;';  echo 'lt;tdgt;lt;bgt;' . ucfirst(htmlspecialchars($data)) . 'lt;/bgt;lt;/tdgt;';  echo 'lt;tdgt;' . htmlspecialchars($info) . 'lt;/tdgt;';  echo 'lt;tdgt; update lt;/tdgt;';  echo 'lt;tdgt; ---- lt;/tdgt;';  echo 'lt;/trgt;';  }  }   toon_contactgegevens('telefoonnummers', $gegevens_lid, $conn, 'telefoonnummer', 'lid_table');  toon_contactgegevens('emails', $gegevens_lid, $conn, 'email', 'lid_table');   $select_lid_result-gt;close();  $conn-gt;close(); }   

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

1. Когда вы отправляете сообщение из формы, которую вы не отправляете lidnummer в строке запроса, поэтому $lidnummer = $_GET['lidnummer']; оно не будет работать, $_GET будет пустым. Я лично поместил lidnummer бы это в скрытое поле в форме, чтобы оно также передавалось при отправке формы, но тогда оно будет в $_POST массиве

2. @RiggsFolly как мне извлечь «lidnummer» из URL-адреса, как только я уже нахожусь на странице?

Ответ №1:

Вам нужно перейти lidnummer ко всем сценариям. В create.php вы звоните $_GET['lidnummer'] , но он недоступен, потому что вы не передали его в этот сценарий.

В вашей форме вам нужно что-то подобное прямо перед кнопкой:

 lt;input type=hidden name=lidnummer value="lt;?php echo $lidnummer ?gt;"gt;