首页 > 解决方案 > 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
            }
            ?>

标签: phphtmlforms

解决方案


您需要一个表单或一个链接,当提交/单击时,会将咖啡馆的 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,这对于此类任务通常不是一个好的设计选择。


推荐阅读