php - PHP foreach if isset
问题描述
我在数据库中有 3 行。当我单击按钮时,它应该将选定的数据发送到会话。但是,最后一行总是发送到会话。我希望将我选择的数据发送到会话(例如:我选择第一行发送到会话)
<?php
foreach ($search_row as $row){
if(isset($_POST["aboutcafe"])){
$_SESSION["nama_cafe"] = $row["nama_cafe"];
header("Location: info_cafe.php");
}
?>
<h4 class="text-white"><?= $row['nama_cafe'] ?></h4>
<p class="text-justify"><?= $row['lokasi_cafe'] ?></p>
<p class="letter">No Tel : <?= $row['notel_cafe'] ?></p>
<br>
<form method="post">
<button name="aboutcafe" class="btn btn-light">See about cafe</button>
</form>
<?php
}
?>
解决方案
您需要一个表单或一个链接,当提交/单击时,会将咖啡馆的 ID 作为参数传递(通过隐藏字段或查询字符串参数)。这基本上就是大多数 Web 应用程序在不同数据之间移动时的工作方式。
为了扩展你已经拥有的东西,它可能是这样的
<form method="post" action="info_cafe.php">
<input type="hidden" name="cafe" value="<?php echo $row["cafe_id"]; ?>"/>
<button type="submit" name="aboutcafe" class="btn btn-light">See about cafe</button>
</form>
(并摆脱if(isset
位)。
然后,当您将表单提交到 时cafe_info.php
,$_POST["cafe_id"]
就会有相关信息。
或者您可以用超链接替换表单,例如
<a href="cafe_info.php?cafe_id=<?php echo $row["cafe_id"]; ?>">See about cafe</a>
当单击它时,它会生成一个 GET(而不是 POST),因此在 中cafe_info.php
,$_GET["cafe_id"]
参数将包含您需要的 ID。
NB 如果不清楚,以这种方式使用它意味着您不需要涉及 Session,这对于此类任务通常不是一个好的设计选择。
推荐阅读
- android - 在 AOSP 中,将 Fluoride 的 I/O 功能设置为 KeyboardOnly
- bash - 如何从 Azure 下载 SSH 私钥
- c# - 如何打开图像并将其保存到资源
- vba - 提取到 pdf 时,如何将工作表仅放在一个 pdf 页面中?
- html - 如何在视图上为 SVG 设置一次动画,然后在每次悬停时设置动画?
- php - Laravel Livewire 多类别过滤器不起作用
- typescript - 使用 Create React App 和 TypeScript 在 React 应用程序中出现奇怪的解析错误
- javascript - 安全风险 - 在 Node CMS 投资组合网站上上传 JavaScript 文件
- spring-boot - Spring Data JPA 存储从控制器传递的重复复合键
- c# - Apache Ignite 客户端无法计算字符串键的哈希码