如何将结果集中的特定记录发布到另一个页面

时间:2011-05-19 13:48:44

标签: php html post get resultset

我是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”。

有什么想法吗?

提前致谢!

3 个答案:

答案 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来发帖。