У меня есть один PHP-файл, который содержит 2 переменные … что я хочу добиться, это сначала получить имя пользователя и сохранить его в переменной $ name, а затем показать форму для запроса пользователя его фамилия, ТО .. выведите обе переменные, дело в том, что когда отправляется вторая форма, первая переменная исчезает, есть ли способ сохранить ее в памяти?
<?php
$title = rand(100, 300);
?>
<!doctype html>
<html>
<head>
<?php
//functions to call
function nameform() {
?>
<center><form action="<?php
echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" autofocus name="name"><br>
<input type="submit" value="name">
<input type="hidden" name="val1">
</form></center>
<?php
}
function lastname() {
?>
<center><form action="<?php
echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" autofocus name="lastname"><br>
<input type="submit" value="lastname">
<input type="hidden" name="val2">
</form></center>
<?php
}
?>
<meta charset="utf-8">
<title><?php
echo ("$title"); ?></title>
</head>
<body>
<?php
if(!isset($_POST['name'])){
nameform();
}
if (isset($_POST['name'])) {
$name = $_POST['name'];
lastname();
}
if (isset($_POST['lastname'])) {
$lastname = $_POST['lastname'];
echo "Your name is $name and your last name is $lastname";
}
?>
</form>
</body>
</html>
Как насчет ожидания, пока форма не заполнится, чтобы отправить его? Я бы использовал небольшой JavaScript, чтобы позаботиться об этом.
<?php
$title = rand(100, 300);
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title><?php
echo ("$title"); ?></title>
</head>
<body>
<center>
<?php
if (isset($_POST)) {
$name = $_POST['name'];
$lastname = $_POST['lastname'];
echo "Your name is $name and your last name is $lastname";
} else {
?>
<form action="<?php
echo $_SERVER['PHP_SELF']; ?>" method="post">
<div id="firstname">
<input type="text" autofocus name="name"><br>
<a href="javascript:;"onclick="document.getElementById('firstname').style.visibility='hidden';document.getElementById('lastname').style.visibility='visible';">Next</a>
</div>
<div id="lastname" style="display:none;">
<input type="text" name="lastname"><br>
<input type="submit" value="lastname">
</div>
</form>
<?php } ?>
</center>
</body>
</html>
Просто установите правильную информацию в вашем типе ввода скрыто, когда ваша вторая форма отправляется, вы можете получить значение имени в $_POST['val2']
,
Смотрите пример:
<?php
$title = rand(100, 300);
?>
<!doctype html>
<html>
<head>
<?php
//functions to call
function nameform() {
?>
<center><form action="<?php
echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" autofocus name="name"><br>
<input type="submit" value="name">
<input type="hidden" name="val1">
</form></center>
<?php
}
function lastname() {
?>
<center><form action="<?php
echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" autofocus name="lastname"><br>
<input type="submit" value="lastname">
<input type="hidden" name="val2" value="<?php echo $_POST['name']; ?>">
</form></center>
<?php
}
?>
<meta charset="utf-8">
<title><?php
echo ("$title"); ?></title>
</head>
<body>
<?php
if(!isset($_POST['name'])){
nameform();
}
if (isset($_POST['name'])) {
$name = $_POST['name'];
lastname();
}
if (isset($_POST['lastname'])) {
$lastname = $_POST['lastname'];
/*
Here you can get the name that come from the input type hidden named "val2"*/
$name = $_POST['val2'];
echo "Your name is $name and your last name is $lastname";
}
?>
</form>
</body>
</html>
Или как sjagr говорит, что вы можете использовать SESSIONS
взгляните на этот пример:
Как сохранить мои входные значения каждый раз, когда я обновляю свою страницу?