Вопрос по постраничному выводу информации

shanhaichik

Новичок
Добрый день.
Ситуация следующая. Есть база данных с товарами (SQL). Я на данный момент работаю над поиском по параметрам и выводом результатов поиска постранично. С самим поиском проблем нет, все работает как надо, но с потсраничным выводом есть трудности. Когда делаешь запрос он выводит первые 25 позиций, высчитывает количество страниц и то же выводит, но когда нажимаешь на переход на следующую страницу, все сбрасывается. Понимаю что вопрос,скорей всего глупый, так как я только недавно всем этим начал заниматься, но буду рад любым советам или наводкам где посмотреть.
Заранее спасибо.

Вот пример кода.
PHP:
$db = new db();
  if (isset($_POST['name'])) {
    $name = mysql_real_escape_string($_POST['name']);
    $width = mysql_real_escape_string($_POST['width']);
    $height = mysql_real_escape_string($_POST['height']);
    $depth = mysql_real_escape_string($_POST['depth']);
    $group = mysql_real_escape_string($_POST['group']);
    $price_start = mysql_real_escape_string($_POST['price_start']);
    $price_end = mysql_real_escape_string($_POST['price_end']);
  
  //строим поисковый запрос
    $result ="SELECT * FROM katalog WHERE nazvanie LIKE '%" . $name . "%' AND width LIKE '%" . $width . "%'  AND height LIKE '%" . $height . "%' AND depth LIKE '%" . $depth . "%' AND id_group LIKE '%" . $group . "%' AND ".$price_start ." <= price  AND price <= ".$price_end ." " ;
    $row = $db->select_list($result);
    $elements = 25;
    $num = 1;
    if (is_numeric($_GET['str'])) $num = $_GET['str'];
    $cols = count($row);
    $cols = $cols/$elements;
    $col = ceil($cols);
    $pageoff = $elements*$num;
    $pageon = $pageoff-$elements;
    $prov = count($row);
    if ($pageoff>$prov) $pageoff = $pageoff-($pageoff-$prov);
     
    
    //Выводим номера страничек
    for ($pagen=1; $pagen<=$col; $pagen++)  
     if ($pagen==$num) @$str .= $pagen;
     else @$str .= "<a href=?$pagen>$pagen</a> ";   
    echo $str."<br>";    

    for ($x=$pageon; $row[$x]==true, $x<$pageoff; $x++){
      
      echo  '
        <div class="res">
        <a href="/catalogue/'.$row[$x]["id_group"].'/'.$row[$x]["id_komplekt"].'/'.$row[$x]["id_tovar"].'/" target="_blank"><img src="/'.$row[$x]["pic"].'"  style="height:80px;"></a>
        <p><b>'.$row[$x]["nazvanie"].'</b></p>
        <p><b>Цена:</b> '.$row[$x]["price"].' руб.</p>
        </div>';  
   } 

   
  }
 

С.

Продвинутый новичок
Во-первых, любую программу надо отлаживать. если она ведет себя не так как ожидается. То есть проверять на каждом шаге ее состояние и сравнивать с тем, что предполагается.

Во-вторых, (хотя это не влияет на работоспособность программы в приницпе) совсем нет необходимости тянуть из базы все строки, если будет показываться только малая часть из них. Запросить можно данные только для необходимой страницы.
 
Сверху