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

Форум PHP

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

 

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

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

тема: Пагинатор
 
 автор: RuslanMRP   (30.09.2010 в 14:33)   письмо автору
 
 

Привет! Помогите. Такая проблема, выводит по поиску только на первой странице, на остольных страницах пусто. И еще проблема что выводит ссылки на все страницы.

Вот код:
<form action="poisk.php" method="post"> 
        <td><input type="text" name="poisk" class="form-text" maxlength="30" size="35" value="<? $_GET['poisk']; ?>Поиск по прайсу..." onblur="if(this.value=='') this.value='Поиск по прайсу...';" onfocus="if(this.value=='Поиск по прайсу...') this.value='';" border="0"></td> 
        <td width="10" height="25"> 
            <img src="images/1_19.jpg" width="10" height="25" alt=""></td> 
        <td width="38" height="25"> 
            <input  style="border:0px; width:38; height:25; background:url('images/1_20.jpg')" type="submit"  name="go1" value=""></td> 
</form> 





<?         
include "setup/opt.php"
mysql_select_db($DB); 
$poisk ''
     if (isset(
$_POST['poisk'])){ 
     
$poisk strip_tags($_POST['poisk']); 
     } 
      
     
$poisk trim($poisk); 
                            if (!empty(
$poisk)){ 
 
$count_per_page 16
 
$page 1


        
$result mysql_query('SELECT round(count(id)/' $count_per_page ') FROM PRICELIST'); 
   
$counts mysql_fetch_row($result); 
$page_max $counts[0]; 

if (!empty(
$_GET['page'])) { 
$page = (int) $_GET['page']; 
if (
$page $page_max
$page $page_max
if (
$page 1
$page 1

$poisk=addslashes($poisk); 

     
$result mysql_query ('SELECT * FROM PRICELIST WHERE nametovar LIKE "%'.$poisk.'%" LIMIT ' .(($page 1) * $count_per_page). ', ' .$count_per_page); 
       echo 
"<td valign='right width='12%' height='15px' align='center' bgcolor=#FFFFFF>Артикул</td> 
        <td valign='right width='28%' height='' align='center' bgcolor=#FFFFFF>Наименование изделий</td> 
        <td valign='right width='45%' height='' align='center' bgcolor=#FFFFFF>Описание</td> 
        <td valign='right width='10%' height='' align='center' bgcolor=#FFFFFF>Цена</td> 
        <td valign='right width='5%' height='' align='center' bgcolor=#FFFFFF>картинка</td>"

     
$libr mysql_num_rows($result); 
     if (
$libr!==0){ 

                           while (
$row mysql_fetch_assoc($result)){ 
    echo 
"</tr>"
        echo 
"<tr>"


    echo 
'<td align=left width=12% height=10% bgcolor=#FFFFFF>'.$row['artikul'].'</td><td width=28%  align=left bgcolor=#FFFFFF height=10px>'.$row['nametovar'].'</td><td width=45% align=left bgcolor=#FFFFFF height=10px>'.$row['opisanie'].'</td><td width=10% align=left bgcolor=#FFFFFF height=10px>'.$row['cena'].'</td><td width=5% align=left bgcolor=#FFFFFF height=5px><img src="kartinki/' $row['image'] .'" width=75px height=75px></td>'


 echo 
'</tr><tr><td align="center" colspan="6" bgcolor=#FFFFFF>'

for (
$i=1$i<$page_max; ++$i) { 
if (
$i != $page) { 
echo 
'<a href="?page=' $i '&poisk='.$poisk.'">'.$i.'</a> '

else { 

echo 
''.$i.' '
        } 
    } 
echo 
'</td>';  


?>

  Ответить  
 
 автор: heed   (01.10.2010 в 10:24)   письмо автору
 
   для: RuslanMRP   (30.09.2010 в 14:33)
 

>value="<? $_GET['poisk']; ?>Поиск по прайсу


$_GET['poisk'] не будет заполнен когда форма отправляется методом post


>$poisk = ''; 
     if (isset($_POST['poisk'])){ 
     $poisk = strip_tags($_POST['poisk']); 
     } 
      
     $poisk = trim($poisk); 


здесь наоборот при переходе по ссылкам $poisk = trim('');

> SELECT round(.....
что-то не вяжется с подсчётом колличества страниц , CEIL() или FLOOR() ещё понятно
к тому-же for ($i=1; $i<$page_max; ++$i) отталкивается от общего колличества записей а не от найденного
, не хватает что-то вроде SQL_CALC_FOUND_ROWS

  Ответить  
 
 автор: RuslanMRP   (01.10.2010 в 10:41)   письмо автору
 
   для: heed   (01.10.2010 в 10:24)
 

Не работает, передаю poisk как вы и сказали POSTом <? $_POST['poisk']; ?>

Вместо round(count(id) вставил ceil(id). По поводу SQL_CALC_FOUND_ROWS я так и не понял. В общем работае выводит по 16, но не показывает не одной ссылки на страницы.

Вы бы не могли наглядно привести пример как это правильно сделоть. Спасибо!

  Ответить  
 
 автор: heed   (01.10.2010 в 12:42)   письмо автору
 
   для: RuslanMRP   (01.10.2010 в 10:41)
 

я-бы просто сказал что надо переделать всё и форму под $_GET
, но надо переделать вообще всё.

>$poisk = strip_tags($_POST['poisk']);
это единственная фильтрация, того что, попадает в sql-запрос, притом ещё с like
// на вывод переменных в форме и из таблиц даже не смотрел

SELECT SQL_CALC_FOUND_ROWS * FROM PRICELIST ......
...

SELECT FOUND_ROWS()
получение колличества результатов предидущего запроса с SQL_CALC_FOUND_ROW как если-бы он был без LIMIT

  Ответить  
 
 автор: RuslanMRP   (01.10.2010 в 13:41)   письмо автору
 
   для: heed   (01.10.2010 в 12:42)
 

Ничего не понимаю. ПОМОГИТЕ НАПИСАТЬ!!!!!!!! ОЧЕНЬ НУЖНО!

  Ответить  
 
 автор: heed   (01.10.2010 в 15:12)   письмо автору
 
   для: RuslanMRP   (01.10.2010 в 13:41)
 

чего немогу - того не могу. сейчас мои последние секунды здесь на ближайшие пару дней точно :)

Вообще не понимаю как можно что-то делать без кипы мануалов на диске.
Хотя как-то раньше чуть заслышав какое-нибудь SQL_CALC_FOUND_ROWS сразу-же его в гугль заряжал.
кстати вполне возможно даже здесь на форуме какие куски кода по темам уже появлялись.
а так я-бы fulltext использовал, если конечно в прайселистах там не одни и те-же слова через строчку.

  Ответить  
 
 автор: Николай2357   (01.10.2010 в 17:31)   письмо автору
 
   для: RuslanMRP   (01.10.2010 в 13:41)
 

>>Ничего не понимаю. ПОМОГИТЕ НАПИСАТЬ!!!!!!!! ОЧЕНЬ НУЖНО!
Вот готовый, пользуйтесь

  Ответить  
 
 автор: RuslanMRP   (02.10.2010 в 11:49)   письмо автору
 
   для: Николай2357   (01.10.2010 в 17:31)
 

БОЛЬШОЕ СПАСИБО!!!!!!!! ОЧЕНЬ БЛАГОДАРЕН!

  Ответить  
Rambler's Top100
вверх

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