|
|
|
| Доброго времени суток. Подскажите как сделать! Проблема в том, что выводятся заметки с постраничной навигацией, но заметки выводятся начиная с первой по дате добавления, нужно с последней!
Вот код:
<? 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 - 5 > 0) $page5left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
if($page - 4 > 0) $page4left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
if($page - 3 > 0) $page3left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
if($page - 2 > 0) $page2left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=view_cat.php?cat='.$cat.'&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 5 <= $total) $page5right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $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 ();
}
?>
|
| |
|
|
|
|
|
|
|
для: Алексей Клепиков
(13.02.2013 в 13:31)
| | в запросе добавьте сортировку в обратном порядке
поменяйте цикл do{}while() на просто while()
Error_Reporting(E_ALL & ~E_NOTICE); перенесите в самое начало файла и чуть измените Error_Reporting(E_ALL);
используйте длинные теги <?php
уберите из кода "@", это мешает контролировать ошибки и предупреждения
p.s. Вы случаем не по урокам "корифея" программистской мысли Е.Попова делали всё? | |
|
|
|
|
|
|
|
для: Slo_Nik
(13.02.2013 в 14:02)
| | Попробую и отпишу. Спасибо
По его урокам. | |
|
|
|
|
|
|
|
для: Алексей Клепиков
(13.02.2013 в 14:10)
| | >>>По его урокам.
забудьте на 99%, что он там рассказывал
вверху страницы есть ссылки на книги, приобретите и учите на здоровье
тем более, что у Попова ни слова ни сказано о безопасности запросов к базе данных. В таком виде, как сейчас, запрос не очень хорош... | |
|
|
|
|
|
|
|
для: Slo_Nik
(13.02.2013 в 14:02)
| | >используйте длинные теги <?php
Это не обязательное условие, и нежелательное лишь с учетом конфигурации РНР | |
|
|
|
|
|
|
|
|
для: Slo_Nik
(13.02.2013 в 14:18)
| | Ерунда, так как данная директива доступна отовсюду, и включить ее проблем нет, так что проблемы о которых вы говорите, это ваши проблемы.
Короткий тег позволяет в старых версиях использовать короткую запись =$var, вместо echo. В версии 5.4.0 эта возможность теперь доступна всегда. Поэтому как поступать, решать только вам, а проблемы так это надуманное. | |
|
|
|
|
|
|
|
для: confirm
(13.02.2013 в 14:22)
| | на локальном допустим включена эта директива
на реальном отключена
получается, для того, чтобы использовать на реальном надо или через .htaccess включить директиву или править файлы
А зачем? Можно сразу писать длинные теги и не заморачиваться из-за этой мелочи | |
|
|
|
|
|
|
|
для: Slo_Nik
(13.02.2013 в 14:29)
| | Я вам русским языком написал, для чего используют короткий тег. Использовать вам его или нет, это решать вам. Лично я использую эту возможность, так как намного короче записи можно делать, и знаете, проблем с "заморачиванием" никаких нет. Это вы уже выдумываете их. По умолчанию короткий тег как раз разрешен, на безопасность он никак не влияет, и очень сомнительно, чтобы какой-то хостер был обеспокоен этой установкой, нагадил вам, и установил в 0. К тому же, еще раз напоминаю - место изменения опции PHP_INI_ALL, лезть в .htaccess необходимости нет. | |
|
|
|
|
|
|
|
для: confirm
(13.02.2013 в 14:35)
| | >>>и очень сомнительно, чтобы какой-то хостер был обеспокоен этой установкой, нагадил вам, и установил в 0
вот как раз с такими ситуациями я и сталкивался)))
>>>так как намного короче записи можно делать
не мелочитесь, насколько короче, на несколько символов?))) | |
|
|
|
|
|
|
|
для: 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 ответ, а раздули..... =)) | |
|
|
|
|
|
|
|
для: Slo_Nik
(13.02.2013 в 14:39)
| | Это не мелочевка, не зря в версии 5.4.0 эта функциональность доступна всегда, не важно с какими тегами вы работаете, а с вашей стороны так это просто надуманность проблемы. | |
|
|
|
|
|
|
|
для: Slo_Nik
(13.02.2013 в 14:02)
| | >поменяйте цикл do{}while() на просто while()
Для чего?
>Error_Reporting(E_ALL & ~E_NOTICE); перенесите в самое начало файла и чуть измените Error_Reporting(E_ALL);
Куда конкретнее его прописать? | |
|
|
|
|
|
|
|
для: Алексей Клепиков
(13.02.2013 в 14:15)
| | почитайте о этих циклах и почувствуйте разницу)))
>>>Куда конкретнее его прописать?
повторяю, в самое начало файла | |
|
|
|
|
|
|
|
для: Slo_Nik
(13.02.2013 в 14:20)
| | Ок. спасибо! | |
|
|
|
|
|
|
|
для: Алексей Клепиков
(13.02.2013 в 14:22)
| | почитайте о этих циклах и почувствуйте разницу)))
do{}while()
while()
кстати, это ссылки на официальный сайт php, достоверней информации быть не может)))
по сравнению с этим сайтом, Попов со своими уроками нервно курит в сторонке))) | |
|
|
|
|
|
|
|
для: Slo_Nik
(13.02.2013 в 14:25)
| | ты хочеш сказать чтобы я свою картинку поменя?
))) | |
|
|
|