【发布时间】:2010-09-30 09:23:09
【问题描述】:
我有一个数据库,其中包含某条街道上每所房子的居民。我有一个'house view' php 网页,当使用'post'给出门牌号时,它可以显示单个房屋和居民。我还有一个“街景”网页,其中列出了房屋清单。我想知道的是,您是否可以在街景视图上提供链接,该链接将链接到房屋视图并同时发布门牌号,而无需为每个视图设置表格?
问候
【问题讨论】:
我有一个数据库,其中包含某条街道上每所房子的居民。我有一个'house view' php 网页,当使用'post'给出门牌号时,它可以显示单个房屋和居民。我还有一个“街景”网页,其中列出了房屋清单。我想知道的是,您是否可以在街景视图上提供链接,该链接将链接到房屋视图并同时发布门牌号,而无需为每个视图设置表格?
问候
【问题讨论】:
我会在查询字符串中使用一个值将所需信息传递到下一页。
【讨论】:
我假设每个房子都存储在自己的表中,并且有一个“id”字段,例如房子 id。因此,当您遍历房屋并显示它们时,您可以执行以下操作:
<a href="house.php?id=<?php echo $house_id;?>">
<?php echo $house_name;?>
</a>
然后在house.php 中,您将使用$_GET['id'] 获取房屋ID,使用is_numeric() 对其进行验证,然后显示其信息。
【讨论】:
您不能通过<a href="some_script.php">some_script</a> 发出 POST HTTP 请求
只需打开您的house.php,在其中找到您的$house = $_POST['houseVar'] 并将其更改为:
isset($_POST['houseVar']) ? $house = $_POST['houseVar'] : $house = $_GET['houseVar']
在streeview.php 中创建这样的链接:
<a href="house.php?houseVar=$houseNum"></a>
或者别的什么。我只是不知道你的文件和里面的内容。
【讨论】:
如果你想使用 POST 而不是 GET 来传递数据,你可以使用 PHP 和 JavaScript 的组合,像这样:
function formSubmit(house_number)
{
document.forms[0].house_number.value = house_number;
document.forms[0].submit();
}
然后在 PHP 中遍历门牌号,并创建指向 JavaScript 函数的链接,如下所示:
<form action="house.php" method="POST">
<input type="hidden" name="house_number" value="-1">
<?php
foreach ($houses as $id => name)
{
echo "<a href=\"javascript:formSubmit($id);\">$name</a>\n";
}
?>
</form>
这样,您只有一个表单,其隐藏变量会根据您单击的链接进行修改。然后 JavaScript 提交表单。
【讨论】:
这是一个旧线程,但以防万一有人遇到,我认为最直接的解决方案是使用 CSS 使传统表单看起来像锚链接。
@ben 是正确的,您可以使用 php 和 javascript 发送带有链接的帖子,但让我们问问 js 做了什么——本质上它创建了一个带有 style='display:none' 的表单,设置了一个输入/文本行value='something' 然后提交。
但是,您可以通过制作表单来跳过所有这些。在输入/文本行(不是上面的表单本身)上设置 style='display:none' 然后使用 CSS 使按钮看起来像一个正常的链接。
这是我使用的一个例子:
在 PHP 类中,
public function styleButton($style,$text){
$html_str = "<form id='view_form' action='".$_SERVER['REQUEST_URI']."' method='post' >";
$html_str .= "<input style='display:none;' name='list_style' type='text' value='".$style."' >";
$html_str .= "<input id='view_button' type='submit' value='".$text."' >";
$html_str .= "</form>";
return $html_str;
}
然后在 CSS id="view_form" 中设置 "display:inline;" 并在 CSS id="view_button" 中设置为:“background:none;border:none;color:#fff;cursor:pointer”
【讨论】:
我们应该让每个人都更轻松,因为您可以简单地将 JS 与 PHP 结合起来 将 PHP 和 JS 结合起来非常简单。
$house_number = HOUSE_NUMBER;
echo "<script type='text/javascript'>document.forms[0].house_number.value = $house_number; document.forms[0].submit();</script>";
或者更安全的方式
$house_number = HOUSE_NUMBER;
echo "<script type='text/javascript'>document.forms[0].house_number.value = " . $house_number . "; document.forms[0].submit();</script>";
【讨论】:
这篇文章对我的项目很有帮助,因此我也想分享我的经验。 需要注意的重要一点是 POST 请求只能使用表单。 当我尝试使用 ejs 呈现页面时,我有类似的要求。我需要呈现一个导航,其中包含一个本质上是超链接的项目列表,当用户选择其中任何一个时,服务器会以适当的信息进行响应。
所以我基本上使用循环将每个导航项创建为一个表单,如下所示:
<ul>
begin loop...
<li>
<form action="/" method="post">
<input type="hidden" name="country" value="India"/>
<button type="submit" name="button">India</button>
</form>
</li>
end loop.
</ul>
它所做的是创建一个带有隐藏输入的表单,其分配的值与按钮上的文本相同。 所以最终用户只会看到按钮中的文本,点击后会向服务器发送一个发布请求。
请注意,输入框的 value 参数和 Button 文本完全相同,并且是使用 ejs 传递的值,我在上面的示例中没有显示以保持代码简单。
这是导航的屏幕截图... enter image description here
【讨论】: