我是PHP的新手,我已经陷入了这个......
我有一个数据库和一个简单的搜索表单。我可以使用我想要的标准搜索没有问题 - 例如,我填写名称“亚历克斯”,我可以看到我的结果集中的5条记录与此标准。到目前为止一切都很好......
问题在于:我需要创建一个链接/按钮 - 无论如何 - 并发布/获取我将选择的特定记录的值。当结果集只包含一条记录时,我没有问题 - 一切正常。但是,只要结果集返回的记录超过1条,Post / Get方法就会抓取最后一条记录的数据。
让我告诉你我在这里做什么......这是我正在检索的数据:
while ($row= mysql_fetch_array($result)) {
$my_id = $row["ID"];
$my_name = $row["name"];
$my_profession = $row["profession"];
echo "<div align='center'><tr>
<td><div align='center' style='color:white;'><font size='2' face='Arial'>$my_id</div></td></font>
<td><div align='center' style='color:white;'><font size='2' face='Arial'>$my_name</div></td></font>
<td><div align='center' style='color:white;'><font size='2' face='Arial'>$my_profession</div></td></font>
<td><div align='center' style='color:white;'><font size='2' face='Arial'><form action='person_info.php' method='POST'><input type='hidden' name='PersonID' value='$my_id' /><input type='hidden' name='PersonName' value='$my_name' /><input type='hidden' name='PersonProfession' value='$my_profession' /><input type='submit' value='Show' /></div></td></font>
.....
以下是person_info.php的代码:
$my_id = $_POST["PersonID"];
$my_name = $_POST["PersonName"];
$my_profession = $_POST["PersonProfession"];
echo "
<div align='center'><font size='4' face='Georgia' style='color:red';><b>$my_id, $my_name, $my_profession</b></font></div>
如果只涉及一条记录,一切都很好。如果有多个,我会得到最后一个的详细信息。例如,从结果集:
1亚历克斯失业 2 Alex Carpenter 3 Alex Gardener
...最后发布的记录是“3 Alex Gardener”。
有什么想法吗?
提前致谢!
答案 0 :(得分:2)
如果这是您正在使用的确切代码,则看起来您不会关闭表单。因此,当您单击提交按钮时,它会抓取所有数据,然后每次都覆盖它,直到它到达最后一个。
扔一个:
</form>
最后那里应该清理它。
答案 1 :(得分:1)
是personID,personname和personProffesion总是输入的名称?看起来您将该值基于当前引入的数据库条目,但如果您没有使用会导致问题的唯一名称。
如果您对每组隐藏输入使用相同的名称,则无法在使用Post或Get传递它们时将它们分开,您的名称字段应该是唯一的,最后一个条目是唯一的通过,因为每个添加它基本上覆盖过去的条目。
如果这对您有用,请告诉我,我希望您明白这一点!
编辑:
让每个条目进入一个独特页面的最简单方法是使用GET(如Paul Weber所述)多种形式的后期工作,但它很快就会变得混乱:
while ($row= mysql_fetch_array($result)) {
$my_id = $row["ID"];
$my_name = $row["name"];
$my_profession = $row["profession"];
echo'<a href="somepage.php?personid='.$my_id.'&personname='.$my_name.'&personprofession='.$my_profession.'">Name Your Link</a>';
}
上面的代码会创建一个链接,传递所需的信息作为get,然后你可以在somepage.php上将它拉出来,它也比表单更清晰。
答案 2 :(得分:0)
如果您可以使用get,则只需将参数附加到Url即可传递参数。
所以你可以去
<a href="save.php?PersonName=$name&Profession=$profession...">Save</a>
如果你不能使用Get,你可以分开Forms,在所有Input元素周围创建一个Form标签,这样只会提交当前范围内的那些。这意味着您将为每一行创建一个新表单。
或者使用JQuery来发帖。