Показать больше из базы данных по нажатию PHP, JQUERY, MYSQL - PullRequest
3 голосов
/ 22 декабря 2011

Я работаю над сайтом и извлекаю названия категорий из таблицы БД (имена_категорий).Затем я отображаю их на веб-сайте с помощью php в неупорядоченном списке HTML.Я хочу ограничить количество названий категорий, а затем с помощью jquery (или чего-то еще, кроме того, что предпочитаю jQuery) получить больше названий категорий и добавить кнопку «меньше» для возврата.

this is what im trying to achieve

Надеюсь, я облегчил понимание этого вопроса, и спасибо за любую помощь!

Ответы [ 4 ]

12 голосов
/ 22 декабря 2011

В основном используйте AJAX, чтобы получить больше.Начните с загрузки, используя LIMIT.

<ul id="categories">
<?php
    $res = mysql_query('SELECT * FROM `category_names` LIMIT 10'); // change limit to suit
    while ($row = mysql_fetch_array($res)) {
        echo '<li>'.$row['name'].'</li>'; // or whatever your field is called
    }
?>
</ul>
<span id="loadmore" num_loaded="10">Load More</span>

. Затем используйте следующую jQuery для загрузки большего:

$('#loadmore').click(function() {
    var loaded = $(this).attr('num_loaded');
    $.ajax({
        url:'load_categories.php',
        type:'get',
        data:{'from':loaded,'to':loaded+10},
        success: function (res) {
            var categories = $.parseJSON(res);
            categories.each(function() {
                $('#categories').append('<ul>'+this+'</ul>');
            });
            $('#loadmore').attr('num_loaded',loaded+10);
        }
    });
});

Наконец, вам нужно создать страницу PHPчто AJAX вызывает - load_categories.php

<?php

if (!isset($_GET['from'])) exit;
if (!isset($_GET['to'])) exit;

$from = $_GET['from'];
$to = $_GET['to'];
$diff = $from-$to;

// connect / select db
$res = mysql_query('SELECT * FROM `category_names` LIMIT '.$from-1.','.$to.';');
$arr = array();
while ($row = mysql_fetch_array($res)) {
    array_push($arr,$row['name']);
}
echo json_encode($arr);

?>  
4 голосов
/ 22 декабря 2011

Существует несколько различных подходов, которые работают лучше или хуже в зависимости от ваших потребностей.

Подход 1 (проще, менее эффективен, плохо масштабируется): выполните полный запрос и сохраните все результаты вDOM, просто скрывая их с помощью jQuery (jQuery expander - простой плагин, который вы можете попробовать, хотя я нашел его ограниченным в настройке).

Подход 2 (более сложный, но более эффективный / масштабируемый,также быстрее): используйте лимит MySQL, вы можете фактически послать второй запрос mysql по щелчку, однако вы хотите убедиться, что он асинхронный, чтобы не задерживать взаимодействие с пользователем.http://php.about.com/od/mysqlcommands/g/Limit_sql.htm

Это похоже на: PHP / MySQL Показать первые X результаты, скрыть остальные

1 голос
/ 01 января 2014

Или вы можете сделать что-нибудь попроще:

 $get = mysqli_queury ($link, "SELECT * FROM db_name WHERE blank='blank' LIMIT 5"
 if (isset($_POST['button']; {
 $get = mysqli_query ($link, "SELECT * FROM db_name WHERE blank='blank' LIMIT 10"
 }
?>
<form action="showmore.php" method="POSt">
<input type="button" id="button" name="button">
</form>

Надеюсь, это поможет!

0 голосов
/ 22 декабря 2011

Использовать сетку данных с разбиением на страницы. Я думаю, подключаемый модуль JQuery с данными будет хорошо работать для вас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...