Итак, в этом приложении я работаю, он ищет некоторый код в моей базе данных, захватывает его, открывает новую страницу и помещает код (если необходимо) на новую страницу, получая свой идентификатор.PHP Как оставаться на одной странице после обработки другой формы?
Теперь в этом коде (из базы данных) есть другая форма, которая обрабатывается на основе ввода пользователя. Проблема, которую я получаю, заключается в том, что новая форма не обрабатывается на той же странице. Он перенаправляет на новый URL-адрес, который не указывает код из базы данных. Например ...
Когда новая страница генерируется с кодом из базы данных, URL-адрес выглядит следующим образом ...
localhost/newpage.php?id=1
Тогда, когда я отправить форму в коде из БД изменения в этом ...
localhost/newpage.php?input1=blah&input2=blah
Но я хочу что-то вроде этого ...
localhost/newpage.php?id=1&input1=blah&input2=blah
Просто FYI этот код должен быть динамическим. Например, допустим, я не знаю, какой идентификатор пользователя ищет и внутри этого идентификатора я не знаю, сколько полей ввода есть.
Если вы, ребята, нужны явный код (очевидно, я ушел из ненужных вещей) ...
Это searchpage.php, который ищет БД и отображает все соответствующие пункты. Затем пользователь выбирает элемент, который содержит идентификатор и генерирует newpage.php с этим идентификатором ...
//there is a search query then puts all elements in an associative array
$rows = items->fetch_all(MYSQL_ASSOC);
foreach ($rows as $row) {
$id = $row['id'];
echo "<a href='newpage.php?id=$id>User clicks to generate a newpage</a>";
}
Это форма извлекается из базы данных и помещена в newpage.php ...
<form action="newpage.php" method="GET">
<input name="input1"></input>
//there can be an x amount of input tags here depending on what id is pulled
</form>
Это PHP в верхней части newpage.php при его создании ...
if (isset($_GET['id'])) {
//retrieves data from specified id from database
if(isset($_GET['inputs'])) {
//do something with user inputs
}
}
есть ли способ для достижения этой цели? Вся помощь приветствуется! Спасибо :)
РЕШЕНИЕ
Для этого, чтобы работать, я должен был создать сеанс, который хранит идентификатор. Следовательно, мне пришлось изменить все мои переменные $ _GET (которые имели дело с идентификационной информацией) на переменные $ _SESSION. Но он работает до тех пор, пока вы не храните важную/чувствительную информацию!
Вот код меняется ...
Изменения в search.php ...
//there is a search query then puts all elements in an associative array
$rows = items->fetch_all(MYSQL_ASSOC);
foreach ($rows as $row) {
$id = $row['id'];
$_SESSION['current_id'] = $id;
echo "<a href='newpage.php?id=$id>User clicks to generate a newpage</a>";
}
Изменения в newpage.php ...
<form action="newpage.php?id=" method="POST">
<input name="input1"></input>
//there can be an x amount of input tags here depending on what id is pulled
</form>
Изменения в PHP из NEWPAGE .php ...
if (isset($_SESSION['current_id'])) {
//retrieves data from specified id from database
if(isset($_POST['inputs'])) {
//do something with user inputs
}
}
ВСЕ СПАСИБО ...
Sathik Хан
Проблема с использованием $ _SERVER ['QUERY_STRING'] заключается в том, что он изменяется, когда я отправляю новую форму. Это не константа. Или я неправильно рассматриваю ваше решение? Я помещаю строку запроса в действие новой формы, которая сгенерирована. –
Позвольте мне уточнить свой ответ с –
. Я забыл упомянуть, что это мой пост ... Форма должна обрабатываться снова, если есть какие-либо ошибки. Ваше предложение работает, но это только один раз после отправки формы. Поэтому, если я использую HTTP-референт, который будет работать только один раз, если я отправлю форму один раз. Если, опять же, я не сделаю что-то неправильно. Я думаю об использовании POST вместо этого, поэтому он не изменит URL. –