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

Форум PHP

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

 

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

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

тема: Постраничная навигация 1 | 2 | 3 | 4 и т.д.
 
 автор: MacVit   (31.08.2004 в 13:43)   письмо автору
 
 

Всем доброго времени суток!
Я как новичек продолжаю изучение PHP в Dreamweaver.
Создал я БД, подключился к ней, Дрим сгенерировал код, как сделать на основе этого кода постраничную навигацию?


<?php require_once('Connections/lancom_video.php'); ?>
<?php
$currentPage 
$_SERVER["PHP_SELF"];

$maxRows_rsLastFilms 2;
$pageNum_rsLastFilms 0;
if (isset(
$_GET['pageNum_rsLastFilms'])) {
  
$pageNum_rsLastFilms $_GET['pageNum_rsLastFilms'];
}
$startRow_rsLastFilms $pageNum_rsLastFilms $maxRows_rsLastFilms;

$colname_rsLastFilms "1";
if (isset(
$_GET['janr'])) {
  
$colname_rsLastFilms = (get_magic_quotes_gpc()) ? $_GET['janr'] : addslashes($_GET['janr']);
}
mysql_select_db($database_lancom_video$lancom_video);
$query_rsLastFilms sprintf("SELECT * FROM films WHERE janr = '%s' ORDER BY name_film ASC"$colname_rsLastFilms);
$query_limit_rsLastFilms sprintf("%s LIMIT %d, %d"$query_rsLastFilms$startRow_rsLastFilms$maxRows_rsLastFilms);
$rsLastFilms mysql_query($query_limit_rsLastFilms$lancom_video) or die(mysql_error());
$row_rsLastFilms mysql_fetch_assoc($rsLastFilms);

if (isset(
$_GET['totalRows_rsLastFilms'])) {
  
$totalRows_rsLastFilms $_GET['totalRows_rsLastFilms'];
} else {
  
$all_rsLastFilms mysql_query($query_rsLastFilms);
  
$totalRows_rsLastFilms mysql_num_rows($all_rsLastFilms);
}
$totalPages_rsLastFilms ceil($totalRows_rsLastFilms/$maxRows_rsLastFilms)-1;

$queryString_rsLastFilms "";
if (!empty(
$_SERVER['QUERY_STRING'])) {
  
$params explode("&"$_SERVER['QUERY_STRING']);
  
$newParams = array();
  foreach (
$params as $param) {
    if (
stristr($param"pageNum_rsLastFilms") == false && 
        
stristr($param"totalRows_rsLastFilms") == false) {
      
array_push($newParams$param);
    }
  }
  if (
count($newParams) != 0) {
    
$queryString_rsLastFilms "&" htmlentities(implode("&"$newParams));
  }
}
$queryString_rsLastFilms sprintf("&totalRows_rsLastFilms=%d%s"$totalRows_rsLastFilms$queryString_rsLastFilms);
?>


Сама страница...



<?php
mysql_free_result
($rsLastFilms);
?>


PS // $maxRows_rsLastFilms = 2 - количество отображаемых записей на странице

   
 
 автор: cheops   (31.08.2004 в 14:20)   письмо автору
 
   для: MacVit   (31.08.2004 в 13:43)
 

Сам вывод ссылок можно организовать следующим образом
<?php
 
for($i 1$i<=$totalPages_rsLastFilms$i++)
 {
   
$start $i*$maxRows_rsLastFilms;
   if(
$startRow_rsLastFilms == $start) echo "|$i";
   else echo 
"|<a href=index.php?start=$start>$i</a>";
 }
 echo 
"|";
?>

Только в этом случае инициализацию переменной $pageNum_rsLastFilms следует заменить на следующий код:
<?php
  
if(isset($_GET['start'])) $pageNum_rsLastFilms $_GET['start'];
  else 
$pageNum_rsLastFilms 0;
?>


PS Если что-то не заладится - пишите, будем разбираться дальше.

   
 
 автор: MacVit   (03.09.2004 в 10:38)   письмо автору
 
   для: cheops   (31.08.2004 в 14:20)
 

Добрый день!
Спасибо за ответ, но код немнго работает не так. Итак все по порядку:

1. Я изменил инициализацию переменной $pageNum_rsLastFilms следующим образом:


<?php
// -- Старый код
//$pageNum_rsLastFilms = 0;
//if (isset($_GET['pageNum_rsLastFilms'])) {
//  $pageNum_rsLastFilms = $_GET['pageNum_rsLastFilms'];

//--- Ваш код
if(isset($_GET['start'])) $pageNum_rsLastFilms $_GET['start']; 
else 
$pageNum_rsLastFilms 0;{
//--
?>


Немного подправил вывод ссылок, теперь он корректно отображает страницы и ссылки на них:

<?php
echo "Страниц: ";
$linkJanr htmlentities(implode(""$newParams)); //Переменная по линкам жанров
for($i 0$i<=$totalPages_rsLastFilms$i++)

$start $i;
$page $i+1;
if(
$startRow_rsLastFilms == $start) echo $page | "
else echo 
"<a href=?$linkJanr&start=$start>$page</a> | "//
}
?>


Далее, переменная $linkJanr берет значения у меня на странице из массива (Боевик, Фантастика и т.д.), например, janr.php?janr=Фантастика и на основе этого значения производится выборка из БД.
При этом возникает следующий глюк.
При первом клике ссылка обрабатывается корректно, т.е. имеет такой вид:
.../janr.php?janr=Фантастика
При повторном вызове она теряет кодировку и выглядит следующим образом:
.../janr.php?janr=Oaioanoeea
Как исправить?

Далее о работе вывода ссылок на страницы:

При первом обращении на страницу 2 она имеент вид:
.../janr.php?janr=Oaioanoeea&start=1

При обращении на 3 страницу:
http://10.10.12.50/Lancom_video/janr.php?janr=Oaioanoeeastart=1&start=2
при этом если человек решит перейти на 2 или первую страницу линк имеет вид:
/janr.php?janr=Oaioanoeeastart=2&start=0
Что в первом и во втором случае привод к ошибке...

Я поразумеваю, что ошибка находится здесь:
<?php
$linkJanr 
htmlentities(implode(""$newParams));
?>


Большое спасибо за внимание.

   
 
 автор: MacVit   (03.09.2004 в 22:10)   письмо автору
 
   для: MacVit   (03.09.2004 в 10:38)
 

UP!!!

   
 
 автор: cheops   (03.09.2004 в 23:58)   письмо автору
 
   для: MacVit   (03.09.2004 в 10:38)
 

1) Русские буквы страются не помещать в строку запроса, так как по стандарту, в URL могут быть помещен лишь ограниченный набор символов. Если существует жёсткая необходимость передать именно русские буквы через строку запроса их следует предварительно преобразовать в безопасный вид при помощи функции urldecode() - обратное декодирование выполняет функция urlencode(). При помощи первой фунции все русские символы будут преобразованы в последовательности вида %## (%25%20%46....) - передача которых разрешена стандартом...

   
 
 автор: cheops   (04.09.2004 в 00:32)   письмо автору
 
   для: MacVit   (03.09.2004 в 10:38)
 

Смущет знак ? перед $linkJanr - он там точно нужен?
<?php
 
echo "<a href=?$linkJanr&start=$start>$page</a> | ";
?>

   
Rambler's Top100
вверх

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