[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Навигация внутри сайта
JazzMan
Подскажите пожалуйста что мне можно исправить в коде. Я посмотрел на "пыхе" скрипт для навигации по страницам (это единственный скрипт который у меня заработал). Проблема появляется когда я достаю из бд записи. Например если записей нету то навигационные ссылки не должны выводится а они выводятся. Так же если у меня записей 10, а я сделал чтоб их на странице выводилось 8, то рисуются ссылки на 4 страницы, и получается что на 1 странице 8 записей, на 2 - 2 записи, а на остальных ничего нету
Скрипт:
PHP
@include("nav.php");
$qu=mysql_query("SELECT * FROM sms WHERE 
family='"
.$family."' AND name='".$name."' AND mname='".$mname."' 
ORDER BY date DESC LIMIT {$start},{$nums}"
) or die(mysql_error());
while(
$rr = mysql_fetch_array($qu))
{
    echo "
    <table border='1'>"
    ....
    echo "</table>";
}
echo "<br/>";
@include(
"nav_1.php");




Спустя 12 минут, 41 секунда (17.08.2009 - 11:57) JazzMan написал(а):
Скрипт nav.php
PHP
$nums=8;
if (isset($_GET['page']))
{
    $page = intval($_GET['page']);
}
else
{
    $page = 1;
}
$q=mysql_query("SELECT COUNT(*) AS `counter` FROM sms ") or die(mysql_error());
$row = mysql_fetch_array($q);
$elements = $row['counter'];
$pages = ceil($elements/$nums);
if ($page < 1)
{
    $page = 1;
}
elseif ($page > $pages)
{
    $page = $pages;
}
$start = ($page-1)*$nums;

Скрипт nav_1.php
PHP
$neighbours 6;
$left_neighbour $page $neighbours;
if (
$left_neighbour 1)
{
    
$left_neighbour 1;
}
$right_neighbour $page $neighbours;
if (
$right_neighbour $pages)
{
    
$right_neighbour $pages;
}
if (
$page 1)
{
    print 
' <a href="?page=1">начало</a> ... <a href="?page=' . ($page-1) . '"><назад</a> ';
}
for (
$i=$left_neighbour$i<=$right_neighbour$i++)
{
    if (
$i != $page)
    {
        print 
' <a href="?page=' $i '">' $i '</a> ';
    }
    else
    {
        print 
' <b>' $i '</b> ';
    }
}
if (
$page $pages)
{
    print 
' <a href="?page=' . ($page+1) . '">вперед></a><a href="?page=' $pages '">конец</a> ...  ';
}

Спустя 11 минут, 28 секунд (17.08.2009 - 12:08) blase написал(а):
вот, моя галерея
давно делал, и тоже со страницами мучался, в итоге составил чтото вроде
for($i=($_p-1)*5;$i<=min(sizeof($fotos),($_p)*5-1);$i++){
применил и получилось

PHP
<body>
<?
//---SETTING OPENED;
//name folder and max images on page
$UrlDir="gallery";
$MaxImagesOnPage=5;
//check of dir
if(is_dir($UrlDir)){
    if($dir=opendir($UrlDir)){
        // scan dir
        while($files=readdir($dir)){
        $fotos[]=$files;
        }
    }
closedir($dir);
}

//---SETTING OF PAGES:
//how many images
$amount=count($fotos);
//parametres for page
$pages=ceil($amount/$MaxImagesOnPage);
//number page
$_p=$_GET['page'];
//none number
if(!$_p OR $_p==''){
$MinNumberPage=0;
$MaxNumberPage=sizeof($fotos)-2;
}
//have number
else{
$MinNumberPage=($_p*$MaxNumberPage)-$MaxNumberPage;
$MaxNumberPage=($_p*$MaxNumberPage)-1;
}
//SETTING PRINT:
//print images
echo '<center>';
echo "FOTOGALLERY:<br>";

for(
$i=($_p-1)*5;$i<=min(sizeof($fotos),($_p)*5-1);$i++){
if(
$fotos[$i]){
echo '<a href="'.$UrlDir.'/'.$fotos[$i].'">';
echo '<img style="border:1px blue dashed; width:160px; height:120px;" src="'.$UrlDir.'/'.$fotos[$i].'">';
echo '</a>';
}
}
//print number pages
echo "<br><br>";
for(
$n=1;$n<=$pages;$n++){
if(
$_p != $n){
echo '<a href="index.[SPAN=darling]php[/SPAN]?page='.$n.'">['.$n.']</a>';
}
if(
$_p==$n){
echo '['.$n.']';
}
}
echo '</center>';

Спустя 13 дней, 20 часов, 5 минут, 29 секунд (31.08.2009 - 08:14) JazzMan написал(а):
Работает!
Быстрый ответ:

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