PHP显示post变量

PHP显示post变量,php,html,forms,Php,Html,Forms,我在这里寻求一些帮助和解释 我已经创建了一个HTML表单,其中包含几个输入字段和一些非常基本的PHP验证。我的验证只是检查字段是否有数据,如果没有,则通过显示错误提示用户在字段中输入数据。我的希望是最终发布这些输入,对照数据库检查它们,如果它们不存在,则将它们添加到数据库中。但是,这不是我手头的问题 目前,我的目标是获取我想要发布的字段中的所有输入,并将它们显示在错误显示区域下方的字段中。我本来希望只回显数据,但由于某种原因,并不是所有输入的数据都会出现 在下面代码中的5个输入字段中,4个是基本

我在这里寻求一些帮助和解释

我已经创建了一个HTML表单,其中包含几个输入字段和一些非常基本的PHP验证。我的验证只是检查字段是否有数据,如果没有,则通过显示错误提示用户在字段中输入数据。我的希望是最终发布这些输入,对照数据库检查它们,如果它们不存在,则将它们添加到数据库中。但是,这不是我手头的问题

目前,我的目标是获取我想要发布的字段中的所有输入,并将它们显示在错误显示区域下方的字段中。我本来希望只回显数据,但由于某种原因,并不是所有输入的数据都会出现

在下面代码中的5个输入字段中,4个是基本输入字段,一个是文本区域。如果我在基本输入字段中输入任何内容,则只有最后一个输入将在我的显示区域中回响。如果我在字段1中输入一些内容,并将其余内容留空,则将显示字段1。此外,如果我在文本区域中输入内容,它将始终显示。最后,我的PHP验证似乎不适用于我的textarea类型输入(标记为“note”),如果“note”输入留空,则不会返回错误。有人能解释一下吗:(1)如何修复它,以便所有5个输入都显示在display div中?;(2) 为什么会发生这种情况?;(3) 如果文本区域(标记为“note”)留空,为什么不返回错误

多谢各位

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>

<?php
//form validation for general entry form

    // define variables and set to empty values
    $clientErr = $matterErr = $dateErr = $timeErr = $noteErr= "";
    $client = $matter = $date = $time = $note = "";


    //on post, check to see if variable is empty. if not empty
    //parse it and assign value back to variable name

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $complete = true;
        $postArray = [];


        if (empty($_POST["client"])) {
            $clientErr = "*A client name is required. ";
            $complete = false;
        }else {


            $client = test_input($_POST["client"]);
            //$postArray[] =  $client;
        }


        if (empty($_POST["matter"])) {
            $matterErr = "*A matter name is required. ";
            $complete = false;
        }else {
            $client = test_input($_POST["matter"]);
        }


        if (empty($_POST["date"])) {
            $dateErr = "*A date is required. ";
            $complete = false;
        }else {
            $client = test_input($_POST["date"]);
        }


        if (empty($_POST["time"])) {
            $timeErr = "*A time entry is required. ";
            $complete = false;
        }else {
            $client = test_input($_POST["time"]);
        }

        if (empty($_POST["note"])) {
            $noteErr = "*A note is required. ";
            $complete = false;
        } else {
            $note = test_input($_POST["note"]);
        }

    } 

    function test_input($data) {
      $data = trim($data);
      $data = stripslashes($data);
      $data = htmlspecialchars($data);
      return $data;
    }
?>


<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" >

    <label for="client">Client:</label>
    <input type="text" placeholder = "Enter Client Name" name="client"> * 

    <label for="matter">Matter:</label>
    <input type="text" placeholder = "Enter Matter Name" name="matter"> *

    <label for="date">Date:</label>
    <input type="text" placeholder = "Enter Date" name="date"> *

    <label for="time">Time:</label> 
    <input type="text" placeholder ="Time to nearest tenth hour" name="time"> *

    <label for="note">Note:</label>
    <textarea name="note" placeholder ="Enter Any Notes" rows="4" cols="40"></textarea> 

<input type="submit" name="submit" value="Submit" class="submitbutton">

 </form>  


<div class="errorDiv">
    <?php 
        echo $clientErr;
        echo $matterErr; 
        echo $dateErr;
        echo $timeErr; 
    ?>      

</div>

<div class ="displayDiv">
    <?php

            echo "<h2>Your Input:</h2>";
            echo $client;
            echo "<br>";
            echo $matter;
            echo "<br>";
            echo $date;
            echo "<br>";
            echo $time;
            echo "<br>";
            echo $note;



    ?>
</div>


</body>
</html>

文件

您复制并粘贴了
else
块,是吗?在每个块中,您将值分配给
$client
,从而用每个新的
$\u POST
值覆盖它。将其他分配更改为
$client
或相应的
$time
,然后重试

比如这个

$client = test_input($_POST["date"]);
应该是

$date = test_input($_POST["date"]);

为什么要将所有值赋给同一个$client变量?必须用不同的变量来替换它

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $complete = true;
    $postArray = [];


    if (empty($_POST["client"])) {
        $clientErr = "*A client name is required. ";
        $complete = false;
    }else {


        $client = test_input($_POST["client"]);
        //$postArray[] =  $client;
    }


    if (empty($_POST["matter"])) {
        $matterErr = "*A matter name is required. ";
        $complete = false;
    }else {
        $matter= test_input($_POST["matter"]);
    }


    if (empty($_POST["date"])) {
        $dateErr = "*A date is required. ";
        $complete = false;
    }else {
        $date= test_input($_POST["date"]);
    }


    if (empty($_POST["time"])) {
        $timeErr = "*A time entry is required. ";
        $complete = false;
    }else {
        $time= test_input($_POST["time"]);
    }

    if (empty($_POST["note"])) {
        $noteErr = "*A note is required. ";
        $complete = false;
    } else {
        $note = test_input($_POST["note"]);
    }

文件

我绝对做到了。谢谢你的接球。这回答了问题1和2。你知道为什么3对我来说仍然是个问题吗?让我运行一个测试,我怀疑
总是会提交一个值。您可能需要检查
$\u POST['note']!=''
而不是
empty()
。谢谢您的回答是正确的,但是上面的用户发现了这一点,因此我将选择他的答案作为正确答案。谢谢您发现了这一点。这是完整的答案。是的,比我快。:)
 <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>

    <?php
    //form validation for general entry form

        // define variables and set to empty values
        $clientErr = $matterErr = $dateErr = $timeErr = $noteErr= "";
        $client = $matter = $date = $time = $note = "";


        //on post, check to see if variable is empty. if not empty
        //parse it and assign value back to variable name

        if ($_SERVER["REQUEST_METHOD"] == "POST") {
            $complete = true;
            $postArray = [];


            if (empty($_POST["client"])) {
                $clientErr = "*A client name is required. ";
                $complete = false;
            }else {


                $client = test_input($_POST["client"]);
                //$postArray[] =  $client;
            }


            if (empty($_POST["matter"])) {
                $matterErr = "*A matter name is required. ";
                $complete = false;
            }else {
                $matter = test_input($_POST["matter"]);  //remove $client and assign value to $matter
            }


            if (empty($_POST["date"])) {
                $dateErr = "*A date is required. ";
                $complete = false;
            }else {
                $date = test_input($_POST["date"]); //remove $client and assign value to $date
            }


            if (empty($_POST["time"])) {
                $timeErr = "*A time entry is required. ";
                $complete = false;
            }else {
                $time = test_input($_POST["time"]); //remove $client and assign value to $time
            }

            if (empty($_POST["note"])) {
                $noteErr = "*A note is required. ";
                $complete = false;
            } else {
                $note = test_input($_POST["note"]);
            }

        } 

        function test_input($data) {
          $data = trim($data);
          $data = stripslashes($data);
          $data = htmlspecialchars($data);
          return $data;
        }
    ?>


    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" >

        <label for="client">Client:</label>
        <input type="text" placeholder = "Enter Client Name" name="client"> * 

        <label for="matter">Matter:</label>
        <input type="text" placeholder = "Enter Matter Name" name="matter"> *

        <label for="date">Date:</label>
        <input type="text" placeholder = "Enter Date" name="date"> *

        <label for="time">Time:</label> 
        <input type="text" placeholder ="Time to nearest tenth hour" name="time"> *

        <label for="note">Note:</label>
        <textarea name="note" placeholder ="Enter Any Notes" rows="4" cols="40"></textarea> 

    <input type="submit" name="submit" value="Submit" class="submitbutton">

     </form>  


    <div class="errorDiv">
        <?php 
            echo $clientErr;
            echo $matterErr; 
            echo $dateErr;
            echo $timeErr; 
            echo $noteErr;  // echo noteerror here.........
        ?>      

    </div>

    <div class ="displayDiv">
        <?php

                echo "<h2>Your Input:</h2>";
                echo $client;
                echo "<br>";
                echo $matter;
                echo "<br>";
                echo $date;
                echo "<br>";
                echo $time;
                echo "<br>";
                echo $note;



        ?>
    </div>


    </body>
    </html>