X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Ошибка. Постраничная навигация
dimjan4
dimjan4
Topic Starter сообщение 27.9.2009, 16:18; Ответить: dimjan4
Сообщение #1


Здравствуйте.
Сделал движок вывода новостей:
[PHP]<?php
defined('_JEXEC') or die('Restricted access');
?>
<div id="News">
<?php
$for1 = mysql_query ("SELECT * FROM `news` ORDER BY 'id' DESC");
$kolvo = mysql_num_rows($for1);
if(empty($_GET['read'])):
///Dlja pages
$num = 1;

if (empty($_GET['pages'])):
$page = "1";
else:
$prov3 = new MM();
$my_prov3 = $prov3->cifri($_GET['pages']);
if($my_prov3 == true):
$page = $_GET['pages'];
else:
$page = "1";
endif;

endif;
$posts = $kolvo;
// Находим общее число страниц
$total = intval(($posts - 1) / $num) + 1;
$page = intval($page);

if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
$result = mysql_query("SELECT * FROM `news` LIMIT $start, $num");
while($row = mysql_fetch_assoc($result)):
?>
<div class="my_news">
<p>
<small><?php print $row['date'];?></small><br/>
<?php print $row['title'];?> <br/><a href="?do=1&read=<?php print $row['id'];?>" class="link"> &gt;Читать</a>
</p>
</div>
<?php
endwhile;
///vivodim postranicnuju navigaciju
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href="?do=1&pages=1"><<</a>
<a href="?do=1&pages='. ($page - 1) .'"><</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' <a href="?do=1&pages='. ($page + 1) .'">></a>
<a href="?do=1&pages=' .$total. '">>></a>';

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

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

else:
$prov = new MM();
$my_prov = $prov->cifri($_GET['read']);
if($my_prov == true):
if($_GET['read'] > $kolvo):
$reading = "1";
else:
$reading = $_GET['read'];
endif;
else:
$reading = "1";
endif;
$my_row = mysql_query ("SELECT * FROM `news` WHERE id='$reading'");
$row = mysql_fetch_array($my_row);
?>

<div class="my_news">
<p>
<small><?php print $row['date'];?></small><br/>
<h3><?php print $row['title'];?></h3>
<?php print $row['text'];?><br/><br/>
<a href="?do=1" class="link">&lt; Обратно</a>
</p>
</div>
<?php
endif;
?>
</div>[/PHP]
Всё работает правильно , но выводит какие то ошибки:


Notice: Undefined variable: pervpage in z:\home\love.ru\www\1.php on line 58
<img id="denwer_onPhpErrorImg" border="0" height="1" width="1">[ убрать подсказку | никогда больше не показывать ]
Это предупреждение, вероятнее всего, возникает вследствие высокого уровня контроля ошибок в PHP, по умолчанию установленного в Денвере (E_ALL). Такой режим вывода ошибок является рекомендуемым и сильно помогает при отладке скриптов. Однако множество готовых скриптов требуют более низкого уровня ошибок.
Вы можете установить более слабый контроль ошибок одним из следующих способов:

  • Впишите в скрипты строчку: Error_Reporting(E_ALL & ~E_NOTICE); Этот способ особенно удобен, если в скрипте есть один файл (конфигурационный), который подключается всеми остальными.
  • Рекомендуемый способ. Создайте в директории со скриптом файл .htaccess следующего содержания: php_value error_reporting 7
  • Исправьте в /usr/local/php/php.ini значение error_reporting на E_ALL & ~E_NOTICE. Этот способ не является рекомендуемым и может привести к серьезным неудобствам при отладке!

[Денвер: показать возможную причину ошибки]
Notice: Undefined variable: page2left in z:\home\love.ru\www\1.php on line 58

Notice: Undefined variable: page1left in z:\home\love.ru\www\1.php on line 58

Notice: Undefined variable: page2right in z:\home\love.ru\www\1.php on line 58


1.Почему так?
2. Видите, если есть $_GET['read'] то нам выводит полную новость. И видите тут есть специальная ссылка: <a href="?do=1" class="link">&lt; Обратно</a>
Эта ссылка возвращает на главную страницу новостей. Как сделать так, чтобы возвращало на нужную страничку (к примеру - я был на 5 и меня вернуло на 5) ???
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Witu
Witu
сообщение 27.9.2009, 16:51; Ответить: Witu
Сообщение #2


а можно без крякозябр типа f(empty($_GET['read'])):?


как правило все ставят { } означающие начало и конец..

типа begin и end в делфи паскале и тд и тп
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dimjan4
dimjan4
Topic Starter сообщение 27.9.2009, 16:57; Ответить: dimjan4
Сообщение #3


Нет ...тут всё правильно...
Цитата с php.su
if (логическое_выражение):
команды;
elseif(другое_логическое_выражение):
другие_команды;
else:
иначе_команды;
endif;
это тоже стандартная конструкция иф.
Эту конструкцию я использую в тех случаях, когда много команд.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 27.9.2009, 17:30; Ответить: Apay
Сообщение #4


у вас же ясно написанно: Undefined variable - неизвестная переменная, значит ее надо сделать известной - инициализировать, перед ифами вставьте строчку
[PHP]$pervpage = $page2left = $page1left = $page2right = ''; [/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dimjan4
dimjan4
Topic Starter сообщение 27.9.2009, 17:34; Ответить: dimjan4
Сообщение #5


Да, я уже понял и сделал так:
[PHP]if (!empty($pervpage)):echo $pervpage; endif;
if (!empty($page2left)):echo $page2left; endif;
if (!empty($page1left)):echo $page1left;endif;
echo '<b>'.$page.'</b>';
if (!empty($page1right)): echo $page1right; endif;
if (!empty($page2right)):echo $page2right;endif;
if (!empty($nextpage)):echo $nextpage; endif;[/PHP]

А вот второй вопрос:
Видите, если есть $_GET['read'] то нам выводит полную новость. И видите тут есть специальная ссылка: <a href="?do=1" class="link">&lt; Обратно</a>
Эта ссылка возвращает на главную страницу новостей. Как сделать так, чтобы возвращало на нужную страничку (к примеру - я был на 5 и меня вернуло на 5) ???

Как мне это сделать?:rolleyes:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 27.9.2009, 18:15; Ответить: Apay
Сообщение #6


очень просто, в урле передавать номер предыдущей страницы, например
http://site.com/any.php?do=3&prev=5

[PHP]$prevpage = empty($_GET['prev']) ? 1 : (int)$_GET['prev'];
...
echo '<a href="?do='.$revpage.'" class="link">&lt; Обратно</a>';[/PHP]

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Каталог открывается как ошибка 404 в hostcms
0 cheshire 3254 2.7.2018, 11:09
автор: cheshire
Открытая тема (нет новых ответов) Ручное составление СЯ и постраничная Оптимизация
Преимущественно для интернет-магазинов
5 skyes 4462 22.7.2017, 14:15
автор: Alexeus
Открытая тема (нет новых ответов) постраничная листалка с выбором страници
0 nfdv 2902 8.2.2015, 13:38
автор: -nfdv-
Открытая тема (нет новых ответов) Учусь создавать шаблон для Joomla 2.5 Ошибка в файле index.php
3 Musicathome 6626 26.7.2013, 20:20
автор: -Сабж-
Открытая тема (нет новых ответов) Редирект, установка консультации на сайт и ошибка в коде
2 samgul 4067 27.2.2013, 17:22
автор: -HTMLandPHP-


 



RSS Текстовая версия Сейчас: 29.3.2024, 11:26
Дизайн