[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Скрипт постраничного вывода товара из БД
mjc66
Поставил скрипт постраничного вывода товара из БД по запросу к определенной группе товара. На первой странице первые 50-т наименований выводятся правильно, а вот на остальные 5-ть выводятся теже самые первые 50-т. В чем ошибка? Вот код скрипта:
Код
<?php  
// Устанавливаем соединение с базой данных  
include "config_mysql.php";
//переменная
$group_production = ($_GET['group_production'])?$_GET['group_production']:'ГСО(Государственные Стандартные Образцы)';
?>
<style>  
    .cell_1{background:99FFCC}  
    .cell_2{background:FFFFCC}  
</style>

<table border='1' cellspacing='1' cellpadding='1' class='3'>
    <tr>
        <td class='3' align='center'>
            <b>Наименование товара</b>
        </td>
    </tr>
<?php  
// Переменная хранит число товарных позиций выводимых на странице  
$num = 50;  
// Извлекаем из URL текущую страницу  
$page = $_GET['page'];  
// Определяем общее число товарных позиций в базе данных  
$result = mysql_query("SELECT COUNT(*) FROM tovary");  
$result = mysql_fetch_row($result);  
// Находим общее число страниц  
$total = intval(($result[0] - 1) / $num) + 1;  
// Определяем начало товарных позиций для текущей страницы  
$page = intval($page);  
// Если значение $page меньше единицы или отрицательно  
// переходим на первую страницу  
// А если слишком большое, то переходим на последнюю  
if(empty($page) or $page < 0) $page = 1;  
  if($page > $total) $page = $total;  
// Вычисляем начиная к какого номера  
// следует выводить товарные позиции  
$start = $page * $num - $num;  
// Выбираем $num сообщений начиная с номера $start  
$result = mysql_query("SELECT * FROM tovary WHERE group_production = 'ГСО(Государственные Стандартные Образцы)' LIMIT $start, $num");  
// В цикле переносим результаты запроса в массив  
while ($arResult = mysql_fetch_array($result)):
    $i++;
?>
    <tr class='cell_<?=($i%2)+1;?>'>
        <td>
            <?=$arResult['name'];?>
        </td>
    </tr>
<?endwhile;?>
</table>




Спустя 2 минуты, 19 секунд (31.08.2007 - 15:07) Dagdamor написал(а):
А как выглядят ссылки на другие страницы (2-я, 3-я)?

Спустя 5 минут, 5 секунд (31.08.2007 - 15:12) mjc66 написал(а):
Цитата(Dagdamor @ 31.8.2007, 16:07) [snapback]26626[/snapback]
А как выглядят ссылки на другие страницы (2-я, 3-я)?

Ты имеешь в виду панель постраничной навигации?

Спустя 3 минуты, 42 секунды (31.08.2007 - 15:15) Dagdamor написал(а):
Да. Скопируй ссылку на 2-ю страницу и запости здесь, возможно проблема в ней.

Спустя 2 минуты, 39 секунд (31.08.2007 - 15:18) mjc66 написал(а):
Ты имеешь в виду панель постраничной навигации?

Спустя 2 минуты, 2 секунды (31.08.2007 - 15:20) Dagdamor написал(а):
Да! smile.gif

Спустя 43 секунды (31.08.2007 - 15:21) mjc66 написал(а):
Вот:
Код
<?php
include "config_mysql.php";
include "conclusion_sss.php";
    
// Проверяем нужны ли стрелки назад    
if ($page != 1) $pervpage = ' <a class="1" href= www.el-eko.ru/State_Standard_Samples.php?page=1'. ($page - 1) .'><</a>';

// Проверяем нужны ли стрелки вперед  
if ($page != $total) $nextpage = ' <a title="Следующая" class="1" href= www.el-eko.ru/State_Standard_Samples3.php?page=3'. ($page + 1) .'>></a>
                                   <a title="В конец" class="1" href= www.el-eko.ru/State_Standard_Samples6.php?page=6'. $total .'>>></a>';  

//Находим две ближайшие страницы с обоих краев, если они есть
if($page - 1 > 0) $page11eft = ' <a class="1" href= www.el-eko.ru/State_Standard_Samples.php?page=1'. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 2 <= $total) $page2right = ' | <a class="1" href= www.el-eko.ru/State_Standard_Samples4.php?page=4'. ($page + 2) .'>'. ($page + 2) .'</a>';  
if($page + 1 <= $total) $page1right = ' | <a class="1" href= www.el-eko.ru/State_Standard_Samples3.php?page=3'. ($page + 1) .'>'. ($page + 1) .'</a>';

// Вывод меню  
echo $page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;  

?>

Спустя 5 минут, 21 секунда (31.08.2007 - 15:26) Dagdamor написал(а):
Видимо, проблема в пробеле между "href=" и ссылкой.
Во-первых, пробелов между названием параметра и значением быть не должно.
Во-вторых, ссылка должна начинаться с http://www, а не с www.
В-третьих, значение параметра нужно заключать в двойные кавычки.

Т.е. должно быть так: <a href="http://www.el-eko.ru/State_Standard_Samples4.php?page=' . (здесь номер страницы) . '">

Спустя 11 минут, 31 секунда (31.08.2007 - 15:38) mjc66 написал(а):
Спасибо!!! А как исправить ошибки которые мне выдает Апач:

Notice: Undefined index: group_production in C:\apache\test.ru\www\conclusion_sss.php on line 5

Notice: Undefined index: page in C:\apache\test.ru\www\conclusion_sss.php on line 22

Notice: Undefined variable: i in C:\apache\test.ru\www\conclusion_sss.php on line 42

Вот эти строки:
Код
$group_production = ($_GET['group_production'])?$_GET['group_production']:'ГСО(Государственные Стандартные Образцы)';

Код
$page = $_GET['page'];

Код
while ($arResult = mysql_fetch_array($result)):
    $i++;

Спустя 24 минуты, 6 секунд (31.08.2007 - 16:02) md5 написал(а):
заюзать isset()
Код
$group_production = (isset($_GET['group_production']))?$_GET['group_production']:'ГСО(Государственные Стандартные Образцы)';

и так для всех

Спустя 19 минут, 4 секунды (31.08.2007 - 16:21) mjc66 написал(а):
С 5-й и 22-й строками вопрос решился положительно, а вот с 42
Код
isset($i++)
ничего не выходит. Пишет что:
Parse error: syntax error, unexpected T_INC, expecting ',' or ')' in C:\apache\test.ru\www\conclusion_sss.php on line 42

Спустя 20 минут, 19 секунд (31.08.2007 - 16:41) md5 написал(а):
ааа.. сообщение не долетело

для $i

перед циклом определи её ёпт...

Спустя 11 минут, 36 секунд (31.08.2007 - 16:53) mjc66 написал(а):
Т.е. перед строкой
Код
while ($arResult = mysql_fetch_array($result)):
    $i++;
, поставить
Код
$i = 0;
?не
Код
$i = 1;
?

Спустя 23 минуты, 27 секунд (31.08.2007 - 17:16) md5 написал(а):
тебе виднее

Спустя 14 минут, 24 секунды (31.08.2007 - 17:31) mjc66 написал(а):
Да я "чайник" в php и боюсь ошибиться, т.к. различия в $i=0 или $i=1 не понимаю но судя из концепции всего скрипта , что нужно ставить?

Спустя 12 минут, 36 секунд (31.08.2007 - 17:43) md5 написал(а):
блин ну я откуда знаю?
я ж не вижу где она используется!
ставь 0 =)

Спустя 3 часа, 16 минут, 37 секунд (31.08.2007 - 21:00) mjc66 написал(а):
Вобщем сделал все как ты сказал:
1.убрал пробелы между "href=" и ссылкой
2.ссылка начинается с http://www
3.значение параметра заключил в двойные кавычки.
Все как было так и осталось на всех 6-и страницах выводятся первые 50-т наименований и панель навигации везде как на первой странице, т.е. на 1-й: 1|2|3 > >> и на 4-й также, а должно быть << < 2|3|4|5|6 > >>
Ну не делать же в самом деле шесть разных скриптов которые будут отличаться LIMIT 0,50 LIMIT 50,50 LIMIT 100,50 и т.д.


_____________
Admiral Kanaris
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.