我的PHP函数中有一个简单的HTML表单,您可以在此处看到:
<?php
function myFunction()
{
echo "
<form method='post'>
<fieldset>
<legend>Something</legend>
<input type='text'>
<input type='submit' value='send' name='postform'>
</fieldset>
</form>
";
if (isset($_POST['postform']))
{
echo "I'm working!";
}
}
?>
当我调用该函数时,我看到了表单,但是当我通过提交按钮提交它时,它就消失了。 我该如何解决这个问题?
这是完整的代码
<?php
echo "
<form method='post'>
<button name='first'>First step</button>
</form>
</div>
";
if (isset($_POST['first']))
{
myFunction();
}
?>
<?php
function myFunction()
{
echo "
<form method='post'>
<fieldset>
<legend>Something</legend>
<input type='text'>
<input type='submit' value='send' name='postform'>
</fieldset>
</form>
";
if (isset($_POST['postform']))
{
echo "I'm working!";
}
}
?>
答案 0 :(得分:3)
问题在于,'error'
超级全局会在新请求中被清除,就像您在浏览页面时一样,这很自然。
所以,如果一个人来到一个页面,比方说$_POST
,然后他提交一个帖子表单(或任何表单)$_POST = ['first' => '']
,结果['postform' => 'send']
就会{ {1}}。
因此,在您的情况下,最简单的解决方案是关注Shailesh's answer或使用$_POST
提交第一个表单,当然,您必须将['postform' => 'send']
更改为method='get'
。
但更好的解决方案是在每个步骤中在请求中传递一些“步骤”参数,因此您将拥有$_POST['first']
。然后,根据步骤变量,做一些事情。
同时查看$_GET['first']
。
干杯!
答案 1 :(得分:2)
它消失了,因为你无法调用函数myFunction()本身。第二种形式不包括“第一”字段。
如果您希望它“按原样”工作,请将其包含在myFunction()代码中:
function myFunction()
{
echo "
<form method='post'>
<fieldset>
<legend>Something</legend>
<input type='text'>
<input type='hidden' value='send' name='first'>
<input type='submit' value='send' name='postform'>
</fieldset>
</form>
";
if (isset($_POST['postform']))
{
echo "I'm working!";
}
}
?>
唯一的变化是
<input type='hidden' value='send' name='first'>
使表单再次可见。无论如何,你应该重新考虑整个代码。
答案 2 :(得分:1)
if (isset($_POST['first']))
{
myFunction();
}
替换为:
if (isset($_POST['first']) || isset($_POST['postform']) )
{
myFunction();
}
答案 3 :(得分:1)
将 postform 表单处理移出 myFunction 函数定义,并从那里调用 myFunction 函数。这是完整的代码,
<html>
<head>
<title>Page Title</title>
</head>
<body>
<?php
echo "
<form method='post'>
<button name='first'>First step</button>
</form>
";
if (isset($_POST['first'])){
myFunction();
}
?>
<?php
function myFunction(){
echo "
<form method='post'>
<fieldset>
<legend>Something</legend>
<input type='text'>
<input type='submit' value='send' name='postform'>
</fieldset>
</form>
";
}
if (isset($_POST['postform'])){
myFunction();
echo "I'm working!";
}
?>
</body>
</html>
答案 4 :(得分:0)
写两个不同的文件。
<html>
<body>
<form method="post" action="submit.php">
<fieldset>
<legend>Something</legend>
<input type="text" name="input">
<input type='submit' value='send' name="postform">
</fieldset>
</form>
现在在submit.php中写下以下内容
<?php
$input=$_POST['input'];
if ($input!="")
{
echo "I'm working!";
}
?>
答案 5 :(得分:0)
<?php
if(isset($_POST['submit']))
{
$name = $_POST['name'];
echo "User Has submitted the form and entered this name : <b> $name </b>";
echo "<br>You can use the following form again to enter a new name.";
}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="name"><br>
<input type="submit" name="submit" value="Submit Form"><br>
</form>
答案 6 :(得分:0)
在此代码中更改此位置:
{{1}}