Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вывод результатов поиска постранично, поделить все на страницы 
:(
    Опции темы
americanets
Дата 25.11.2006, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



Как при выводе результатов поиска поделить все на страницы, например по 10 результатов?


<?
$poisk=$_GET['q'];
$poisk=trim($poisk);

$query="SELECT * from content where content LIKE '%$poisk%'";
$query = mysql_query($query) or die (mysql_error());



WHILE ($dat=mysql_fetch_array($query))
     {
    
    print "<li>".$dat[content];
    
    
    }
    $number = mysql_numrows($query);
    print "<br> всего найдено".$number;
?>


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Piphon
Дата 25.11.2006, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 30.3.2004
Где: Екатеринбург

Репутация: 2
Всего: 2



Темка, там еще что-то есть

Код

function string_spliter($index, $count, $delimiter, $href_link, $count_list = 10)
    {
        $max_c = intval($count_list / 2) - 1;
        //$text .= '<center>';
        
        if ($count <= $delimiter)
        {
            return ; 
        }
        else
        {
            $max_int = intval($count / $delimiter);
            $max     = $count / $delimiter;
            $c_max = $max > $max_int ? $max_int + 1 : $max_int;
            
            if ($max_int > ($max_c * 2 + 1))
            {
                $r_min = ($index - $max_c >= 1)      ? $index - $max_c : 1     ;
                $r_max = ($index + $max_c <= $c_max) ? $index + $max_c : $c_max;
                
                if ($r_min < $max_c + 1)
                {
                    $r_max = $r_min + $max_c + $max_c;
                }
                
                if ($r_max - $r_min < $max_c * 2 )
                {
                    $r_min = $r_max - $max_c - $max_c ;
                }
            }
            else
            {
                $r_min = 1;
                $r_max = $c_max;
            }
            
            $r_min = $r_min < 1      ? 1      : $r_min;
            $r_max = $r_max > $c_max ? $c_max : $r_max;
            
            if ($index > 1)
            {
                $link = str_replace('(%)', $index - 1 , $href_link);
                $array[] = '<a href="' . $link . '">&laquo;</a> ';
            }
            else
            {
                $array[] = '&nbsp;';
            }
            
            for ($i = $r_min; $i <= $r_max; $i++)
            {
                $link = str_replace('(%)', $i, $href_link);
                $t = ($i == $index) ? $i . ' ' : "<a href='$link'>$i</a> ";
                $array[] = $t;
            }
            
            if ($index < $c_max)
            {
                $link = str_replace('(%)', $index + 1 , $href_link);
                $array[] = '<a href="' . $link . '">&raquo;</a>';
            }
            else
            {
                $array[] = '&nbsp;';
            }
            
        }
        
        if (is_array($array))
        {
            $text = '<center><table><tr>';
            foreach ($array as $cell)
            {
                $text .= '<td>' . $cell . '</td>';
            }
            $text .= '</tr></table></center>';
        }
        
        return $text;
    }

  $step = $_GET['step'];
  $step = $step == null ? 1 : $step;
  $text = string_spliter($step, 120, 10, '?step=(%)');


  $index       = номер страницы;
  $count       = общее число элементов;
  $delimiter  = количество элементов на странице;
  $href_link  = шаблон ссылки где (%) - подстановка номера страницы;
  $count_list= количество ссылок на другии листы помимо активного;

Это сообщение отредактировал(а) Piphon - 25.11.2006, 16:06
--------------------
Non Progredi Est Regredi...
PM MAIL ICQ   Вверх
americanets
Дата 25.11.2006, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



буду пробовать, спасибо


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
americanets
Дата 25.11.2006, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



что то много всего сложно разобраться, а по проще можно посмотреть с тем кодом которым я ищу как я понял нужно LIMIT прикрутить и сформировать ссылки ? 


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Piphon
Дата 25.11.2006, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 30.3.2004
Где: Екатеринбург

Репутация: 2
Всего: 2



Код

  // Нам нужно количество строк в выборке
  $query="SELECT COUNT(*) from content where content LIKE '%$poisk%'";
  $result = mysql_query($query) or die (mysql_error());
  $row    = mysql_fetch_row($result);
  $count = $row[0];

  // Выдераем из запроса данные и фильтруем их
  $poisk=$_GET['q'];
  $poisk=trim($poisk);

  $index = (int) $_GET['step'];
  $index = $index > 0 ? $index : 1;

  // Устанавливает максимальное количество отображаемых строк на одной странице
  $delimiter = 3;
  // Находим первый элемент из запроса
  $start = ( $index - 1 ) * $delimiter;

  // Запрос к базе
  $query="SELECT * from content where content LIKE '%$poisk%' LIMIT $start, $delimiter ";
  $query = mysql_query($query) or die (mysql_error());
     
     // Вывод 1 2 3 4 5 6 >> или << 3 4 8 5 6 >> c сылкой в виде имя_скрипта?step=0
     echo string_spliter($step, $count, $delimiter, "?step=(%)&q=$poisk");

      WHILE ($dat=mysql_fetch_array($query))
     {
         print "<li>".$dat[content];
      } 
      print "<br> всего найдено ".$count;


Вот так у меня:
user posted image
--------------------
Non Progredi Est Regredi...
PM MAIL ICQ   Вверх
americanets
Дата 26.11.2006, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



пасибо, сделал немного по другому, но вроде работает


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0562 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.