Каталог

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

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

    Alexygen Гость

    Репутация:
    0
    Подскажите, пожалуйста, как ограничеть колличество выводимой информации из базы до 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 Гость

    Репутация:
    0
    Задаем колличество страниц:
    Код:
    $onPage = 30;
    Наверное, лучше использовать цикл с параметром. Ограничиваем вывод информации:
    Код:
    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>";		
    }						
    }
    Печатаем номера страниц.
    Код:
    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 Гость

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

    Gisma Гость

    Репутация:
    0
    тебе нужны два запроса :
    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 Гость

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

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

    Alexygen Гость

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

    j_man Гость

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

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

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



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

    Alexygen Гость

    Репутация:
    0
    А как его описать?
     
  9. SKI

    SKI Гость

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

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

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

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

    j_man Гость

    Репутация:
    0
    Для: SKI


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

    SKI Гость

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

    Alexygen Гость

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

    j_man Гость

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

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

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

    ICQ: 337668625
     
  14. SKI

    SKI Гость

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

    Alexygen Гость

    Репутация:
    0
    Это должно выглядеть так:

    <<предыдущие 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 Гость

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

    Код:
    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 Гость

    Репутация:
    0
    Почему?

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

    Alexygen Гость

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

    j_man Гость

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

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

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

    Alexygen Гость

    Репутация:
    0
    $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?
     
Загрузка...
Статус темы:
Закрыта.

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