2017-02-03 7 views
-1

Постараюсь объяснить это как можно лучше.'Загрузить больше' на данные из базы данных в цикле foreach

У меня есть данные, поступающие из базы данных MySQL через цикл foreach PHP. Он перебирает 50+ записей и отображает данные на основе разных переменных. Я хочу остановить цикл, скажем, 12 записей, а затем нажать кнопку, чтобы отобразить следующие 12 и т. Д.

Есть ли способ остановить или приостановить цикл foreach на определенной итерации, а затем нажать кнопку, чтобы «воспроизвести» цикл еще раз на 12 итераций?

Ниже я опубликовал упрощенный пример этого цикла foreach.

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

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

} 

Это загрузит название продукта, который я имею в моей базе данных, и продолжают делать это, пока все записи

Любая помощь будет высоко ценится, спасибо!

+0

Если «play» вы разрешили обновление страницы, тогда да. Если «play» вы хотите, чтобы он НЕ обновлял страницу, а просто добавлял больше записей, тогда вы говорите о более сложном решении AJAX. –

+0

Как бы вы это сделали, обновив страницу? Если я могу понять это, я могу просто обернуть его вокруг функции AJAX, которая обновляет за кулисами, не так ли? – Mayzed

+0

Pagination может быть вариантом в этом случае, получить только данные, которые вы хотите показать. – rescobar

ответ

1

У вас есть два варианта:

  • обновить страницу, где вы мимо какого-либо параметра GET на страницу и цикл по каждому элементу будет показывать больше записей на основе этого параметра.

Упрощенный пример:

$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-скрипт shoud генерирует весь код страницы в первый раз, а затем только часть страницы с дополнительными записями, которые вы хотите добавить, когда вы нажимаете «играть» и, конечно же, функцию javascript под этой кнопкой «играть», которая сделает запрос AJAX и поместите данные в код
+0

Очень простой пример, показанный выше –

+1

Хорошо, отлично! К сожалению, я не могу поддерживать какой-либо ответ с помощью библиотеки 'mysql_ * ', поэтому вы можете быстро ее переключить, чтобы показать правильную' mysqli_' с привязкой? Или PDO? –

+0

Я использую для проверки типа и исключения переменных перед их использованием в инструкции SQL, как в этом примере, поэтому извините за упрощение раньше. Я понимаю, что ваши требования показать правильный способ обучения обусловливают ;-) –

0

Вы должны взглянуть на DataTables, предполагая, что вы можете использовать jQuery в своем приложении. Он может принимать сразу все результаты и разрешать разбиение на страницы, фильтрацию и т. Д. Во всем списке или использовать с кодом на стороне сервера, чтобы вытащить данные в кусках.