【问题标题】:PHP Form Get and Post Output with If statement to output results on same pagePHP Form Get and Post Output with If 语句在同一页面上输出结果
【发布时间】:2015-02-16 02:34:29
【问题描述】:

我正在学习 PHP 并正在处理表单。我有一项任务是在同一页面上创建一个表单、一个 GET 和一个 POST,并将结果发布在每个表单下方的同一页面上。

我创建了一个 if/else 语句,但也许我做错了。

<div>
<h1>POST Method Form</h1>
<form  method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
First Name:<br>
<input type="text" name="firstname"><br>
Last Name:<br>
<input type="text" name="lastname"><br>
E-mail: <input type="text" name="email"><br>
Database Utilized:  <br>
<input type="checkbox" name="dba" value="SQL Server">SQL Server<br>
<input type="checkbox" name="dba" value="Oracle">Oracle<br>
<input type="checkbox" name="dba" value="Access">Microsoft Access<br>
<br>
<input type="submit" name="postsubmit" value="Submit">
</form>
<br>
<h1>Database Consulting POST Form Results</h1>
<p>
<?php
if (isset($_POST['postsubmit'])) {

    $firstname = $_POST['firstname'];
    $lastname = $_POST['laststname'];
    $email = $_POST['email'];
    $dba = $_POST['dba'];
    echo $firstname; <br>
    echo $lastname; <br>
    echo $email; <br>
    echo $dba; <br>
}

else {
     echo "Please enter correct values in form and hit submit";
}

?>
</p>

<br>
<h1>GET Method Form</h1>
<form method="GET" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
First name:<br>
<input type="text" name="firstname_get"><br>
Last name:<br>
<input type="text" name="lastname_get"><br>
E-mail: <input type="text" name="email_get"><br>
Database Utilized<br>
<input type="checkbox" name="dba_get" value="SQL Server">SQL Server<br>
<input type="checkbox" name="dba_get" value="Oracle">Oracle<br>
<input type="checkbox" name="dba_get" value="Access">Microsoft Access<br>
<br>
<input type="submit" name="getsubmit" value="Submit">
</form>
<br>
<br>
<h1>Database Consulting GET Form Results</h1>

<p>

<?php 
if (isset($_GET['getsubmit'])) {
    $firstname_get = $_GET['firstname'];
    $lastname_get = $_GET['laststname'];
    $email_get = $_GET['email'];
    $dba_get = $_GET['dba'];
    echo $firstname_get; <br>
    echo $lastname_get; <br>
    echo $email_get; <br>
    echo $dba_get; <br>
}

else {
     echo "Please enter correct values in form and hit submit";
}

?>
</p>

</div>

【问题讨论】:

  • 旁注:将您的复选框视为一个数组,否则如果选择了 2 个或更多,它们将被覆盖。您可以使用收音机代替单一选择。

标签: php forms post if-statement get


【解决方案1】:

您将 $_GET['lastname'] 拼错为 $_GET['laststname'] ,将您的操作更改为 action="" 并将您的 &lt;br&gt; 包含在您的 echo 语句中,例如 echo $firstname .'&lt;br&gt;'; 而不是 echo $firstname; &lt;br&gt;

<h1>POST Method Form</h1>
 <form  method="POST" action="" >
  First Name:<br>
<input type="text" name="firstname"><br>
Last Name:<br>
 <input type="text" name="lastname"><br>
 E-mail: <input type="text" name="email"><br>
  Database Utilized:  <br>
 <input type="checkbox" name="dba[]" value="SQL Server">SQL Server<br>
 <input type="checkbox" name="dba[]" value="Oracle">Oracle<br>
 <input type="checkbox" name="dba[]" value="Access">Microsoft Access<br>
  <br>
 <input type="submit" name="postsubmit" value="Submit">
 </form>
  <br>
  <h1>Database Consulting POST Form Results</h1>
 <p>
  <?php
 if (isset($_POST['postsubmit'])) {

$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$dba = $_POST['dba'];
echo $firstname .'<br>';
echo $lastname .'<br>';
echo $email .'<br>';
foreach ($dba as $database) {
    echo $database .'<br>';
}
}

 else {
 echo "Please enter correct values in form and hit submit";
 }

 ?>
 </p>

【讨论】:

  • sidenote:选中多个时将被覆盖复选框帖子。 span>
  • 向下滚动查看代码的 GET 部分。但我现在掌握了窍门。感谢您的输入。惊人的! ';回声 $lastname_get .'
    ';回声 $email_get .'
    '; foreach ($dba_get as $database_get) { echo $database_get .'
    '; } } else { echo "请在表单中输入正确的值并点击提交"; } ?>
【解决方案2】:

首先,我建议有一个名为 action 的隐藏字段,例如:

<input type="hidden" name="action" value="submituserinfo" />

然后将你的php逻辑放在顶部而不是底部,在页面显示之前处理!您的 PHP_SELF 交易很好。但是你的逻辑是错误的。正确的逻辑应该是:

if(isset($_REQUEST['action']) && $_REQUEST['action']=='submituserinfo'){
    //analyze the data

    if($errors){
        //set a var to show errors below
    }else{
        //enter the data, whatever
    }
}

这应该让您朝着正确的方向开始。如果将编码放在文档的开头,可以更好地处理输出,甚至可以使用 header() 根据成功或错误进行重定向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 2014-03-10
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多