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

Форум PHP

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

 

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

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

тема: Постраничная навигация для данного скрипта
 
 автор: tima2010   (25.03.2010 в 21:47)   письмо автору
 
 

привет, прошу помощи немогу сделать постраничную навигацию для этого скрипта, он выводит новости из базы данных...

<?
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";};

?>

кто знает как реализовать? 

  Ответить  
 
 автор: Slo_Nik   (26.03.2010 в 00:54)   письмо автору
 
   для: tima2010   (25.03.2010 в 21:47)
 

http://www.softtime.ru/info/articlephp.php?id_article=33

  Ответить  
 
 автор: oliss   (26.03.2010 в 01:16)   письмо автору
 
   для: Slo_Nik   (26.03.2010 в 00:54)
 

Кстати,скрипт очень грамотно написан , но требует немного модерации ( полировки кода вывода в браузер )

  Ответить  
 
 автор: Trianon   (26.03.2010 в 03:39)   письмо автору
 
   для: oliss   (26.03.2010 в 01:16)
 

ой ли...

  Ответить  
 
 автор: Саня   (26.03.2010 в 13:17)   письмо автору
 
   для: Trianon   (26.03.2010 в 03:39)
 

Он ошибся темой, видимо ))

  Ответить  
 
 автор: Slo_Nik   (26.03.2010 в 10:29)   письмо автору
 
   для: oliss   (26.03.2010 в 01:16)
 

Вы какой скрипт имели ввиду?

  Ответить  
 
 автор: sasha1133   (26.03.2010 в 01:38)   письмо автору
 
   для: 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>

Ну вроде бы так. Если не прав поправьте.

  Ответить  
 
 автор: Лена   (26.03.2010 в 10:32)   письмо автору
 
   для: sasha1133   (26.03.2010 в 01:38)
 

>1. Узнаём число записей в базе. Честно говоря не знаю как это лучше всего сделать, как >вариант: $count = mysql_num_rows(mysql_query("SELECT id FROM news", $dbcnx));

SELECT COUNT(*) FROM news
И результат выполнения запроса получать с помощью mysql_result()

  Ответить  
 
 автор: sasha1133   (26.03.2010 в 12:57)   письмо автору
 
   для: Лена   (26.03.2010 в 10:32)
 

Спасибо) Может посоветуете какую нибудь не очень сложную книжку по MySQL, больше с практическим уклоном?

  Ответить  
 
 автор: oliss   (26.03.2010 в 13:56)   письмо автору
 
   для: sasha1133   (26.03.2010 в 12:57)
 

Выбирайте : http://www.softtime.ru/php5/index.php

  Ответить  
 
 автор: sasha1133   (29.03.2010 в 22:37)   письмо автору
 
   для: Лена   (26.03.2010 в 10:32)
 

>SELECT COUNT(*) FROM news
>И результат выполнения запроса получать с помощью mysql_result()

попробовал, не получилось. Можно пожалуйста подробнее

  Ответить  
 
 автор: neadekvat   (29.03.2010 в 22:54)   письмо автору
 
   для: sasha1133   (29.03.2010 в 22:37)
 

Покажите, как пробовали

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

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