0

如何在 PHP 中创建一个表单,用户输入的结果将在表格中生成?当我测试页面时,我只得到表、键和结果(值)字段的开头,但没有值!

这是我的代码(我将字段数缩短为两个,因为表单可能很长:

订单:

<?php

foreach ($_POST as $key => $entry)
{
    $totalfields++;
    echo "<tr>\n";  

    echo "<td>" . $key . "</td>";

    if (is_array ($entry)) { 
        $count = count($entry);
        echo "<td>";
        for ($i=0; $i<$count; $i++){
            echo $entry[$i] . "<br />";
        }
        echo "</td>";
    }   else   
    {
        echo "<td>$entry</td>";
    }
    echo "<tr>\n";
}
?>

<form method="post" action="address to the results form page">  


<label for="fname">First Name:</label>
<input type="text" name="fname" id="fname"/><br/>
<br/>

<label for="lname">Last Name:</label>
<input type="text" name="lname" id="lname"/><br/>
<br/>

 <p><input type="submit" value="Submit"/></p>


 </form>

结果表格页面:

 <div id="results table">
 <table border='1'>
 <tr>
 <th>
  Field
 </th>
 <th>
  Results
 </th>
 </tr>
 </table>
 </div>
4

2 回答 2

0

生成表格的 PHP 应该在结果页面中,而不是在表单页面中。或者,您可以action将表单指向同一页面,以在同一页面上发布和处理结果。

编辑:我的意思是:PHP——你可能知道——是在服务器端处理的。这意味着您的浏览器向服务器发送请求,服务器处理 PHP 文件,然后为客户端提供处理后的版本。

您的代码中的问题是您让 PHP 脚本$_POST在用户应该填写表单的页面上处理。当用户填写表单并点击提交时,他将被定向到action页面,该页面$_POST将可用并进行处理。您的误解在于您希望$_POST它在发布它的页面上可用,然后自动将其发送到结果页面。这不是发生的情况,因为服务器没有机会捕获您在同一页面上发送的信息,因为它已经被提供了......</p>

…除非您将表单操作直接指向同一页面。然后服务器捕获信息并处理它。

你真的可以用两种方式解决这个问题。

  1. action像现在一样将您指向结果页面,但将处理代码移动到结果页面。

  2. 将您action指向同一页面。

您甚至可能想做一些花哨的事情,例如检查是否有$_POST信息,如果没有,则显示一个表格。如果有,显示结果。这一点也不难实现,如下所示:

<?php
if( $_POST ): ?>
<div id="results table">
 <table border='1'>
     <thead>
         <tr>
         <th>
          Field
         </th>
         <th>
          Results
         </th>
         </tr>
     </thead>
     <tbody>
         <?php   

        foreach ($_POST as $key => $entry)
        {

            echo "<tr>\n";  

            echo "<td>" . $key . "</td>";

            if (is_array ($entry)) { 
                $count = count($entry);
                echo "<td>";
                for ($i=0; $i<$count; $i++){
                    echo $entry[$i] . "<br />";
                }
                echo "</td>";
            }   else   
            {
                echo "<td>$entry</td>";
            }
            echo "<tr>\n";
        }

    ?>

    </tbody>
</table>
</div>

<?php else: ?>

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


<label for="fname">First Name:</label>
<input type="text" name="fname" id="fname"/><br/>
<br/>

<label for="lname">Last Name:</label>
<input type="text" name="lname" id="lname"/><br/>
<br/>

 <p><input type="submit" value="Submit"/></p>

 </form>

<?php endif; ?>

我为你做了一个工作示例。只需转到链接并单击Run [F9]顶部的按钮即可查看它的实际效果:

Working example

于 2013-03-11T00:38:23.050 回答
0

这实际上对我来说很好(我用于PHP_SELF表单操作)。但是,我建议您使用$_SERVER[REQUEST_METHOD]来检查POST

if( $_SERVER[REQUEST_METHOD] == 'POST' ) { ...

此外,要明确调用已发布的变量 ( $_POST[fname]& $_POST[lnane])

于 2013-03-11T00:39:23.813 回答