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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: постраничная навигация. ошибка.

Сообщения:  [1-2] 

 
 автор: confirm   (06.01.2014 в 07:12)   письмо автору
 
   для: vecher   (06.01.2014 в 04:34)
 

Не убирать надо, а разбираться с ошибкой. Сообщение гласит, что $result не является ресурсом mysql, то есть запрос вернул ошибку, а вы ее пытаетесь обработать. Проверьте ошибку. Выводить непосредственно ее только при отладке, на реальном сервер лучше писать "Извините....". Если колонка post, это число, то mysql_real_escape_string лишнее, и лучше приводить к числу, и делать это нужно до запроса, проверяя.

<?
if($result = mysql_query("SELECT DATE_FORMAT(`date`,'%d.%m.%Y') AS `date`, `text`, author
                          FROM comment 
                          WHERE post=" 
. (int)$id_comp . " 
                          ORDER BY id DESC LIMIT 
$start, $num", $db)) {
    if(
mysql_num_rows($result)) {   
        
//вывод, но только не do...while, а while
    
}  else {
       
//по умолчанию 
    
}
} else echo 
mysql_error(); 


DATE, TEXT зарезервировано в mysql и нужно обрамлять - `date`.

PS. mysql_num_rows() вообще не нужна, уже после первого запроса на количество записей будет известно есть ли они, а следовательно и что делать. Вся логика кода у вас неверна.

  Ответить  
 
 автор: vecher   (06.01.2014 в 04:34)   письмо автору
 
 

здравстуйте.
чтобы комменты не выходили длинной страницей решил сделать для них постраничную навигацию.
работает, с небольшим условием
если нет ни одного комментария
то выходит надпись
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/site/public_html/post.php on line 670
Ваш комментарий будет первым.


670 строка - if(mysql_num_rows($result) > 0) {
<?php
                            $num 
= 5;
                            
// Извлекаем из URL текущую страницу
                            
@$page = $_GET['page'];
                            
// Определяем общее число сообщений в базе данных
                            
$result00 = mysql_query("SELECT COUNT(*) FROM comment WHERE post='" . mysql_real_escape_string($id_comp) . "'");
                            
$temp = mysql_fetch_array($result00);
                            
$posts = $temp[0];
                            
// Находим общее число страниц
                            
$total = (($posts - 1) / $num) + 1;
                            
$total =  intval($total);
                            
// Определяем начало сообщений для текущей страницы
                            
$page = intval($page);
                            
// Если значение $page меньше единицы или отрицательно
                            // переходим на первую страницу
                            // А если слишком большое, то переходим на последнюю
                            
if(empty($page) or $page < 0) $page = 1;
                              if(
$page > $total) $page = $total;
                            
// Вычисляем начиная с какого номера
                            // следует выводить сообщения
                            
$start = $page * $num - $num;
                            
// Выбираем $num сообщений начиная с номера $start
                            
                            
$result = mysql_query("
                                SELECT DATE_FORMAT(date,'%d.%m.%Y') AS date, text, author
                                FROM comment 
                                WHERE post='" 
. mysql_real_escape_string($id_comp) . "' 
                                ORDER BY id DESC LIMIT 
$start, $num
                            "
, $db);
                            if(
mysql_num_rows($result) > 0) {
                                
$comment = mysql_fetch_array($result);
                                do {
                                    
$text = $comment["text"];
                                    
$author = $comment["author"];
                                    
$date = $comment["date"];
                                    
printf("
                                        <div class='comment'>
                                            <p class='comment'>%s
                                                <span class='date'>%s</span>
                                            </p>
                                            <p class='comment'>%s</p>
                                        </div> 
                                    "
,$author,$date,$text);
                                }
                                while (
$comment = mysql_fetch_array($result));
                            
// Проверяем нужны ли стрелки назад
                                    
if ($page != 1) $pervpage = '<a href=post.php?id='.$id.'&page=1>Первая</a> | <a href=post.php?id='.$id.'&page='. ($page - 1) .'>Предыдущая</a> | ';
                                    
// Проверяем нужны ли стрелки вперед
                                    
if ($page != $total) $nextpage = ' | <a href=post.php?id='.$id.'&page='. ($page + 1) .'>Следующая</a> | <a href=post.php?id='.$id.'&page=' .$total. '>Последняя</a>';


                                    
// Находим две ближайшие станицы с обоих краев, если они есть
                                    
if($page - 5 > 0) $page5left = ' <a href=post.php?id='.$id.'&page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
                                    if(
$page - 4 > 0) $page4left = ' <a href=post.php?id='.$id.'&page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
                                    if(
$page - 3 > 0) $page3left = ' <a href=post.php?id='.$id.'&page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
                                    if(
$page - 2 > 0) $page2left = ' <a href=post.php?id='.$id.'&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
                                    if(
$page - 1 > 0) $page1left = '<a href=post.php?id='.$id.'&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';

                                    if(
$page + 5 <= $total) $page5right = ' | <a href=post.php?id='.$id.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
                                    if(
$page + 4 <= $total) $page4right = ' | <a href=post.php?id='.$id.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
                                    if(
$page + 3 <= $total) $page3right = ' | <a href=post.php?id='.$id.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
                                    if(
$page + 2 <= $total) $page2right = ' | <a href=post.php?id='.$id.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
                                    if(
$page + 1 <= $total) $page1right = ' | <a href=post.php?id='.$id.'&page='. ($page + 1) .'>'. ($page + 1) .'</a>';

                                    
// Вывод меню если страниц больше одной

                                    
if ($total > 1)
                                    {
                                    
Error_Reporting(E_ALL & ~E_NOTICE);
                                    echo 
"<div class='number'>";
                                    echo 
$pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
                                    echo 
"</div>";

                                    }
                                
                            }
                            else {
                            echo 
"Ваш комментарий будет первым.";
                            }
                                    
?>

как убрать вывод предупреждения?

  Ответить  

Сообщения:  [1-2] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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