Постраничный вывод из БД
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Постраничный вывод из БД Expand / Collapse
Автор
Сообщение
03.09.2007 4:22
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 09.02.2008 6:21
Сообщ.: 2, Visits: 17
Доброго всем времени суток! Скачал здесь http://softtime.ru/info/articlephp.php?id_article=33 скрипт постраничного вывода из БД. Теперь он выглядит так:
<?php   
// Устанавливаем соединение с базой данных  
include "config_mysql.php";
//переменная
$group_production = (isset($_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 = (isset($_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");  
// В цикле переносим результаты запроса в массив
    $i = 0;  
while ($arResult = mysql_fetch_array($result)): 
    $i++; 
?> 
    <tr class='cell_<?=($i%2)+1;?>'> 
        <td> 
            <?=$arResult['name'];?> 
        </td>
    </tr> 
<?endwhile;?>
</table>
<?php  
// Проверяем нужны ли стрелки назад 
if ($page != 1) $pervpage = '<a title="В начало" class="1" href="http://www.test.ru/State_Standard_Samples.php?page=1"><<</a
                               <a class="1" href="http://www.test.ru/State_Standard_Samples.php?page='. ($page - 1) .'"><Предыдущая</a> '; 
// Проверяем нужны ли стрелки вперед 
if ($page != $total) $nextpage = ' <a class="1" href="http://www.test.ru/State_Standard_Samples.php?page='. ($page + 1) .'">Далее></a> 
                                   <a title="В конец" class="1" href="http://www.test.ru/State_Standard_Samples.php?page=' .$total. '">>></a>'; 

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

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


?>

Проблема в следующем: при переходе по ссылкам панели навигации на всех страницах одно и тоже - выводятся первые 50 строк из БД, да и сама панель навигации везде одинаковая: 1|2|3|> >> , т.е. везде активна 1 страница. Пожалуйста, помогите "чайнику" решить эту проблему!!!

Сообщ. #915711
03.09.2007 15:14
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Похоже ошибка в этой строке:

$page = (isset($_GET['page']));

Если ты таким образом пытался избежать предупреждения об обращении к несуществующей переменной, то эту строку следовало записать, например, так:

$page = isset($_GET['page']) ? $_GET['page'] : 1;

Сообщ. #915723
03.09.2007 16:27
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 09.02.2008 6:21
Сообщ.: 2, Visits: 17
Да действительно проблема оказалась именно в этом, большое Тебе спасибо!
Сообщ. #915727
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 8:12