我使用PHP 5为MySQL数据库创建一个查询页面,其中包含2个表“学生”和“教师”。我创建了一个组合框,允许用户从组合框中选择后,通过“提交”按钮从组合框中查看和选择2个表。
然而,脚本的问题是我想验证“提交”按钮是否有效,我创建了一个“echo.php”来回显组合框和提交按钮的值。总体而言,我们的想法是执行类似以下步骤的查询:
1)用户从组合框“老师”或“学生”中选择值。 2)用户点击提交按钮。 3)单击提交按钮后,用户被重定向到“echo.php” 4)“echo.php”应输出/回显“老师”或“学生”。
脚本代码:
<?php
include "db_connect.php";
{
?>
<td valign=top><strong>Name:</strong></td>
<td>
<?php
echo "<form name = \"queryEquipTypeForm\" method = \"post\" action
=\"select_table.php\">";
echo '<select name=\"table\">';
echo "<option size =30 selected>Select</option>";
$result = mysql_query("show tables");
if(!$result) trigger_error("Query Failed: ". mysql_error($db), E_USER_ERROR);
if(mysql_num_rows($result))
{
while($table_array = mysql_fetch_array($result))
{
echo "<option>$table_array[0]</option>";
}
echo '</select>';
echo '</form>';
if(!$_POST['submit'])
{
?>
<form method="post" action="select_table.php">
<input type="submit" name="submit" value="Submit">
</form>
<?php
}
else
{
echo '<script type="text/javascript">
alert("Redirecting you to echo.php page");
window.location="echo.php"</script>';
}
}
else
{
echo "<option>No Names Present</option>";
}
}
?>
</td>
“echo.php”的代码:
<?php
include "select_table.php";
echo "data is : ".$_POST['table'];
?>
echo.php的输出与“select_table.php”与cobo框完全相同,而“data is:”没有“teachers”或“student”字,因为它被重定向到echo.php。
答案 0 :(得分:3)
我不太确定你想要做什么,但正如michaeltwofish已经指出的那样,使用javascript重定向到另一个页面会让你丢失帖子数据。你似乎回应了两个&lt; form&gt;调用select_table.php时没有发布数据的元素,只有一个提交按钮,而你的第一个表单缺少按钮。
通常情况下,您希望您的php脚本输出带有组合框的表单,用户可以在其中选择表格,或者,如果有发布数据(意味着用户选择了某个值),则选择结果,有点像以下:
<?php
if(isset($_POST['table'])) {
print "Selected element: " . $_POST['table'];
} else {
echo '<form method="post" action="select_table.php">';
echo '<select name="table">';
// here should be your SQL query and the combobox options generation
echo '</select>';
echo '<input type="submit" />';
echo '</form>';
}
?>
答案 1 :(得分:0)
提交表单后,您将重定向到echo.php,但这意味着您将丢失POST数据。您需要仔细考虑应用程序的流程,因为您所拥有的内容似乎有点混乱。