Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Скрипт постраничного вывода товара из БД с навигацией

21K
30 августа 2007 года
mjc66
15 / / 17.08.2007
Установил для определенной группы товаров скрипт постраничного вывода товарных позиций из БД с навигацией. Для первой страницы все сложилось удачно - товар вывелся как и нужно - 50-т позиций на страницу, с навигацией тоже все хорошо. Взялся устанавливать на 2-ю страницу - прямо засада: товар выводится точно такой же как и на первой странице, вместо следующих 50-ти позиций, а с навигацией просто чума - я уже совсем запутался: Апач пишет, что Notice: Undefined variable: page1left in C:\apache\test.ru\www\State_Standard_Samples2.php on line 318
О какой неопределенной переменной он надрывается - я понять не могу(эта 138-я предпоследняя строчка в коде скрипта навигации у меня пустая).
Вобщем, друзья, помогите "чайнику"!!! Выкладываю скрипт вывода товара на страницу:
Код:
<?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-й страницы:
Код:
<?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;  

?>

Очень надеюсь на помощь
337
30 августа 2007 года
shine
719 / / 09.06.2006
В строчке вывода меню ты используеш переменную $page1left хотя определяешь $page11eft (четвертая с конца буква в имени переменных разная).

А вообще я советую никогда так не делать. Paging делался уже тысячи раз и незачем тебе создавать 1001 вариант тратя время и нервничая по поводу ошибок. Гораздо проще погуглить и найти готовое решение.
21K
30 августа 2007 года
mjc66
15 / / 17.08.2007
Да ну нет такого, я сто раз проверял везде идет $page1left. Кстати что значит погуглить?
251
30 августа 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: mjc66
Да ну нет такого, я сто раз проверял везде идет $page1left. Кстати что значит погуглить?


2shine :)))
2mjc66: Это значит поискать в google.com. Отсюда и народное название - погуглить :D

337
30 августа 2007 года
shine
719 / / 09.06.2006
Как же везде если даже в том коде который ты напечатал выше переменные разные? :) Попробуй элементарный поиск по странице средствами браузера и ты увидишь, что одна переменная находиться а вторая - нет. В этом и ошибка.

Погуглить - воспользоваться поисковой системой Google для поиска нужной информации.
21K
31 августа 2007 года
mjc66
15 / / 17.08.2007
Скачал готовое решение, но по- моему нижняя часть кода для PHP абсолютно некорректна:
Код:
<?php
  include "config_mysql.php"; //соединение с MySQL

  //переменная
$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>
[COLOR="Red"]<?php
  echo '<LINK href='nav_bar.files/nav_bar.css' rel='stylesheet'/>'. //подключаем файл стилей навигационной панели
    '<SCRIPT src='nav_bar.files/nav_bar.js'></SCRIPT>'. //подключаем внешний Javacript-файл с панелью
    '<SCRIPT language='JavaScript'>.
    'nav_bar = new navigation_pages_bar($count,$item_per_page,$page,$url);'. //инициализируем панель навигации
    'nav_bar.show();'. //выводим в браузер панель навигации
    '</SCRIPT>';

?>[/COLOR]

Правда панелька навигации на Javascript хороша - не хочется отказываться. Помогите подправить скрипт.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог