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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Постраничная навигация!
 
 автор: Алексей Клепиков   (13.02.2013 в 13:31)   письмо автору
 
 

Доброго времени суток. Подскажите как сделать! Проблема в том, что выводятся заметки с постраничной навигацией, но заметки выводятся начиная с первой по дате добавления, нужно с последней!
Вот код:
<? echo $myrow["text"];
$result77 mysql_query("SELECT str FROM options"$db);
$myrow77 mysql_fetch_array($result77);
$num $myrow77["str"];
@
$page $_GET['page'];
$result00 mysql_query("SELECT COUNT(*) FROM data WHERE cat='$cat'");
$temp mysql_fetch_array($result00);
$posts $temp[0];
$total = (($posts 1) / $num) + 1;
$total =  intval($total);
$page intval($page);
if(empty(
$page) or $page 0$page 1;
if(
$page $total$page $total;
$start $page $num $num;
$result mysql_query("SELECT id,title,description,date,author,mini_img,view FROM data WHERE cat='$cat' ORDER BY id LIMIT $start$num",$db);
if (!
$result)
{echo 
"<p>Запрос на выборку данных из БД не прошел. Сообщите пожалуйста об этом администратору сайта admin@gazenergoexpert.com. <br> <strong>Код ошибки:</strong></p>";
exit (
mysql_error());}
if (
mysql_num_rows($result) > 0)
{
$myrow mysql_fetch_array($result);
do
{
printf("
<div id='news_cat'>
<div id='news_title'>
<h4><a class='link_new' href='view_news.php?id=%s'>%s</a></h4>
<p>Дата добавления: %s</p>
<p>Добавил: %s</p>
</div>
<div id='news_desc'>
<img src='%s'>%s <br> <p class='view'>Просмотров: %s</p>
</div>
</div>
"
,$myrow["id"],$myrow["title"],$myrow["date"],$myrow["author"],$myrow["mini_img"],$myrow["description"],$myrow["view"]);
}
while (
$myrow mysql_fetch_array($result));
if (
$page != 1$pervpage '<a href=view_cat.php?cat='.$cat.'&page=1>Первая</a> | <a href=view_cat.php?cat='.$cat.'&page='. ($page 1) .'>Предыдущая</a> | ';
if (
$page != $total$nextpage ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page 1) .'>Следующая</a> | <a href=view_cat.php?cat='.$cat.'&page=' .$total'>Последняя</a>';
if(
$page 0$page5left ' <a href=view_cat.php?cat='.$cat.'&page='. ($page 5) .'>'. ($page 5) .'</a> | ';
if(
$page 0$page4left ' <a href=view_cat.php?cat='.$cat.'&page='. ($page 4) .'>'. ($page 4) .'</a> | ';
if(
$page 0$page3left ' <a href=view_cat.php?cat='.$cat.'&page='. ($page 3) .'>'. ($page 3) .'</a> | ';
if(
$page 0$page2left ' <a href=view_cat.php?cat='.$cat.'&page='. ($page 2) .'>'. ($page 2) .'</a> | ';
if(
$page 0$page1left '<a href=view_cat.php?cat='.$cat.'&page='. ($page 1) .'>'. ($page 1) .'</a> | ';
if(
$page <= $total$page5right ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page 5) .'>'. ($page 5) .'</a>';
if(
$page <= $total$page4right ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page 4) .'>'. ($page 4) .'</a>';
if(
$page <= $total$page3right ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page 3) .'>'. ($page 3) .'</a>';
if(
$page <= $total$page2right ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page 2) .'>'. ($page 2) .'</a>';
if(
$page <= $total$page1right ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page 1) .'>'. ($page 1) .'</a>';
if (
$total 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo 
"<div class=\"pstrnav\">";
echo 
$pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo 
"</div>";
}
}
else
{echo 
"<p>Информация по запросу не может быть извлечена в таблице нет записей</p>";
exit ();
}
?>

  Ответить  
 
 автор: Slo_Nik   (13.02.2013 в 14:02)   письмо автору
 
   для: Алексей Клепиков   (13.02.2013 в 13:31)
 

в запросе добавьте сортировку в обратном порядке
...ORDER BY id DESC...

поменяйте цикл do{}while() на просто while()

Error_Reporting(E_ALL & ~E_NOTICE); перенесите в самое начало файла и чуть измените Error_Reporting(E_ALL);

используйте длинные теги <?php

уберите из кода "@", это мешает контролировать ошибки и предупреждения

p.s. Вы случаем не по урокам "корифея" программистской мысли Е.Попова делали всё?

  Ответить  
 
 автор: Алексей Клепиков   (13.02.2013 в 14:10)   письмо автору
 
   для: Slo_Nik   (13.02.2013 в 14:02)
 

Попробую и отпишу. Спасибо
По его урокам.

  Ответить  
 
 автор: Slo_Nik   (13.02.2013 в 14:14)   письмо автору
 
   для: Алексей Клепиков   (13.02.2013 в 14:10)
 

>>>По его урокам.
забудьте на 99%, что он там рассказывал
вверху страницы есть ссылки на книги, приобретите и учите на здоровье
тем более, что у Попова ни слова ни сказано о безопасности запросов к базе данных. В таком виде, как сейчас, запрос не очень хорош...

  Ответить  
 
 автор: confirm   (13.02.2013 в 14:13)   письмо автору
 
   для: Slo_Nik   (13.02.2013 в 14:02)
 

>используйте длинные теги <?php

Это не обязательное условие, и нежелательное лишь с учетом конфигурации РНР

  Ответить  
 
 автор: Slo_Nik   (13.02.2013 в 14:18)   письмо автору
 
   для: confirm   (13.02.2013 в 14:13)
 

PHP также допускает короткие теги <? и ?>, однако использовать их нежелательно, так как они доступны только если включены с помощью конфигурационной директивы php.ini short_open_tag, либо если PHP был сконфигурирован с опцией --enable-short-tags .
ключевое слово "нежелательно"
можно приобрести маленькие проблемы с короткими тегами, потом прийдётся во всех файла исправлять, а зачем? Не проще ли сразу использовать <?php ?

  Ответить  
 
 автор: confirm   (13.02.2013 в 14:22)   письмо автору
 
   для: Slo_Nik   (13.02.2013 в 14:18)
 

Ерунда, так как данная директива доступна отовсюду, и включить ее проблем нет, так что проблемы о которых вы говорите, это ваши проблемы.
Короткий тег позволяет в старых версиях использовать короткую запись =$var, вместо echo. В версии 5.4.0 эта возможность теперь доступна всегда. Поэтому как поступать, решать только вам, а проблемы так это надуманное.

  Ответить  
 
 автор: Slo_Nik   (13.02.2013 в 14:29)   письмо автору
 
   для: confirm   (13.02.2013 в 14:22)
 

на локальном допустим включена эта директива
на реальном отключена
получается, для того, чтобы использовать на реальном надо или через .htaccess включить директиву или править файлы
А зачем? Можно сразу писать длинные теги и не заморачиваться из-за этой мелочи

  Ответить  
 
 автор: confirm   (13.02.2013 в 14:35)   письмо автору
 
   для: Slo_Nik   (13.02.2013 в 14:29)
 

Я вам русским языком написал, для чего используют короткий тег. Использовать вам его или нет, это решать вам. Лично я использую эту возможность, так как намного короче записи можно делать, и знаете, проблем с "заморачиванием" никаких нет. Это вы уже выдумываете их. По умолчанию короткий тег как раз разрешен, на безопасность он никак не влияет, и очень сомнительно, чтобы какой-то хостер был обеспокоен этой установкой, нагадил вам, и установил в 0. К тому же, еще раз напоминаю - место изменения опции PHP_INI_ALL, лезть в .htaccess необходимости нет.

  Ответить  
 
 автор: Slo_Nik   (13.02.2013 в 14:39)   письмо автору
 
   для: confirm   (13.02.2013 в 14:35)
 

>>>и очень сомнительно, чтобы какой-то хостер был обеспокоен этой установкой, нагадил вам, и установил в 0

вот как раз с такими ситуациями я и сталкивался)))

>>>так как намного короче записи можно делать

не мелочитесь, насколько короче, на несколько символов?)))

  Ответить  
 
 автор: Sfinks   (13.02.2013 в 14:50)   письмо автору
 
   для: Slo_Nik   (13.02.2013 в 14:39)
 

Если при выводе не пользоваться смарти и прочими шаблонизаторами, то на много короче, да и читабельность лучше. Сравните:
<body>Ваш браузер: <?=$_SERVER['HTTP_USER_AGENT']?></body>
и
<body>Ваш браузер: <?php echo $_SERVER['HTTP_USER_AGENT']; ?></body>
и представьте, что таких вставок несколько сотен.

Я всегда пользуюсь первым вариантом и, когда хостер отключает эту возможность, всегда приходится включать.
И, думаю, именно потому что таких все больше и больше, начиная с php v5.4 запись <?=$var?> доступна всегда, даже с отключенной директивой short_open_tag.

P.S. Хотя еще несколько месяцев назад я был на Вашей стороне =)
P.P.S. Что значит тихо на форуме..... Вопрос темы расчитан на 1 ответ, а раздули..... =))

  Ответить  
 
 автор: confirm   (13.02.2013 в 14:58)   письмо автору
 
   для: Slo_Nik   (13.02.2013 в 14:39)
 

Это не мелочевка, не зря в версии 5.4.0 эта функциональность доступна всегда, не важно с какими тегами вы работаете, а с вашей стороны так это просто надуманность проблемы.

  Ответить  
 
 автор: Алексей Клепиков   (13.02.2013 в 14:15)   письмо автору
 
   для: Slo_Nik   (13.02.2013 в 14:02)
 

>поменяйте цикл do{}while() на просто while()
Для чего?
>Error_Reporting(E_ALL & ~E_NOTICE); перенесите в самое начало файла и чуть измените Error_Reporting(E_ALL);
Куда конкретнее его прописать?

  Ответить  
 
 автор: Slo_Nik   (13.02.2013 в 14:20)   письмо автору
 
   для: Алексей Клепиков   (13.02.2013 в 14:15)
 

почитайте о этих циклах и почувствуйте разницу)))

>>>Куда конкретнее его прописать?
повторяю, в самое начало файла

  Ответить  
 
 автор: Алексей Клепиков   (13.02.2013 в 14:22)   письмо автору
 
   для: Slo_Nik   (13.02.2013 в 14:20)
 

Ок. спасибо!

  Ответить  
 
 автор: Slo_Nik   (13.02.2013 в 14:25)   письмо автору
 
   для: Алексей Клепиков   (13.02.2013 в 14:22)
 

почитайте о этих циклах и почувствуйте разницу)))

do{}while()

while()

кстати, это ссылки на официальный сайт php, достоверней информации быть не может)))
по сравнению с этим сайтом, Попов со своими уроками нервно курит в сторонке)))

  Ответить  
 
 автор: Jovidon   (13.02.2013 в 15:58)   письмо автору
 
   для: Slo_Nik   (13.02.2013 в 14:25)
 

ты хочеш сказать чтобы я свою картинку поменя?
)))

  Ответить  
Rambler's Top100
вверх

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