我想知道是否有人可以帮助我。
首先道歉,因为我是新手,所以对某些人来说,这似乎是一个非常基本的错误。
我正在使用下面的表单,允许用户在不同页面之间导航,所有这些都基于“位置”记录。
<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'];
我查看了这个网站上的几个教程和帖子,我找不到我出错的地方。
我只是想知道是否有人可以看看这个并让我知道我哪里出错了?
非常感谢和亲切的问候
答案 0 :(得分:1)
您没有通过POST将lid
值传递给任何脚本。如果您想传递它,请在表单中添加以下内容:
<input type = "hidden" value = "<?= $lid ?>" name = "lid" />
答案 1 :(得分:1)
所有内容必须位于input
(或select
或textarea
)并且有姓名。
<>
。
答案 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
来检索查询字符串值