За последние 24 часа нас посетили 30465 программистов и 1807 роботов. Сейчас ищут 800 программистов ...

Помогите с созданием скрипта новостей.

Тема в разделе "PHP для новичков", создана пользователем vano007, 15 апр 2010.

  1. vano007

    vano007 Активный пользователь

    С нами с:
    24 ноя 2009
    Сообщения:
    37
    Симпатии:
    0
    Опишите пожалуйста алгоритм скрипта, который мог бы создавать новую страницу с новостями, если на старой уже набралось определенное кол-во.
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    пейджер? ну чтобы циферками можно было листать?
     
  3. vano007

    vano007 Активный пользователь

    С нами с:
    24 ноя 2009
    Сообщения:
    37
    Симпатии:
    0
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  5. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Копай в сторону "постраничная навигация". Таких скриптов много.
    Вот, например, http://www.softtime.ru/info/articlephp. ... article=33. Только он немного "того", там есть небольшая ошибка, будешь использовать - обьясню как прикрутить.
     
  6. vano007

    vano007 Активный пользователь

    С нами с:
    24 ноя 2009
    Сообщения:
    37
    Симпатии:
    0
    Я хоу попробовать сам код написать и разобраться, а не использовать уже готовый вариант.
     
  7. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Дак иди разбирайся, чего тут-то пишешь?
     
  8. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    1. Получаем количество всех новостей в базе (запросом).
    2. Небольшая обработка динамически изменяемых переменных $start и $limit в зависимости от того какая сейчас страница активна ($page = 3, например).
    3. Запрос на вывод нужных нам 10 новостей (или сколько там нужно) в виде SELECT * FROM `news` ORDER BY `id` DESC LIMIT $start, $limit
    4. Построение меню для навигации (Первая - 1 2 3 ... Последняя).
    Так легче?))
    Тут объяснять больше займет чем сам код написать.
     
  9. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Всего страниц внизу - это общее количество записей, деленное на количество записей на страницу.
    Обозначив их математическими переменными получим:
    t = всего записей (например 110)
    w = записей на одну страницу (например 10)

    Всего страниц внизу = t / w (110 / 10 = 11)

    С какой страницы выбирать контент?
    Читаем массив _GET, заранее передав в нем страничку.
    Например - $_GET['page']

    Итого, если у нас третья страница, а записей на страницу 10, то мы должны вывести записи начиная с 20-ой и выбрать 10, так? Так.
    Соответственно - текущая страница, умноженная на кол-во записей на страницу.
    Но тут неувязочка - если страница 1, то 10*1=10, и выбрана будет 10-ая запись — плохо.
    Значит, нумерацию будем начинать с нуля - от _GET['page'] отнимем 1 и это число будем умножать на кол-во записей на страницу.

    Итог:

    Всего страниц = (количество общих записей) / (записей на страницу)
    Начало выборки = ((номер стр. из массива _GET) - 1) * (записей на страницу)).

    Там объяснять-то нечего, обычная арифметика класса этак второго.
     
  10. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
  11. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
  12. vuzy

    vuzy Активный пользователь

    С нами с:
    11 мар 2010
    Сообщения:
    199
    Симпатии:
    0
    Адрес:
    киев
    а не проще не арифметически а средствами пхп приставить 0 к номеру страницы и отнять 10 =)) и получить два числа старт и лимит.

    И в догонку вопрос созрел а если важно соблюдать хронологию обозначенную в новостях?
    Например есть новости:
    ид - название - контент - дата
    1 - новость 1 - какойто контент - сегодня
    2 - новость 2 - какойто контент - позавчера
    3 - новость 3 - какойто контент - вчера
    как сделать так что б новости выводились в хронологии сегодня, вчера, позавчера?
    SELECT * FROM `news` ORDER BY `дата` DESC LIMIT $start, $limit ????? дата в формате юникстайм
     
  13. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    у id если автоинкремент то просто выводить по id в обратном порядке
     
  14. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    [sql]DESC[/sql]
     
  15. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Padaboo
    [vs]

    По-моему, вы не так поняли. ВОзможно, автор имел ввиду вывод новостей за сегодня (то есть несколько статей, где date=16.04.2010), вчера (date=15.04.2010) и их может быть как ноль, так и неограниченно. Но автор хотел сам думать, потому... не мешаю)