在我的PHP代码中,有一个内部有多个提交按钮的表单,第一个表单的变量在单击提交按钮后被分配值,第二个表单的值与$_POST[]类似。这里我想在第二个提交中使用第一个提交的值。
我的代码如下:
<?php
global $name;
//BLOCK1
if($_POST['formSubmit'] == "Register Yourself")
{
global $name;
$name = $_POST['name'];
echo $name;
};
// BLOCK 2
if($_POST['formSubmit1'] == "Register Yourself1")
{
global $name;
$id = $_POST['id'];
echo $id;
echo $name; // I want to print "$name" here
};
?>
<html>
<title>form</title>
<body>
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<b> <label for='name'>Name: </label> </b>
<input type="text" name="name" maxlength="50" value="<?=$name;?>" />
<input type="submit" name="formSubmit" value="Register Yourself" />
<br/><br/>
<b> <label for='id'> id: </label> </b>
<input type="text" name="id" maxlength="50" value="<?=$id;?>" />
<input type="submit" name="formSubmit1" value="Register Yourself1" />
</form>
</body>
</html>
我尝试使用给出的概念 here 。 在上面的程序中,我已将变量 $name 声明为内部和外部全局变量,以便在第二个程序中使用。
请尝试找出错误,以便我可以在第二个 block 内打印...
提前致谢
最佳答案
Pitchinnate 解释了正确答案,但如果您是 PHP 新手,您可能无法理解该注释。
您引用的链接询问如何在函数之间共享变量。上面示例中的代码没有使用函数;它使用“if”条件。
如果您的代码不起作用,则与您使用 $_POST 数组更相关。当用户提交表单时,单击哪个按钮并不重要; $_POST 数组将包含该表单中各种输入的所有数据。因此,您可能会通过以下方式获得更大的成功:
// let's set up the empty variables for clarity's sake
$name = '';
$id = '';
// now check if the $_POST array has stuff in it
if(!empty($_POST))
{
if (!empty($_POST['name'])) {
$name = $_POST['name'];
echo '<p>' . $name . '</p>';
}
if (!empty($_POST['name'])) {
$id = $_POST['id'];
echo '<p>' . $id . '</p>';
}
};
<form action="" method="post">
<b> <label for='name'>Name: </label> </b>
<input type="text" name="name" maxlength="50" value="<?=$name;?>" />
<br/><br/>
<b><label for='id'> id: </label> </b>
<input type="text" name="id" maxlength="50" value="<?=$id;?>" />
<br /><br />
<input type="submit" name="formSubmit" value="Register Yourself" />
</form>
您实际上只需要一个提交按钮。当用户单击该按钮时,表单将提交到服务器,服务器会将输入字段中的值放入 $_POST 数组中。
此外,如果希望表单提交给自身,您所要做的就是指定action="",服务器将假定您正在重新提交到当前页面。
关于php - 如何在php中同一表单内的另一个提交按钮使用一个提交按钮的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16594049/