|
|
|
| Всем доброго времени суток!
Я как новичек продолжаю изучение 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 - количество отображаемых записей на странице | |
|
|
|
|
|
|
|
для: 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 Если что-то не заладится - пишите, будем разбираться дальше. | |
|
|
|
|
|
|
|
для: 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 в 10:38)
| | UP!!! | |
|
|
|
|
|
|
|
для: MacVit
(03.09.2004 в 10:38)
| | 1) Русские буквы страются не помещать в строку запроса, так как по стандарту, в URL могут быть помещен лишь ограниченный набор символов. Если существует жёсткая необходимость передать именно русские буквы через строку запроса их следует предварительно преобразовать в безопасный вид при помощи функции urldecode() - обратное декодирование выполняет функция urlencode(). При помощи первой фунции все русские символы будут преобразованы в последовательности вида %## (%25%20%46....) - передача которых разрешена стандартом... | |
|
|
|
|
|
|
|
для: MacVit
(03.09.2004 в 10:38)
| | Смущет знак ? перед $linkJanr - он там точно нужен?
<?php
echo "<a href=?$linkJanr&start=$start>$page</a> | ";
?>
|
| |
|
|
|