Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Ошибки в PHP-коде (http://forum.oszone.net/showthread.php?t=204063)

rar864 06-04-2011 11:38 1652121

Ошибки в PHP-коде
 
Вот мо програмній код:
PHP код:

<?php  
// Устанавливаем соединение с базой данных  
include "db_connect.php";  
// Переменная хранит число сообщений выводимых на станице  
$num 3;  
// Извлекаем из URL текущую страницу  
$page $_GET['page'];  
// Определяем общее число сообщений в базе данных  
$result mysql_query("SELECT COUNT(*) FROM content ORDER BY id desc");  
$posts mysql_result($result0);  
// Находим общее число страниц  
$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  
$result mysql_query("SELECT * FROM content LIMIT $start, $num");  
// В цикле переносим результаты запроса в массив $postrow  
while ( $postrow[] = mysql_fetch_array($result))  
?>

вывод сообщений
PHP код:

<?php
                      
do
                    {  
                      
printf("<div class='blog'><a href='newtmpl.php?id=%s'>%s</a> <br>
                              %s<br>
                              <table>
                         <tr>
                             <td><a href='newtmpl.php?id=%s'>Подробнее:</a></td>
                             <td>%s</td>
                             <td>|</td>
                             <td>%s</td>
                             <td>|</td>
                             <td>Коментариев:</td>
                             <td>%s</td>
                         </td>
                    </table>
                    <hr>
                    </div>"
                    
,$postrow['id'],$postrow['title'],$postrow['introtext'],$postrow['id'],
                    
$postrow['author'],$postrow['data'],$postrow['views']);          
                 }
                 while (
$postrow mysql_fetch_array($result));
                 
                 
?>

Формируем составляющие будущей навигации
PHP код:

<?php  
// Проверяем нужны ли стрелки назад  
if ($page != 1$pervpage '<a href= ./page?page=1><<</a>  
                               <a href= ./page?page='
. ($page 1) .'><</a> ';  
// Проверяем нужны ли стрелки вперед  
if ($page != $total$nextpage ' <a href= ./page?page='. ($page 1) .'>></a>  
                                   <a href= ./page?page=' 
.$total'>>></a>';  

// Находим две ближайшие станицы с обоих краев, если они есть  
if($page 0$page2left ' <a href= ./page?page='. ($page 2) .'>'. ($page 2) .'</a> | ';  
if(
$page 0$page1left '<a href= ./page?page='. ($page 1) .'>'. ($page 1) .'</a> | ';  
if(
$page <= $total$page2right ' | <a href= ./page?page='. ($page 2) .'>'. ($page 2) .'</a>';  
if(
$page <= $total$page1right ' | <a href= ./page?page='. ($page 1) .'>'. ($page 1) .'</a>'

// Вывод меню  
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;  

?>


Coutty 06-04-2011 12:09 1652137

Какая каша...
И, наверное, нам надо угадать, что за ошибки у вас возникают?
На первый просмотр сразу бросается в глаза цикл do-while вместо while во втором блоке каши.

rar864 06-04-2011 13:27 1652199

Вот такая ошибка Notice: Undefined index: page in C:\Apache2.2\htdocs\www\index.php on line 8,
8 строка у меня это - $page = $_GET['page']; В чем проблема?

lxa85 06-04-2011 13:52 1652217

rar864, насколько я понимаю языки программирования, то он ругается на неопределенный индекс. Т.е. система не знает, какой элемент выбрать. В самом деле, что такое 'page'? Правильно ли использована конструкция кавычек? Определен ли этот элемент ДО вызова проблемной функции, в данном случае URL? Что "лежит" в переменной page ?

Coutty 06-04-2011 13:57 1652220

Видимо, если вы не передаёте переменную page в запросе, то в скрипте нужно проверить, не является ли она пустой. Что-то вроде
Код:

if (isset($_GET['page']))
  $page = $_GET['page'];
else
  $page = 1;

Notice - это не ошибка. Это всего лишь "уведомление".
Кстати, для обрамления кода используйте тэг [ code ]

Или даже вместо isset() лучше сразу использовать is_int()

rar864 06-04-2011 14:12 1652229

Сделал то что вы сказали ничего не получается, может у вас есть какой то код попроще для перехода по страницам сайта чем этот?

PhilB 06-04-2011 18:51 1652415

Цитата:

Цитата Coutty
Notice - это не ошибка. Это всего лишь "уведомление". »

То что в php называется "Notice", в других языках критическая ошибка. В любом случае стоит разобраться со всеми Notice, а то потом может возникнуть масса проблем.

Coutty 06-04-2011 19:03 1652429

Но речь-то не о других языках. PHP - более либеральный в плане допущений. "На свой страх и риск".


Время: 10:49.

Время: 10:49.
© OSzone.net 2001-