Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Доска объявлений
 
 автор: dafsan   (28.07.2004 в 11:13)   письмо автору
 
 

Гостевая книга работает отлично, но появилась необходимость расширить ее возможности до Доски объявлений. Есть ли возможность добавить разделы куплю/продам, подскажите как это сделать.
И еще, как сделать разбиение объявлений по страницам, по 20 на странице.
Заранее благодарю.

   
 
 автор: Andron   (28.07.2004 в 16:48)   письмо автору
 
   для: dafsan   (28.07.2004 в 11:13)
 

Количество страниц +предыдущая + следующая:

<?php
// news.php - наша страница
//$start - начиная с какой позиции выводим новости
//$total - количество сообщений из бд
//$all_number_news - сколько выводим на страницу

          
if ($total/$all_number_news == bcdiv ($total,$all_number_news))
                      
$num_pages bcdiv ($total,$all_number_news);
                     else
                      
$num_pages bcdiv ($total,$all_number_news)+1;

            echo 
"<center><br>";
                   if (
$num_pages 1)
                    {

                       if (
$start/$all_number_news 0)
                        {
                            echo 
"<A href=\"news.php?start=".($start-$all_number_news)."\">";
                            echo 
"[ Предыдущая ]";
                            echo 
"</a>";
                        }
                       else
                            echo 
"<font style=\"color:#f6f8fa;\">[ Предыдущая ]</font>";

                       echo 
"   ";

                       for (
$i 0$i $num_pages$i++)
                         {
                          if (
$i == $start/$all_number_news)
                           {
                             echo 
"<b>";
                             echo 
$i+1;
                             echo 
"</b>";
                           }
                          else
                           {
                             echo 
"<A href=\"news.php?start=".($i*$all_number_news)."\">";
                             echo 
$i+1;
                             echo 
"</a>";
                           }
                          echo 
"   ";
                         }

                       if (
$start/$all_number_news $num_pages-1)
                        {
                            echo 
"<A href=\"news.php?start=".($start+$all_number_news)."\">";
                            echo 
"[ Следующая ]";
                            echo 
"</a>";
                        }
                       else
                            echo 
"<font style=\"color:#f6f8fa;\">[ Следующая ]</font>";

                    }
         echo 
"</center>";
?>


Будут вопросы - задавайте.

   
 
 автор: elenaki   (28.07.2004 в 17:26)
 
   для: Andron   (28.07.2004 в 16:48)
 

есть у меня постраничный вывод в виде 1 | 2 | 3 | ...
на каждой странице определенное количество записей из базы.
а сейчас мне приспичило сделать вот так, как здесь:

http://gds2002.narod.ru/articles/navbar/nav.html

но этот скрипт у меня не работает, там ошибка в орфографии, мне не найти :(
помогите!

   
 
 автор: cheops   (28.07.2004 в 18:43)   письмо автору
 
   для: elenaki   (28.07.2004 в 17:26)
 

Старнный скрипт - скачал архив - один JavaScript... Так и не понял как там PHP приплетается :))) Тут в соседней ветке Axxil предлагает решение для постарничного вывода. Или имеется ввиду подстветка жирным текущей страницы?

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=116&page=1

   
 
 автор: elenaki   (28.07.2004 в 21:17)
 
   для: cheops   (28.07.2004 в 18:43)
 

нет. подсветка мне не нужна. мне нужно, чтобы постранично выводились результаты запроса, но группами - по 10 штук, а по бокам - предыдущая и следущая группа, если есть, конечно.

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

если интересно, можете посмотреть, как я сделала:
http://www.pol.org.gr
сейчас там 5 страниц по 10 статей. но количество их растет не по дням, а по часам... и скоро шеф скажет - сделай как у конкурентов:
http://www.e-forologia.gr

я не прошу делать за меня мою работу. просто подскажите алгоритм. хоть в каком направлении двигаться.

   
 
 автор: cheops   (28.07.2004 в 21:46)   письмо автору
 
   для: elenaki   (28.07.2004 в 21:17)
 

А... правильно ли я понял, что нужна примерно следующая конструкция:
предыдущие 10|11|12|13|14|15|16|17|18|19|20 следующие
т.е. посетитель загружает страницу по адресу index.php?id=15, при этом отображаются ссылки на 5 страниц влево, и на 5 страниц вправо... на все остальные страницы слева и справа отображаются ссылки предыдущие и следующие.
1) Тогда, вычисляем id-5 если это число меньше нуля выводим ссылки на страницы от 0 до id, в противном случае выводим ссылки от id-5 до id и ссылку предыдущие.
2) Вычисляем id+5, если это число больше числа всех страниц (max) выводим после id ссылки от id до max, если меньше, то после id выводим ссылки от id до id+5 плюс ссылка на следующие страницы.

   
 
 автор: elenaki   (27.08.2004 в 13:32)
 
   для: cheops   (28.07.2004 в 21:46)
 

ура!!!!! я сделала! www.pol.org.gr
успела! а то статьи валятся в базу, а у меня никак руки не доходили навигацию подправить.
еще немного, и не влезли бы в одну строку все номера страниц...
кстати, вам тоже такое понадобится, когда число тем форума приблизится к 1500.

спасибо! :)

   
 
 автор: cheops   (27.08.2004 в 14:46)   письмо автору
 
   для: elenaki   (27.08.2004 в 13:32)
 

>кстати, вам тоже такое понадобится, когда число тем форума
>приблизится к 1500.

Пожалуй... /*на внутреннем у нас давно уже всё улезло на третью строчку :)))*/

   
 
 автор: elenaki   (27.08.2004 в 16:29)
 
   для: cheops   (27.08.2004 в 14:46)
 

усовершенствованный постраничный вывод:
теперь выводятся только 9 номеров страниц (можно изменить).
и, если страниц больше, выводятся ссылки на Пред/След и на
Начало/Конец.

<?
$lines_per_page = 10; //количество строк на странице
$all_lines = 290; // всего записей в базе (это мы узнаем из запроса, здесь я его не делаю для краткости)
//проверяем, установлен ли номер страницы
if (!isset($pageview) or empty($pageview) or $pageview<=0) $pageview=1;
else $pageview=(int)$pageview;
//для запроса уменьшаем номер на 1
$page_for_query = $pageview-1;
//с какой позиции начинать считывать данные
$lpos = $page_for_query * $lines_per_page;
//всего страниц с округлением в большую сторону
$count_pages = ceil($all_lines / $lines_per_page);
//сколько номеров страниц показывать ДО и ПОСЛЕ текущей (включая ее саму)
$block = 5;
//число номеров страниц, отображаемых ДО текущей
$prin = $pageview - $block;

// для справки
echo " всего записей в базе: ".$all_lines."<br><br>";
echo " строк на странице: ".$lines_per_page."<br><br>";
echo " всего страниц: ".$count_pages."<br><br>";

if (($prin < 0) && ($pageview > 1))
{$pred = $pageview - 1;
echo "<a href=\"$PHP_SELF?pageview=1\">&laquo;&nbsp; Начало </a>&nbsp;|&nbsp;";
echo "<a href=\"$PHP_SELF?pageview=$pred\">&laquo;&nbsp; Пред</a>&nbsp;|&nbsp;";
for ($i = $pageview - 1; $i > 0; $i--)
{$nomer = $pageview-$i;
echo "<a href=\"$PHP_SELF?pageview=$nomer \">$nomer</a>&nbsp;|&nbsp;";}
}

if (($prin >= 0) && ($pageview > 1)) {
$pred = $pageview - 1;
echo "<a href=\"$PHP_SELF?pageview=1\">&laquo;&nbsp; Начало </a>&nbsp;|&nbsp;";
echo "<a href=\"$PHP_SELF?pageview=$pred\">&laquo;&nbsp; Пред </a>&nbsp;|&nbsp;";
for ($i = $block - 1; $i >= 1; $i--)
{$nomer = $pageview-$i;
echo "<a href=\"$PHP_SELF?pageview=$nomer \">$nomer</a>&nbsp;|&nbsp;";}
}

echo $pageview."&nbsp;|&nbsp;"; // на текущую страницу не нужна ссылка

//число номеров страниц, отображаемых ПОСЛЕ текущей
$meta = $pageview + $block;
if (($meta > $count_pages) && ($pageview < $count_pages)) {
$sled = $pageview + 1;
for ($i = $pageview+1; $i <= $count_pages; $i++)
{$nomer = $i;
echo "<a href=\"$PHP_SELF?pageview=$nomer \">$nomer</a>&nbsp;|&nbsp;";}
echo "<a href=\"$PHP_SELF?pageview=$sled \"> След &raquo;</a>&nbsp;|&nbsp;";
}

if (($meta <= $count_pages) && ($pageview < $count_pages))
{$sled = $pageview + 1;
for ($i = $pageview + 1; $i < $meta; $i++)
{$nomer = $i;
echo "<a href=\"$PHP_SELF?pageview=$nomer \">$nomer</a>&nbsp;|&nbsp;";}
echo "<a href=\"$PHP_SELF?pageview=$sled \"> След &raquo;</a>&nbsp;|&nbsp;";
echo "<a href=\"$PHP_SELF?pageview=$count_pages\">&nbsp; Конец &nbsp;&raquo;</a>&nbsp";
}
?>

если где-то ошиблась или можно по-другому написать, исправляйте

   
 
 автор: elenaki   (28.07.2004 в 21:19)
 
   для: cheops   (28.07.2004 в 18:43)
 

а текст PHP-скрипта там на странице. и Java тоже, и CSS.
я со страницы брала. ругается, говорит, где-то скобки не хватает,
но вроде все скобки на месте... наверно, из-за кавычек... не знаю.

   
 
 автор: cheops   (28.07.2004 в 17:04)   письмо автору
 
   для: dafsan   (28.07.2004 в 11:13)
 

В конфигурационном файле config.php значение переменной $pnumber = 20; (если вы используете файловый вариант - следует загрузить новую версию 1.2.0).
А под доской объявления что подразумевается? У буржуев message board - это форум: многофункциональная гостевая с возможностью авторизации...

http://www.softtime.ru/info/downloads.php

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования