【发布时间】:2021-12-07 21:39:20
【问题描述】:
<?php if(isset($_POST["btn-add"])):?>
<?php $element = 0; ?>
<?php while($element < 10): ?>
<?php $statement = $pdo->query("SELECT * FROM dorayaki ORDER BY stock DESC LIMIT $element ,1"); ?>
<?php if($row = $statement->fetch()): ?>
<div name ="card" class = "card">
<?php $doraId = $row["id"] ; ?>
<p><?php print_r("Name: "."<a name='doraprice' href='detail.php?id=$doraId'>".$row["name"]."</a>"); ?></p>
<p><?php print_r("Price: "."<a name='doraprice' href='detail.php?id=$doraId'>".$row["price"]."</a>"); ?></p>
<p><?php print_r("Description: "."<a name='doraprice' href='detail.php?id=$doraId'>".$row["desc"]."</a>"); ?></p>
</div>
<?php $element++; ?>
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
<form method="post">
<input type="submit" name="btn-add" value="Add element">
</form>
每次单击“添加元素”时,我希望它在 html 页面上附加一张“卡片”,如果再次单击该按钮,它将再添加一张“卡片”,直到达到 10 张卡片。当我单击“添加按钮”时,它不是一个一个地附加它,而是一次将所有卡片附加到 html 页面。如何解决?
【问题讨论】:
-
循环中的数据库查询是您应该避免开始的事情。这里真的没有充分的理由这样做。改为使用
LIMIT row_count OFFSET offsetbefore 进行查询,然后遍历结果集。 -
并且每次显示“一个更多”元素,你显然首先需要现在,你上次显示了多少。因此,在您的表单中添加一个隐藏的输入字段,并将您当前的计数器值放入,以便您可以在提交表单后再次访问它。
-
您必须开始了解 Web 开发中客户端和服务器端之间的断开连接(HTTP 是一种无状态协议)以及 can be managed with sessions 是如何实现的。简而言之:您的 HTML 和 PHP 代码之间并没有您认为的那样持续的联系。