и еше одна
Прочитал я статейку известного всем DDeveloper’a по той же теме. Рассудив что материала по этой теме и правда очень мало, я решил написать еще одну статью на эту тему. Действительно, а почему бы и нет? Тем более, что я использую совсем иные конструкции и методы вывода информации. К тому же в своей статье DDeveloper описал общие принципы, не вдаваясь в подробности и тонкости. Стоит это исправить.
Так, только не надо хвататься сразу за свой PhpExpertEditor (или что ты там используешь?). Во превых, стоит поговорить о творческой стороне проблемы. Ты пишешь скрипт, а это процесс весьма и весьма творческий. Замечу, что я не собираюсь выкладывать тебе код скрипта с комментариями на блюдечке. Я лишь хочу помочь тебе найти путь истинный

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

Итак, первое правило, ни когда не пиши скриты в душных помещениях. Прежде чем садиться за комп проветри помещение, наполни его азоном и кислородом. Выпей чего-нибудь холодного. Да, нет не пива. Лучше миниральной воды нету ни чего. Обязательно поставь что-нибудь из mp3, ну если у нет отвращения к музыке

Не надо ставить ни чего долбящего и громкого. Поставь что-нибудь мелодичное, приятное. Знал я одного парня так он все под Чайковского с Битховиным писал

Ну я думаю морально к написанию скрипта ты готов, приступаем.
C чего стоит начать? Могу тебя заверить, что самым верным решением будет начать с начала

Так как скрипт мы будем писать для вывода информации из БД, то для начала создай в ней таблицу с именем info, например. В таблице должно быть как минимум три поля, назови их id(тип int), str(тип text) и date(тип datetime). Поле id должно быть самовозростающим. Создай в этой таблице какое-то колличество записей. Не скупись, создай штук двадцать рядов. Итак теперь мы можем ставить конкретные цели. Имея двадцать записей, мы хотим чтобы они выводились по пять штук на странице. Если ты в танке, то подсказываю страница будет одна, просто выводить она будет то что мы захотим

Стоит описать сам процесс вывода записей. Казалось бы, что может быть проще? Ан нет, не надо торопиться. Скрипт то долже быть динамическим на все сто. Создай переменную которая будет содержать колличество записей на странице :
$mess_on_page = “5”;
Далее нам понадобится переменная которая определит с какой записи извлекать информацию из таблицы. Определим эту переменную вот так :
$first_mess = ceil($mess_on_page*($page-1));
Без паники

Я знаю, что переменная $page тебе не знакома. Давай по порядку. Забегая не много вперед скажу лишь, что она содержит номер страницы. Вернемся к $first_mess. Что эта переменная значит? На первой странице должны выводиться записи с самой первой по шестую. Но самая первая запись в таблице имеет индекс 0 и по этому надо извлечь записи с нулевой по пятую. На второй странице с пятой по десятую и т.д.. Теперь я думаю все ясно. Для тех кто в танке поясняю, номер страницы 1, мы его уменьшаем на единицу и умножаем на колличество записей на странице.
Запустив этот скирпт ты получишь вполне ожидаемое сообщение об ошибке. Переменная $page у нас не указана, от этого и ошибка. В дальнейшем скрипт будет получать эту переменную из урлки, которую мы должным образом сгенерируем, так что проблем не будет. Но как быть если человек попал на страничку каким-то неведомым нам путем? Используй следующую конструкцию :
if (isset($page)) {
}
else {
$page = "1";
};
То есть если переменная $page присутствует, то ее значение не меняется. А если такая переменная не указана, то ей присваевается значение 1. Что дальше? Теперь мы можем со спокойной душой извлекать нужные записи. Это будет происходить с при помощи знакомых функции. Я лишь добавлю, что сортировать записи мы будем по полю id в обратном порядке, используя параметр desc. Вот как это будет выглядеть :
$info_sel = mysql_query("select * from info order by id desc limit $first_mess,$mess_on_page");
while ($info = mysql_fetch_array($info_sel)) {
print("
Номер записи $info[id] - $info[str] – дата $info[date]
");
};
Тут все понятно? Единственное где может возникнуть непонятка, это место limit. Тут нет ни чего сложного. Можешь за место наших переменных записать какие то цифры, потренероваться с ними. Переменные я там использовал только потому что скрипту не известно какие записи придется извлекать.
Как вывести нужные записи я вроде как объяснил. Теперь надо сгенерировать ссылки на все странички. Для этого нам нужно знать сколько у нас всего записей. Делаем это так :
$col_info = mysql_num_rows(mysql_query("select * from info"));
Извлекаем из нашей таблицы все записи и подсчитывае их – тут все просто. Но это колличесво записей, а нам надо знать в добавок и колличесво страничек. Я думаю ты уже догадался как это сделать. Создаем следующую переменную :
$col_page = ceil($col_info/$mess_on_page);
Просто на просто делим общее колличество записей на колличество записей, которое должно быть на одной странице. Вот теперь то мы и переходим к самому главному. К генерации ссылок. Тут то у нас и появляется присловутая переменная $page. Так же отмечу, что та страница на которой мы находимся не будет выводится в виде ссылки. Внимание :
for ($i=1; $i<$col_page+1; $i++) {
if ($page==$i) {
print(" $i ");
}
else {
print(" $i ");
};
};
Все понятно? Если ты внимательно читал всю статью, то думаю, да. Для танкистов поясняю, мы сравниваем переменную $page с переменной $i – момент когда они равны – это текущая страница

В остальных случаях мы создаем ссылки на наш скрипт, нажав на которую человек попадает на ту же самую страницу, но уже с новым значением переменной $page.
Уяснил все тонкости? Наверное сидишь и думаешь сейчас над некоторыми непонятками и надуманными заморочками. А ты знаешь, ты прав и тебе это не кажется и не тебе одному

Я нарочно перемудрил кое-где. Я сделал это только для того чтобы ты имел пищу для размышления. Ведь наверняка ты не станешь хвастаться перед друзьями таким ужасным скриптом, а напишешь свой более интересный, более изящьный и тонкий. А я за тебя только порадуюсь. Удачи! Если будут проблемы пиши мне на мыло, может я отвечу
