|
|
|
| Здравствуйте.
За основу я взял скрипт вот от сюда http://www.softtime.ru/info/articlephp.php?id_article=33
и заточил его под свои нужды...
получилось вот что
<?
// Переменная хранит число сообщений выводимых на станице
$num = 10;
// Извлекаем из URL текущую страницу
$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
if(isset($_GET['id'])) $result=mysql_query("SELECT count(*) FROM site_content WHERE kategory='".$_GET['id']."'");
else $result = mysql_query("SELECT count(*) FROM site_content");
$posts = mysql_result($result,0);
// Находим общее число страниц
$total = intval(($posts - 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
if(isset($_GET['id'])) $result=mysql_query("SELECT * FROM site_content WHERE kategory='".$_GET['id']."' LIMIT $start, $num");
else $result=mysql_query("SELECT * FROM site_content LIMIT $start, $num");
// В цикле переносим результаты запроса в массив $postrow
while ( $postrow[] = mysql_fetch_array($result))
////////////////////////////////////////////////
echo "<table width='100%' border='0' cellpadding='4' cellspacing='0'>";
for($i = 0; $i < $num; $i++)
{
echo "<tr>
<td width='80%' background='images/last.jpg' height='20' align='left'> <span style='color: #652200'><b>".$postrow[$i]['name']."</b></span></td>
<td width='20%' background='images/last.jpg' height='20' align='right'><span style='color: #652200'>".$postrow[$i]['date']."</span> </td>";
//////Выясняем категорию
$query1=mysql_query("SELECT name FROM site_kategory WHERE id='".$postrow[$i]['kategory']."'");
if(!$query1)exit(mysql_error());
$kat=mysql_result($query1,0);
//////Выясняем автора
$query2=mysql_query("SELECT name FROM site_users WHERE id='".$postrow[$i]['autor']."'");
if(!$query2)exit(mysql_error());
$autor=mysql_result($query2,0);
//////Выясняем количество комментариев
$query3=mysql_query("SELECT * FROM site_coment WHERE kategory='".$postrow[$i]['kategory']."' AND post='".$postrow[$i]['id']."'");
if(!$query3)exit(mysql_error());
$post=mysql_num_rows($query3);
/////Выводим сам документ, категорию, автора, и количество комментариев
echo "<tr>
<td width='100%' colspan=2>
<p align='right'>Категория: <a href='index.php?page=".$postrow[$i]['kategory']."'>".$kat."</a> | Автор: ";
if(isset($_SESSION['name']))
{
echo"<a href='index.php?user=".$postrow[$i]['autor']."'>".$autor."</a> | Комментарий:
<a href='index.php?post=".$postrow[$i]['id']."&kategory=".$postrow[$i]['kategory']."'>".$post."</a>";
}
else
{
echo "$autor | Комментарий: $post";
}
echo"</p><p align='left'>".$postrow[$i]['text']."</p>";
if(isset($_SESSION['name']))
{
echo"<p align='right'><a href='".$postrow[$i]['link']."'>download | скачать</a></p>";
}
else
{
echo"<p align='right'>download | скачать</p>";
}
echo"</td>
</tr>";
}
echo "</table>";
/////////////////////////////////////////////////
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href= ./index?page=1><<</a>
<a href= ./index?page='. ($page - 1) .'><</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' <a href= ./index?page='. ($page + 1) .'>></a>
<a href= ./index?page=' .$total. '>>></a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0) $page2left = ' <a href= ./index?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href= ./index?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 2 <= $total) $page2right = ' | <a href= ./index?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href= ./index?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
// Вывод меню
echo"<center>";
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
echo"</center>";
?>
|
Теперь о проблеме:
Если в базе находится записей меньше чем выводится на одну страницу то выдается ошибка
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 22 in C:\usr\www\content.php on line 38
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 23 in C:\usr\www\content.php on line 42
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 25 in C:\usr\www\content.php on line 38
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 26 in C:\usr\www\content.php on line 42
затем выводится содержимое базы как надо а дальше пустые ячейки таблици до 10 в сумме потому что выводится по 10 записей на страницу. Короче если в базе к примеру 4 записи то выдается вышеупомянутая ошибка потом выводятся записи а потом еще 6 пустых строк.
Как сделать чтобы небыло ошибки и если записей меньше чем выводится на страницу то после последней записи не выводились еще и пустые строки ???
PS: Ошибки
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 22 in C:\usr\www\content.php on line 38
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 23 in C:\usr\www\content.php on line 42
указывают на строки
$kat=mysql_result($query1,0);
|
и
$autor=mysql_result($query2,0);
|
соответственно. | |
|
|
|
|
|
|
|
для: kodges
(28.12.2006 в 15:19)
| | Замените строки вида
<?php
$autor=mysql_result($query2,0);
?>
|
на
<?php
if(mysql_num_rows($query2)) $autor=mysql_result($query2,0);
else $autor = "";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(28.12.2006 в 15:28)
| | Спасибо, с ошибками справиться это помогло, но пустые строки по прежнему выводятся если в базе записей меньше чем нужно вывести на страницу.
Как с этим бороться ?
=================================
Все спасибо за помощь я уже разобрался...
Надо было добавить в скрипт оператор break с условием :))) | |
|
|
|