2017-02-03 51 views
-1

我會盡可能最好地解釋這一點。從foreach循環中的數據庫'加載更多'

我有通過PHP foreach循環從MySQL數據庫進來的數據。它遍歷50多條記錄並根據不同的變量顯示數據。我想在說完12條記錄後停止循環,然後單擊一個按鈕以顯示下一個12,依此類推。

有什麼方法可以在某個迭代中停止或暫停foreach循環,然後單擊一個按鈕再次「循環播放」12次迭代?

下面我發佈了這個foreach循環的簡化示例。

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

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

} 

這將加載一個產品,我有我的數據庫的名稱,並繼續這樣做,直到所有記錄

任何幫助將不勝感激,謝謝!

+0

如果通過「播放」您將允許頁面刷新,則是。如果通過「播放」,您希望它不刷新頁面,但只需添加更多記錄,那麼您正在談論更復雜的AJAX解決方案。 –

+0

你將如何通過頁面刷新來做到這一點? 如果我能弄清楚,我可以把它包裝在一個AJAX函數中,這個函數在幕後刷新不了嗎? – Mayzed

+0

在這種情況下,分頁可能是一個選項,只檢索您想要顯示的數據。 – rescobar

回答

1

你有兩個選擇:

  • 刷新頁面,你會過去的一些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腳本首次生成整個頁面代碼,然後在您點擊「播放」時添加其他記錄的頁面的一部分,然後在該「播放」按鈕下點擊「播放」按鈕,這會使AJAX請求並將數據放入代碼中
+0

上面顯示的非常基本的示例 –

+1

好的,太棒了!不幸的是,我不能用'mysql_ *'庫支持任何答案,所以你可以快速切換它來顯示正確的'mysqli_'與綁定?還是PDO? –

+0

在像這個例子那樣在SQL語句中使用它們之前,我習慣於使用類型檢查和轉義變量的方式,所以很抱歉之前的簡化。我瞭解你的要求,以顯示學習porposes的正確方法;-) –

0

您應該看看DataTables,假設您可以在應用程序中使用jQuery。它可以一次採集所有結果,並允許您在整個列表中進行分頁,過濾等,或者與服務器端代碼一起使用,以塊形式提取數據。