JazzMan
17.08.2009 - 12:44
Подскажите пожалуйста что мне можно исправить в коде. Я посмотрел на "пыхе" скрипт для навигации по страницам (это единственный скрипт который у меня заработал). Проблема появляется когда я достаю из бд записи. Например если записей нету то навигационные ссылки не должны выводится а они выводятся. Так же если у меня записей 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 написал(а):