|
|
|
| привет, прошу помощи немогу сделать постраничную навигацию для этого скрипта, он выводит новости из базы данных...
<?
require_once("cpanel/lib.php");
$postpref="_1";
if (!isset($_GET['data']) and !isset($_GET['id'])){
//$linedate=date("Y-n-j",time());
$result = mysql_query("select * from ".$table_news." where news_date = '".mysql_real_escape_string($linedate)."' order by `news_id` desc limit 0,$am_news",$connect);
$num_rows = mysql_num_rows($result);
if($num_rows =="0"){$result = mysql_query("select * from ".$table_news." order by `news_id` desc limit 0,$am_news",$connect);$num_rows = mysql_num_rows($result);}
for($i=0;$i < $num_rows;$i++)
{
$row=mysql_fetch_array($result);
$img=$row['news_stamp'];
$news_exp=$row['news_exp'];
?>
<table cellspacing=0 cellpadding=4 width=<?=$tab_width?> border=0>
<tbody>
<tr><td colspan=2 bgcolor=#000000><?
if ($p_time == 1) {print $row['news_time'] . " ";}
if ($p_date == 1){$news_date = explode("-", $row['news_date']);
print "<a href=\"?id=".$row['news_id']."\"><font color=ffffff size=2 face=Verdana>$row[news_title]</font></a>";
print '<br><font color=ffffff size=1 face=Verdana> [Дата размещения '. $news_date[2].'.'.$news_date[1].'.'.$news_date[0].']</font>';}
?></td></tr>
<tr>
<?if ($row['news_img'] == "l"){print "<td valign=top bgcolor=#f0f0db><a href=\"$script_dir/$img_dir/$img$news_exp\" rel=lightbox><img src=\"$script_dir/$img_dir/$img$postpref$news_exp\" border=0></a></td>";}?>
<?if ($row['news_img'] == "n"){print "<td bgcolor=#f0f0db></td>";}
$LengthC=strlen($row['news_content']);
$name = substr($row['news_content'], 0, $PreLengthC)." <hr size=1><a href=\"?id=".$row['news_id']."\"><font face=Verdana size=1>Подробнее...</font></a>";
print "<td width=100% valign=top bgcolor=#f0f0db><font face=Verdana size=2>".$name."</font></td>";
if ($row['news_img'] == "r"){print "<td valign=top bgcolor=#f0f0db><img src=\"$script_dir/$img_dir/$img$postpref$news_exp\" border=0 alt=\"Глобус гурме, гурме уфа\"></td>";}
print "</tr></tbody></table><br>";
}
}
elseif (isset($_GET['data'])){
$linedate=$_GET['data'];
$result = mysql_query("select * from ".$table_news." where news_date = '".mysql_real_escape_string($linedate)."' order by `news_id` desc",$connect);
$num_rows = mysql_num_rows($result);
if($num_rows =="0"){$result = mysql_query("select * from ".$table_news." order by `news_id` desc limit 0,$am_news",$connect);$num_rows = mysql_num_rows($result);}
for($i=0;$i < $num_rows;$i++)
{
$row=mysql_fetch_array($result);
$img=$row['news_stamp'];
$news_exp=$row['news_exp'];
?>
<table cellspacing=0 cellpadding=4 width=<?=$tab_width?> border=0>
<tbody>
<tr><td colspan=2 bgcolor=#000000><?
if ($p_time == 1) {print $row['news_time'] . " ";}
if ($p_date == 1){$news_date = explode("-", $row['news_date']);
print "<a href=\"?id=".$row['news_id']."\"><font color=ffffff size=2 face=Verdana>$row[news_title] </font></a>";
print '<br><font color=ffffff size=1 face=Verdana> ['.$news_date[2].'.'.$news_date[1].'.'.$news_date[0].']</font>';}
?>
</td></tr>
<tr>
<?if ($row['news_img'] == "l"){print "<td valign=top bgcolor=#f0f0db><a href=\"$script_dir/$img_dir/$img$news_exp\" rel=lightbox><img src=\"$script_dir/$img_dir/$img$postpref$news_exp\" border=0></a></td>";}?>
<?if ($row['news_img'] == "n"){print "<td bgcolor=#f0f0db></td>";}
$LengthC=strlen($row['news_content']);
$name = substr($row['news_content'], 0, $PreLengthC)." <hr size=1><a href=\"?id=".$row['news_id']."\"><font face=Verdana size=1>Подробнее...</font></a>";
print "<td width=100% valign=top bgcolor=f0f0db><font face=Verdana size=2>".$name."</font></td>";
if ($row['news_img'] == "r"){print "<td valign=top bgcolor=#f0f0db><img src=\"$script_dir/$img_dir/$img$postpref$news_exp\" border=0 alt=\"Глобус гурме, гурме уфа\"></td>";}
print "</tr></tbody></table><br>";
}
}
elseif
(isset($_GET['id'])){
$id=intval($_GET['id']);
$result = mysql_query("select * from ".$table_news." where news_id = $id",$connect);
$row=mysql_fetch_array($result) or die (print "<script language='Javascript'>function reload() {location = \"http://www.gurme-ufa.ru/\"}; setTimeout('reload()', 0);</script>");
$img=$row['news_stamp'];
$news_exp=$row['news_exp'];
print "<table cellspacing=0 cellpadding=4 width=$tab_width border=0>
<tbody>
<tr><td bgcolor=000000>";
if ($p_time == 1) {print $row['news_time'] . " ";}
if ($p_date == 1){$news_date = explode("-", $row['news_date']);
print "<font face=Verdana size=2 color=ffffff>".$row['news_title']."</font>";
print '<br><font face=Verdana size=1 color=ffffff> ['.$news_date[2].'.'.$news_date[1].'.'.$news_date[0].']</font></td></tr><tr>';}
if ($row['news_img'] == "l")
{print "<td width=100% valign=top bgcolor=#f0f0db><a href=\"$script_dir/$img_dir/$img$news_exp\" rel=lightbox><img src=\"$script_dir/$img_dir/$img$postpref$news_exp\" align=left hspace=10 vspace=5 border=0 alt=\"Увеличить\"></a>";}
if ($row['news_img'] == "n"){print "<td width=100% valign=top bgcolor=#f0f0db>";}
if ($row['news_img'] == "r"){print "<td width=100% valign=top bgcolor=#f0f0db><a href=\"$script_dir/$img_dir/$img$news_exp\"><img src=\"$script_dir/$img_dir/$img$postpref$news_exp\" align=right hspace=5 vspace=5 border=0 alt=\"Увеличить\"></a>";}
print "<font face=Verdana size=2> $row[news_content] </font></td></tr></tbody></table><br>";
}
else {print "error";};
?>
кто знает как реализовать?
|
| |
|
|
|
|
|
|
|
для: tima2010
(25.03.2010 в 21:47)
| | http://www.softtime.ru/info/articlephp.php?id_article=33 | |
|
|
|
|
|
|
|
для: Slo_Nik
(26.03.2010 в 00:54)
| | Кстати,скрипт очень грамотно написан , но требует немного модерации ( полировки кода вывода в браузер ) | |
|
|
|
|
|
|
|
для: oliss
(26.03.2010 в 01:16)
| | ой ли... | |
|
|
|
|
|
|
|
для: Trianon
(26.03.2010 в 03:39)
| | Он ошибся темой, видимо )) | |
|
|
|
|
|
|
|
для: oliss
(26.03.2010 в 01:16)
| | Вы какой скрипт имели ввиду? | |
|
|
|
|
|
|
|
для: tima2010
(25.03.2010 в 21:47)
| | Код выглядит как то не очень наглядно - лень разбираться. Но общий принцип постраничной навигации основан на параметре, который влияет на место, откуда начинают выводиться новости. Он передаётся через $_GET, например news.php?page=2 (вторая страница) Получая этот параметр, определяем номер записи, с какой начинают выводиться новости:
$from = ($_GET['page']-1)*$n, где $n - число новостей на страницу.
Затем делаем запрос к базе в виде "SELECT * FROM 'news' ORDER BY 'date' DESC LIMIT $from, $n" - выбираем все поля из таблицы news, сортированные по дате в обратном порядке (DESC), начиная с записи $from. $n - количество выводимых записей.
Теперь остаётся сделать кнопки типо 1, 2, 3.. и "следующая"/"предыдущая". Для этого нужен опять параметр page и узнать кол-во новостей в базе. Алгоритм примерно такой:
1. Узнаём число записей в базе. Честно говоря не знаю как это лучше всего сделать, как вариант:
$count = mysql_num_rows(mysql_query("SELECT id FROM news", $dbcnx));
|
2. Делим на $n, округляя до большего целого, получаем кол-во страниц.
3. в соответствии с тем, какая сейчас страница, выводим кнопки. Например выводим 2 предыдущие и 2 следующие страницы, плюс кнопки "следующая"/"предыдущая", естественно проверяя, нужно ли их выводить. Ссылка этих кнопок будет в виде <a href="news.php?page=1">1</a>
Ну вроде бы так. Если не прав поправьте. | |
|
|
|
|
|
|
|
для: sasha1133
(26.03.2010 в 01:38)
| | >1. Узнаём число записей в базе. Честно говоря не знаю как это лучше всего сделать, как >вариант: $count = mysql_num_rows(mysql_query("SELECT id FROM news", $dbcnx));
SELECT COUNT(*) FROM news
И результат выполнения запроса получать с помощью mysql_result() | |
|
|
|
|
|
|
|
для: Лена
(26.03.2010 в 10:32)
| | Спасибо) Может посоветуете какую нибудь не очень сложную книжку по MySQL, больше с практическим уклоном? | |
|
|
|
|
|
|
|
|
для: Лена
(26.03.2010 в 10:32)
| | >SELECT COUNT(*) FROM news
>И результат выполнения запроса получать с помощью mysql_result()
попробовал, не получилось. Можно пожалуйста подробнее | |
|
|
|
|
|
|
|
для: sasha1133
(29.03.2010 в 22:37)
| | Покажите, как пробовали | |
|
|
|