0

我对 GET 函数有疑问。我目前有一个带有 get 操作的表单。我正在使用 get 函数在另一个页面中访问该数据。不幸的是,我的每一个值都收到“错误:未定义的索引”。在阅读了类似的问题后,我尝试使用 isset(如下所示)并且它消除了错误,但我不确定我的数据是否存储在变量中,因为如果我回显 4 个变量,则没有任何显示. 有人可以推动我朝着正确的方向前进吗?

表格中的数据:

while($row = mysql_fetch_array($result)) {
echo "<div class=\"addform\"><form method='GET' action=\"update.php\">\n";

echo "  <input type=\"text\" value=\"".$row['tfid']."\" name=\"tfid\">\n";

echo "  <input type=\"text\" name=\"fname\"      value=\"".$row['fname']."\"/>\n";

echo "  <input type=\"text\" name=\"lname\" value=\"".$row['lname']."\"/>\n";

echo "  <input type=\"text\" name=\"hca\" value=\"".$row['hca']."\"/>\n";

echo "  <input type=\"text\" name=\"file\" value=\"".$row['file']."\"/>\n";

echo "  <input type=\"image\" src=\"images/update.png\" alt=\"Update Row\" class=\"update\" title=\"Update Row\">\n";

echo "<a href=\"delete.php?tfid=".$row['tfid']."\"><img title='Delete Row' alt=\"Delete\" class='del' src='images/delete.png'/></a></form></div>\n";

}

echo "</table><br />\n";

和检索代码:

$tfid= isset($_GET["tfid"]) ? $_GET["tfid"] : NULL;
$fname = isset($_GET["fname"]) ? $_GET["fname"] : NULL;
$lname = isset($_GET["lname"]) ? $_GET["lname"] : NULL;
$hca = isset($_GET["hca"]) ? $_GET["hca"] : NULL;
echo $tfid;
echo $fname;
echo $lname;
echo $hca;
4

1 回答 1

3

编辑后:

在您发布表单代码后,我注意到问题可能是您的输入值可能为空,因为语法看起来或多或少是正确的。通过仔细检查值view-source以确保其有效性。


在您编辑之前:

发生错误是因为实际上设置变量。确保您的表单如下所示:

<form action="yourpage.php">
<input name="fname" type="text" />
<input name="lname" type="text" />
<input name="hca" type="text" />
<input name="tfid" type="text" />
</form>

如上所示,_GET变量正在寻找名称属性。初学者中的一个常见错误(每个人都曾一度犯过这个错误)是使用idin 代替name. id用于选择器的目的,而name通常用于在服务器端检索值。

要记住的事情....

正如@George Cummins 所提到的,您还应该知道$_GET参数是通过 URL 传递的,如下所示:

http://yoururl.com?var1=data1&var2=data2

在某些情况下,您可能不希望用户看到通过您的表单发送的所有数据,因此在这种情况下,您可能希望使用$_POST本质上是表单数据的隐藏传递。实际上,这些数据并没有真正隐藏,但肯定比使用$_GET.

于 2013-04-22T14:39:40.963 回答