Каталог

Тема в разделе "PHP программирование", создана пользователем Alexygen, 7 авг 2006.

Статус темы:
Закрыта.
  1. Alexygen

    Alexygen Гость

    Подскажите, пожалуйста, как ограничеть колличество выводимой информации из базы до 30 строк, а если более 30, то внизу подписывать 1,2,3 страниц(ссылки) на следующе 30 и т.д.
    Вот код который выводит из базы данные:
    $select=mysql_query("select * from emails_send where user='$user_id' order by id asc") or die ("Íå âåðíûé ïóòü. Íå ìîãó âûáðàòü.");
    while ($line = mysql_fetch_array ($select))
    {
    extract($line);
    print"
    <tr>
    <td class=tab width=50 align=center>$id</td>
    <td class=tab width=200 align=left>$email</td>
    </tr>";
    }
     
  2. SKI

    SKI Гость

    Задаем колличество страниц:
    Код (Text):
    $onPage = 30;
    Наверное, лучше использовать цикл с параметром. Ограничиваем вывод информации:
    Код (Text):
    for ($i = 0; $line = mysql_fetch_array($select); $i++) {
    extract($line);
    if (($i >= $onPage * ($page - 1)) && ($i <= $onPage * $page - 1)) {
    print "<tr>
    <td class=tab width=50 align=center>$id</td>
    <td class=tab width=200 align=left>$email</td>
    </tr>";    
    }                      
    }
    Печатаем номера страниц.
    Код (Text):
    if (isset($page)) {
    if ($onPage <= 30) {
    for ($p = 1; $p <= (mysql_num_rows($select)-1)/30+1; $p++) {
    print '<a href="index.php?page='.$p.'">'.$p.'</a>';
    }
    }
    }
    Должно работать.
     
  3. Alexygen

    Alexygen Гость

    А чему равен $page? А то у меня получается пустая страница!
     
  4. Gisma

    Gisma Гость

    тебе нужны два запроса :
    1 - на получение количества записей в БД (SELECT count ...)
    2 - на ограничение вывода результатов из БД, для этого применяй квантификатор LIMIT
    select * from emails_send where user='$user_id' order by id asc LIMIT 60,30
    это запрос отдаст 30 из БД записей после полученной 60, как если бы квантификатора LIMIT не было
     
  5. SKI

    SKI Гость

    Необходимо постоянно передавать переменную $page, т.е. index.php?page=1

    Кстати, через LIMIT было бы удобнее. Я забыл, что он существует.
     
  6. Alexygen

    Alexygen Гость

    Для: SKI
    Спасибо! А как теперь сделать, чтобы при выводе страниц (1,2,3,4, ...) после 25 он ставил br и сслыку следующие 25 и ссылку следующая (>>) и предыдущая (<<), а после перехода на последнюю или первую ссылки << и >> исчезали взависимости от страницы (первой или последней)?
     
  7. j_man

    j_man Гость

    А ты не забыл с какой мы базой работаем? Это же новичек... Вот научишь его неправлинь мыслить и что потом?

    Лимит в запросе обязателен :(

    есть функция ceil, которая все это и делает :)
    ceil(mysql_num_rows($select)/30) - тот же эффект дает



    Ну и намутил... До "после 25 ставить <br>" все понятно.. А дальше... )) Вообщем, чтобы там ни было есть условный оператор "if" разработчики многих языков говорят что должен помочь.. ;)
     
  8. Alexygen

    Alexygen Гость

    А как его описать?
     
  9. SKI

    SKI Гость

    А с какой мы базой работаем?! Я ни чего не забывал. Все прекрасно понимаю. Учить ни кого не собирался. Код выдрал из своего старого фолио. Тогда я еще сам был новичком. Слегка поправил и все.
    Сейчас, в данной ситуации, использовал бы LIMIT.

    И что значит: "Вот научишь его неправлинь мыслить и что потом?". На самом деле, с логической точки зрения, код написан правильно, в нем нет ошибок. И разобравшись с ним, наверняка Alexygen узнал, что-то новое. Да и разбираться в нем, собственно, нечего, поэтому и учить было не чему.

    Наверное, имелось в виду, чтобы была возможность перемещаться постранично (назад, вперед), и возможность перемещаться на 25 страниц назад или вперед, и при переходе на последние 25 стр. ссылка "следующие 25" исчезла.

    Будет время, напишу. А сейчас:
    Работа - осуществление трудовой деятельности; совокупность задач и функций: - которые способен выполнять один человек; или - которые могут быть поручены одному человеку…
     
  10. j_man

    j_man Гость

    Для: SKI


    Да уж, не поспоришь, код действительно дает нужный нам результат. Вот только надеюсь сам понимаешь, что было бы если бы тутбай забыл пор свои LIMIT в запросе на вывод новостей например. (если не понимаешь, могу цифры привести) Так что LIMIT в нашей жизни неотъемлемый элемент (про него просто нельзя забывать никогда)
     
  11. SKI

    SKI Гость

    Для: j_man
    ) данное утверждение будет действительно верным по отношению к порталам или к сайтам приблизительно такого же масштаба, где есть необходимость в страницах или в ограничении на вывод, но зачем же ставить LIMIT если в таблице пару полей и сотка записей, где нет необходимости (при выводе) ставить стр., например прайс-лист? : Здесь он не нужен. Поэтому, далеко не в каждом случае нужно ставить LIMIT. Тем более, что его можно обойти, хотя и не рекомендуется. Из-за скорости обработки запроса, если это важно. Для TUT это важно, спорить не буду.
    Конечно, мы можем спорить до бесконечности. У каждого программиста свой опыт, свои знания, разные учителя, учебники и т.п. Но нужно помочь Alexygen, если есть возможно, помоги. Сейчас у меня ее нет.
     
  12. Alexygen

    Alexygen Гость

    Именно так, вот только я не знаю как это сделать! Помогите пожалуйста!!!
     
  13. j_man

    j_man Гость

    Я тебе помог бы, если не был настолько туп. Если ты мне обьяснишь что ты хочешь (а то я до сих пор это представить себе не могу), то я с удовольствием тебе помогу.

    Вот как я это понял:

    "Предыдущие 25 ...... 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 ...... Следующие 25"
    Причем при нажатии на страницу происходит подгрузка этой страницы, а при нажати на "следующие/предыдущие" происходит всего лишь подгрузка ссылок на соответствующие страницы (те что циферками посредине :) ), но не переход на новую страницу (т.е. основное содержимое не меняется, текущая страница остается текущей). Насколько правильно я понял ?

    ICQ: 337668625
     
  14. SKI

    SKI Гость

    Пример:
    http://bu.by/show.html?search_id=978923&am...=2&start=30
    Только добавь "предыдущие 25" и "следующие 25" :)
     
  15. Alexygen

    Alexygen Гость

    Это должно выглядеть так:

    <<предыдущие 25 <<предыдущая 1,2,3,4,5,6,7,8,9,10,....,25 следущая>> следующие 25>>

    1. открываются предыдущие 25 стр.
    2. открывается предыдущая стр.
    3. открытие по № стр.
    4. открывается следующая стр.
    5. открываются следующие 25 стр.



    Зарание ОГРОМНОЕ СПАСИБО за помощь!
     
  16. j_man

    j_man Гость

    Пусть у тебя в $page хранится номер текущей страницы и в $count кол-во всех страниц.

    Код (Text):
    if ($page > 25)
    {
    echo '<a href="?page='.($page-25).'"><<предыдущие 25</a> ';
    }

    if ($page - 1 > 0)
    {
    echo ' <a href="?page='.($page-1).'"><<предыдущая</a> ';
    }

    $start = intval(($page-1)/25)*25+1;
    $stop = ($start+25 < $count)?$start+25:$count;

    if ($start == $stop)
    {
    echo ' <b>'.$start.'</b> ';
    }

    for ($i = $start; $i < $stop; $i++)
    {
    if ($page != $i)
    {
    echo ' <a href="?page='.$i.'">'.$i.'</a> ';
    }
    else
    {
    echo ' <b>'.$i.'</b> ';
    }
    }

    if ($page < $count)
    {
    echo ' <a href="?page='.($page+1).'">следущая>></a> ';
    }


    if (ceil($page/25)*25 < $count)
    {
    echo ' <a href="?page='.(($page+25 <= $count)?$page+25:$count).'">следующие 25>></a>';
    }
    число 25 советую заменить на константу или переменную.
     
  17. Alexygen

    Alexygen Гость

    Почему?

    А как подсчитать колличество всех страниц?
     
  18. Alexygen

    Alexygen Гость

    Кто-нибудь ответьте пожалуйста на мой вопрос!!!
     
  19. j_man

    j_man Гость

    А ты хоть пробовал разобраться в том что тебе SKI написал... Если тебе просто нужен был скрипт, то попросил бы и не морочил голову тем, что якобы нужна помощь в написании

    mysql_num_rows - почитай о ней в мануале (мануал - это спецификация)
    могу выслать на мыло если сам не найдешь на http://php.net/

    еще есть функции count(), size() и т.д. Читай о них также в документации.
     
  20. Alexygen

    Alexygen Гость

    $count_email=mysql_query("select email from emails where user='$user_id' and spam=''") or die ("Не верный путь. Не могу выбрать.");
    $count_email_sum=@mysql_num_rows($count_email);


    Это я и так понял, а вот как их разбить на страницы? Т.е. записей 3000 на каждой странице по 30, соответственно должно получиться 100 ссылок, вопрос как разбить вывод $count_email_sum?
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей