如何在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>
答案 0 :(得分:0)
生成表的PHP应该在结果页面中,而不是在表单页面中。或者,您可以将表单的action
指向同一页面,以便在同一页面上发布和处理结果。
编辑:我的意思是:PHP - 您可能知道 - 处理服务器端。这意味着您的浏览器向服务器发送请求,服务器处理PHP文件,然后它为客户端提供处理后的版本。
代码中的问题是你有PHP脚本处理用户应填写表单的页面上的$_POST
。当用户填写表单并点击提交时,他将被定向到action
页面,其中$_POST
将可用并处理。您的误解在于您希望$_POST
在发布的页面上可用,然后将其自动发送到结果页面。 这不是因为服务器没有机会捕获您在同一页面上发送的信息,因为它已经提供了 ...
...除非您将表单操作直接指向同一页面。然后服务器捕获信息并处理它。
你可以用两种方式解决这个问题。
将action
指向您现在正在执行的结果页面,但将处理代码移至结果页面。
将您的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; ?>
我为你做了一个工作的例子。只需转到链接,然后点击顶部的运行[F9] 按钮即可查看其中的操作:
答案 1 :(得分:0)
这实际上对我来说很好(我使用PHP_SELF
进行表单操作)。不过,我建议你使用$_SERVER[REQUEST_METHOD]
来检查POST
:
if( $_SERVER[REQUEST_METHOD] == 'POST' ) { ...
此外,明确调用已过帐的变量($_POST[fname]
&amp; $_POST[lnane]
)