在foreach循环中对数据库中的数据“加载更多”

时间:2017-02-03 17:48:25

标签: php mysql loops foreach pagination

我会尽力解释这个问题。

我通过PHP foreach循环从MySQL数据库传入数据。它循环访问50多条记录,并根据不同的变量显示数据。我想在说出12条记录后停止循环,然后单击按钮显示下一条12,依此类推。

有没有办法在某次迭代中停止或暂停foreach循环,然后单击一个按钮再次“播放”循环再进行12次迭代?

下面我发布了这个foreach循环的简化示例。

foreach ($view->likeDataSet as $productData){

echo '<p class="pName">' . $productData->getPname() . '</p>';

}

这将加载我在我的数据库中的产品名称,并继续执行此操作直到所有记录

非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:2)

您有两种选择:

  • 页面刷新您将超过页面的某些GET参数,并且foreach循环将根据该参数显示更多记录。

简化示例:

$itemCount = $_GET['showitems'];

$mysqli = new mysqli(sqlhost, user, bassword, db);
$stmt = $mysqli->prepare('SELECT * FROM products LIMIT ?'); //prepare the statement
$stmt->bind_param('i', $itemCount);                         //bind parameters to the statement
$stmt->execute();

$result = $stmt->get_result();

...
your logic to transform the data into the $view->likeDataSet structure 
...

foreach ($view->likeDataSet as $productData){
  echo '<p class="pName">' . $productData->getPname() . '</p>';
}

echo '<a href="yourcript.php?showitems='.($itemCount + 10).'">Get next 10 rows</a>';
  • 更复杂的选项,您可以使用javasript和AJAX修改实际页面内容。因此,您的PHP脚本应该首次生成整个页面代码,然后只有部分页面包含您想要添加的其他记录,当您单击&#34;播放&#34;当然还有javascript功能&#34; play&#34;将发出AJAX请求并将数据放入代码的按钮

答案 1 :(得分:0)

你应该看看DataTables,假设你可以在你的应用程序中使用jQuery。它可以立即获取所有结果并允许您在整个列表中进行分页,过滤等,或者使用服务器端代码以块的形式提取数据