2

在我的 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>

我尝试使用这里给出的概念。在上面的程序中,我已将变量$name声明为内部和外部的全局变量,以便在第二个程序中使用。

请尝试查找错误,以便我可以在第二个块内打印...

提前致谢

4

2 回答 2

2

Pitchinnate 解释了正确的答案,但如果您是 PHP 新手,您可能无法理解该评论。

您引用的链接询问如何在函数之间共享变量。上面示例中的代码没有使用函数;它使用“如果”条件。

如果您的代码不起作用,则与您使用 $_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=""并且服务器将假定您正在重新提交到当前页面。

于 2013-05-16T18:07:33.613 回答
1

我在想,如果你没有得到你想要的值,那么下面的值是不正确的。

     if($_POST['formSubmit'] == "Register Yourself") 

 if($_POST['formSubmit1'] == "Register Yourself1") 

所以,我建议你试试这个代码:

 if($_POST['formSubmit'] == "Register Yourself") 
        {

  echo $_POST['name'];
    }else{
        echo 'formSubmit = '.$_POST['formSubmit'];
    }
         // BLOCK 2

    if($_POST['formSubmit1'] == "Register Yourself1") 
        {
  echo $_POST['id'].'<Br/>';
  echo $_POST['name'].'<Br/>';


    }else{
        echo 'formSubmit1 = '.$_POST['formSubmit'];

它会告诉你 POST 是否与值不匹配

于 2013-05-16T18:08:43.723 回答