2

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

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

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

<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'];

我浏览了这个网站上的几个教程和帖子,但我找不到我哪里出错了。

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

非常感谢和亲切的问候

4

7 回答 7

1

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

<input type = "hidden" value = "<?= $lid ?>" name = "lid" />
于 2012-06-14T13:29:52.183 回答
1

您要发布的所有input内容都必须在(或selecttextarea)中并具有名称。

在你的形式中并非如此。

于 2012-06-14T13:30:00.670 回答
1

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

<input type="hidden" name="lid" value="<?php echo $lid; ?>" />
于 2012-06-14T13:30:16.863 回答
1

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

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

于 2012-06-14T13:33:22.603 回答
1

好的,这里是您的架构示意图:

form > locationsaction.php > updatelocation.php (或另一个,取决于按钮)

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

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

于 2012-06-14T13:33:32.590 回答
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'];
于 2012-06-14T13:34:29.513 回答
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 检索查询字符串值

于 2012-06-14T14:15:04.283 回答