ФорумПрограммированиеPHP для идиотов → Постраничный вывод+сортировка

Постраничный вывод+сортировка

  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 12 ноября 2008 г. 2:09, спустя 1 минуту 22 секунды

    Ты все-таки не умеешь задвать правильно вопросы. Тебе надо не "извлекать все данные", а узнать "сколько всего записей на данный момент". Почувствуйте разницу ..
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 12 ноября 2008 г. 2:10, спустя 1 минуту 4 секунды


    Нуу ….. теперь задай правильный вопрос!


    Как сделать диапазон вывода данных на каждую страницу?
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 12 ноября 2008 г. 2:12, спустя 1 минуту 47 секунд

    А как же это? Со старым кодом и при небольших объемах данных, переход страниц все равно не осуществляется.
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 12 ноября 2008 г. 2:14, спустя 2 минуты

    Ладно, я понял, что вы имеете ввиду. Сделаю. Но старый код все равно не будет работать. Спасибо. отлучусь на полчаса…
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 12 ноября 2008 г. 2:14, спустя 8 секунд

    Обясняю
    Пишешь SELECT SQL_CALC_FOUND_ROWS ….. LIMIT …
    тогда следующий запрос
    SELECT FOUND_ROWS()
    вернет общее число строк, которые были бы без LIMIT

    Почему страрый код не работал, сказать не могу т.к. ты так и не поделился своими исследованиями на тему почему у тебя что-то не то содержится в $page
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 12 ноября 2008 г. 2:21, спустя 6 минут 41 секунду

    В старом коде вообще нет $page. Есть $_SESSION['pagenumber'].


    <?php
    echo '<input name="page_i" id="page_i" type="hidden" value="'.$_SESSION['page_i'].'">';
    echo '<input name="pagenumber" id="pagenumber" type="hidden" value="'.$_SESSION['pagenumber'].'">';
    if ($_SESSION['page_i']-$count_on_page<1){
    echo '·<span>«</span>';
    }else{
    echo '·<a href="?field='.$_GET['field'].'&sort='.$_GET['sort'].'&page='.$i.'" onclick="nextPageList(\''.($_SESSION['page_i']-$count_on_page).'\');">«</a>';
    }
    for ($i=$_SESSION['page_i'];(($i*$page_size)<=$rows_count)&&
                    ($i<($_SESSION['page_i']+$count_on_page));$i++)
    {
    echo '·';
    if ($i!=$_SESSION['pagenumber']){
    echo '<a  href="?field='.$_GET['field'].'&sort='.$_GET['sort'].'&page='.$i.'" onclick="gotoPage('.$i.');">'.$i.'</a>';
    }
    else{
    echo '<span class="batchCurrent">'.$i.'</span>';
    }
    }
    if (($rows_count>($i-1)*$page_size)&&($i<($_SESSION['page_i']+$count_on_page)))
    {
    echo '·';
    if ($i!=$_SESSION['pagenumber']){
    echo '<a href="?field='.$_GET['field'].'&sort='.$_GET['sort'].'&page='.$i.'" onclick="gotoPage('.$i.');">'.$i.'</a>';
    }
    else{
    echo '<span class="batchCurrent">'.$i.'</span>';
    }
    }
    if (($_SESSION['page_i']+$count_on_page-1)*$page_size>$rows_count){
    echo '·<span>»</span>';
    }else{
    echo '·<a href="?field='.$_GET['field'].'&sort='.$_GET['sort'].'&page='.$i.'" onclick="nextPageList(\''.($_SESSION['page_i']+$count_on_page).'\');">»</a>';
                   }
    $_GET['pagenumber']=$_SESSION['pagenumber'];

    ?>
                   </span>
                   </td>
                   <td>
                       <select name="perpage" onchange="document_collection_setbatching();">
                       <?php
                       for ($i=1;$i<4;$i++){
                        if ($i*10==$page_size){
                        echo "<option value=\"".($i*10)."\" selected=\"true\">".($i*10)."</option>";
                        }
                        else {echo "<option value=\"".($i*10)."\">".($i*10)."</option>";}
                      }
                       ?>
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 12 ноября 2008 г. 2:29, спустя 8 минут 28 секунд

    В общем в любом случае код надо отлаживать.
    Прежде всего вставлять отладочные печати, печатать запросы, печатать переменные и найти то место, где что-то теряется.
    Только так можно найти ошибки. И вот когда ты нашел проблемное место, можно несколько строчек скинуть на форум. Тогда здесь помогут.
    Я уже говорил, что не у одного гуру-программиста транслятор в голове не встроен и он в 99% не сможет найти ошибки глядя на большой кусок кода.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!