2011-01-29 4 views
0

То, на что я нацелен, - это ограничение количества элементов списка на одной странице, а затем для их переноса на новую страницу. Я хочу сделать это, чтобы быстро добавлять новые элементы списка и не беспокоиться о том, слишком ли длинна страница или занимает слишком много времени для загрузки. Точка в правильном направлении была бы замечательной, и пример кода, который мне нужен, был бы лучше! СпасибоОграничение количества элементов списка?

+1

Как вы можете добавить элементы списка? Из базы данных? Hardcoded html? – AJJ

+0

HTML, по-видимому, мне нужно начать добавлять их из базы данных? – Jake

+0

Ну, вы могли бы, конечно, просто создать несколько html-файлов, сохранить эти html с дополнительными элементами списка (например, 10 элементов каждый) на сервере и загрузить их через ajax, если вам удобно с jquery или другой js-библиотекой, это не такая большая работа. Или, почему бы не просто загрузить несколько элементов для начала плюс ссылку «Подробнее ...» или аналогично загружать вторую страницу со всеми элементами? – AJJ

ответ

1

Общая техника называется пейджинг. Смотрите, например, http://www.php-mysql-tutorial.com/wikis/php-tutorial/paging-using-php.aspx

Идея заключается в том, чтобы использовать пункт LIMIT в запросе базы данных SQL, чтобы получить подмножество результатов, заданное смещение в списке записей, а число записей, начиная с, что смещение для получения , Затем вы изменяете gallery.php, чтобы принять параметр GET page (в качестве руководства, к которому я привязан, например, gallery.php?page=3) или параметр GET offset (т. Е. gallery.php?offset=36) и соответствующим образом изменить предложение LIMIT. Например, если у вас есть 12 элементов на странице, то на странице 2 галереи отображаются записи с 12 по 23 включительно (с нуля).

EDIT: Вот пример кода PHP:

<ul class="ulgallery"> 
<?php 

$gallery_items = array(
    array("img_src" => "image1.png", "title" => "This is image 1.", "author" => "John Doe"), 
    array("img_src" => "image2.png", "title" => "This is image 2.", "author" => "John Doe"), 
    array("img_src" => "image3.png", "title" => "This is image 3.", "author" => "John Doe"), 
    array("img_src" => "image4.png", "title" => "This is image 4.", "author" => "John Doe"), 
    array("img_src" => "image5.png", "title" => "This is image 5.", "author" => "John Doe"), 
    array("img_src" => "image6.png", "title" => "This is image 6.", "author" => "John Doe"), 
    array("img_src" => "image7.png", "title" => "This is image 7.", "author" => "John Doe"), 
    array("img_src" => "image8.png", "title" => "This is image 8.", "author" => "John Doe"), 
    array("img_src" => "image9.png", "title" => "This is image 9.", "author" => "John Doe"), 
    array("img_src" => "image10.png", "title" => "This is image 10.", "author" => "John Doe"), 
    array("img_src" => "image11.png", "title" => "This is image 11.", "author" => "John Doe"), 
    array("img_src" => "image12.png", "title" => "This is image 12.", "author" => "John Doe"), 
    array("img_src" => "image13.png", "title" => "This is image 13.", "author" => "John Doe"), 
    // ... 
    array("img_src" => "image304.png", "title" => "This is image 304.", "author" => "John Doe") 
); 

define("ITEMS_PER_PAGE", 12); 

$page = isset($_GET["page"]) ? (int)$_GET["page"] : 0; 
if ($page < 0) 
    $page = 0; 

$num_pages = (int)((count($gallery_items) + ITEMS_PER_PAGE - 1)/ITEMS_PER_PAGE); 
if ($page > $num_pages) 
    $page = $num_pages; 

$end_index = ($page + 1) * ITEMS_PER_PAGE; 
if ($end_index > count($gallery_items)) 
    $end_index = count($gallery_items); 
for ($offset = $page * ITEMS_PER_PAGE; $offset < $end_index; ++$offset) { 
    $current_gallery_item = $gallery_items[$offset]; 
    // output the <img> tag for $gallery_items[$offset]; 
    echo '<li><a href="#"><img src="' . $current_gallery_item["img_src"] . '" /></a></li>'; 
} 
?> 
</ul> 

Я не проверял, но по линии того, что я предлагаю.

+1

Спасибо за ответ, я смотрел учебник, и я немного нечеткий, начиная с. Прежде всего, я добавляю элементы списка по html, так как я не слишком хорошо знаком с базой данных sql. Нужно ли мне лучше знать SQL, прежде чем я начну это делать? спасибо – Jake

+1

@Jake: метод LIMIT предполагает базу данных SQL, но вам не нужна база данных SQL для выполнения аналогичного метода. Если у вас есть массив элементов галереи в вашем PHP-скрипте, вы можете в этом разместить страницу. Так, например, если этот массив называется '$ gallery_items', вы можете выводить HTML только на 12 элементов за раз на основе параметра' страницы' GET. –

+1

@ Jake: Я добавил несколько примеров кода PHP в свой ответ. –

Смежные вопросы