2

私のphpコードには、内部に複数の送信ボタンがあるフォームがあり、送信ボタンをクリックした後に最初のフォームの変数に値が割り当てられ、2番目のフォームでも$_POST[]によって同様の値が割り当てられます。ここでは、2 番目の 内で最初の送信の値を使用したいと考えています。

私のコードは次のとおりです。

<?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を内部と外部の両方でグローバルとして宣言し、2 番目の変数で使用しています。

2番目のブロック内に印刷できるように、エラーを見つけてください...

前もって感謝します

4

2 に答える 2

2

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>

実際に必要なのは送信ボタン 1 つだけです。ユーザーがそのボタンをクリックすると、フォームがサーバーに送信され、サーバーは入力フィールドの値を $_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 に答える