$ _POST到PHP页面

时间:2012-06-14 13:27:35

标签: php variables

我想知道是否有人可以帮助我。

首先道歉,因为我是新手,所以对某些人来说,这似乎是一个非常基本的错误。

我正在使用下面的表单,允许用户在不同页面之间导航,所有这些都基于“位置”记录。

<form name="locations" id="locations" method="post" action="locationsaction.php">

    <?php

        <table width="538" border="0">
        <tr>
        <th width="119"><div align="left">Location Name</div></th>
        <th width="159"><div align="left">Address</div></th>
        <th width="94"><div align="center">No. Of Finds</div></th>
        <th width="69"></th>
        <th width="66"></th>
        <th width="5"></th>

        </tr>
        <tr>
        <td><div align="left"><?php echo $lid;?></div></td>
        <td><div align="left"><?php echo $lname;?></div></td>
        <td><div align="left"><?php echo $laddress;?></div></td>
        <td><div align="center"><?php echo $findscount?></div></td>
        <td><div align="center"><input name="type" type="submit" value="View Details"/></div></td>
        <td><div align="center"><input name="type" type="submit" value="Add Finds"/></div></td>
        <td><div align="center"><input name="type" type="submit" value=" Add Images"/></div></td>
        </tr>
        <tr><th colspan="8"><br/><hr width="100%"></th></tr>
        </table>
        <?php
</form>

在表单的最后,您会注意到有三个“提交”按钮将用户带到不同的页面。以下PHP脚本用于确定选择了哪个按钮,并在上面的Form POST操作中显示为locationsaction.php

<?php
if (isset($_POST['type'])) {
    $urls = array(
        'View Details' => 'updatelocation.php',
        'Add Finds' => 'addfinds.php',
        'Add Images' => 'image.php'
    );
    $url = $urls[$_POST['type']];
    header("Location: " . $url);
}
?>

虽然按钮工作正常,因为它们将用户带到正确的页面,但我无法将$lid变量传递给三个接收页面中的任何一个,并且我收到以下错误: Notice: Undefined index: lid in /homepages/2/d333603417/htdocs/updatelocation.php

这就是我试图在所有接收页面中获取$lid变量的方式:

$lid = $_POST['lid'];

我查看了这个网站上的几个教程和帖子,我找不到我出错的地方。

我只是想知道是否有人可以看看这个并让我知道我哪里出错了?

非常感谢和亲切的问候

7 个答案:

答案 0 :(得分:1)

您没有通过POST将lid值传递给任何脚本。如果您想传递它,请在表单中添加以下内容:

<input type = "hidden" value = "<?= $lid ?>" name = "lid" />

答案 1 :(得分:1)

您要发布的

所有内容必须位于input(或selecttextarea)并且有姓名。

<>

答案 2 :(得分:1)

您需要使用包含$lid变量的表单元素。像这样:

<input type="hidden" name="lid" value="<?php echo $lid; ?>" />

答案 3 :(得分:1)

你的$ lid变量发送到locationsaction.php但不发送到updatelocation.php,

要解决这个问题,你可以定义$ _SESSION ['lid'] = $ lid;在locationsaction.php中

答案 4 :(得分:1)

好的,这里的示意图如下:

  

表格&gt; locationsaction.php&gt; updatelocation.php(或另一个,   取决于按钮)

您可以使用POST访问locationsaction.php,因为您实际使用表单的提交按钮发布了数据。但是现在如果您需要updatelocation.php中的数据,除非再次发布数据,否则无法使用$_POST来检索数据。

相反,我建议您使用$_SESSION数组来存储值,并通过不同的php页面使用它们。

答案 5 :(得分:1)

首先,将$ lid变量放在输入中:

<input type="hidden" name="lid" value="<?=$lid?>" />

否则不会在表单中发布。

此外,当您重定向时,POST变量不会被重定向。你可以将它们附加到url(http://url.tld?lid = value),然后像这样得到它们:

$lid = $_GET['lid'];

但是,更好的方法是将它们保存在会话中:

$_SESSION['lid'] = $_POST['lid'];
// Redirect here

然后在下一页上,您可以访问它们:

$lid = $_SESSION['lid'];

答案 6 :(得分:1)

输入元素是强制性(隐藏等等),用于表单的传递值。 如果locationaction.php不是那么重要,我建议你直接将动作改为第一页。

<td><div align="center"><input name="type" type="submit" onclick="window.locations.action='updatelocation.php'" value="View Details"/></div></td>
        <td><div align="center"><input name="type" onclick="window.locations.action='addfind.php'" type="submit" value="Add Finds"/></div></td>
        <td><div align="center"><input name="type" type="submit" onclick="window.locations.action='image.php'" value=" Add Images"/></div></td>
        </tr>

但是,当您使用中间页面来检索并发送帖子值时,您可以使用此代码

<form name="iaminthemiddle" action="finaldest.php" method="post">
<?php
foreach($_POST as $k => $v)
 echo "<input type=\"hidden\" name=\"$k\" value=\"$v\">";
?>
</form>
<script>window.iaminthemiddle.submit();</script>

对于$ _POST元素,您可以使用$ _GET或两者同时使用$ _REQUEST

来检索查询字符串值