#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;