Array
(
[actual_unit] => 11
[pages] => Array
(
[11] => article200.htm
[12] => article220.htm
[13] => article240.htm
[14] => article260.htm
[15] => article280.htm
)
[prev_arrow] => article160.htm
[next_arrow] => article300.htm
)
постраничный вывод информации из Mysql на PHP
Код:
<?php
include "config.php";
function page()
{
if(empty($_GET["page"]))
{
$page = 0;
}
else
{
if(!is_numeric($_GET["page"])) die("Неправильный формат номера страницы!");
$page = $_GET["page"];
}
return $page;
}
function sql_query($onpage, $page, $table)
{
$begin = $page*$onpage; // откуда начинать
$sql = "SELECT * FROM $table LIMIT ".$begin.", ".$onpage;
$result = mysql_query($sql) or die(mysql_error());
return $result;
}
function navigation($onpage, $page, $table)
{
$return = null;
$count = mysql_query("SELECT COUNT(*) FROM kupc_news_base") or die(mysql_error());
$count = mysql_fetch_array($count);
$count = $count[0];
$pages = $count/$onpage;
if($page!==0)
{
$prev = "<A HREF=\"?page=".($page-1)."\"><</A>";
}
else
{
$prev = "<";
}
if($page<round($pages-1))
{
$next = "<A HREF=\"?page=".($page+1)."\">></A>";
}
else
{
$next = ">";
}
for($i=0; $i<$pages; $i++)
{
if($i==$page)
{
$return.="[".($i+1)."]";
}
else
{
$return.="<A HREF=\"?page=".$i."\">[".($i+1)."]</A>";
}
}
return $prev.$return.$next;
}
$onpage = 2; // записей на страницу
$table = "kupc_news_base"; // из какой таблицы
mysql_connect("$localhost", "$user", "$pass") or die(mysql_error()); // коннект к БД
mysql_select_db("$bd_name"); // выбор БД
$page = page(); // определяем страницу
$result = sql_query($onpage, $page, $table); // sql - запрос
while($data = mysql_fetch_array($result)) // цикл вывода
{
// шаблон вывода нужно изменить
// $data["название_поля"] - содержание поля
echo $data["id"]." <B>".$data["author"]."</B><BR>";
echo $data["text_polno"]."<P>";
}
$navigation = navigation($onpage, $page, $table); // определим навигацию
echo $navigation; // выведем ее
mysql_close(); // отключение от БД
?>
include "config.php";
function page()
{
if(empty($_GET["page"]))
{
$page = 0;
}
else
{
if(!is_numeric($_GET["page"])) die("Неправильный формат номера страницы!");
$page = $_GET["page"];
}
return $page;
}
function sql_query($onpage, $page, $table)
{
$begin = $page*$onpage; // откуда начинать
$sql = "SELECT * FROM $table LIMIT ".$begin.", ".$onpage;
$result = mysql_query($sql) or die(mysql_error());
return $result;
}
function navigation($onpage, $page, $table)
{
$return = null;
$count = mysql_query("SELECT COUNT(*) FROM kupc_news_base") or die(mysql_error());
$count = mysql_fetch_array($count);
$count = $count[0];
$pages = $count/$onpage;
if($page!==0)
{
$prev = "<A HREF=\"?page=".($page-1)."\"><</A>";
}
else
{
$prev = "<";
}
if($page<round($pages-1))
{
$next = "<A HREF=\"?page=".($page+1)."\">></A>";
}
else
{
$next = ">";
}
for($i=0; $i<$pages; $i++)
{
if($i==$page)
{
$return.="[".($i+1)."]";
}
else
{
$return.="<A HREF=\"?page=".$i."\">[".($i+1)."]</A>";
}
}
return $prev.$return.$next;
}
$onpage = 2; // записей на страницу
$table = "kupc_news_base"; // из какой таблицы
mysql_connect("$localhost", "$user", "$pass") or die(mysql_error()); // коннект к БД
mysql_select_db("$bd_name"); // выбор БД
$page = page(); // определяем страницу
$result = sql_query($onpage, $page, $table); // sql - запрос
while($data = mysql_fetch_array($result)) // цикл вывода
{
// шаблон вывода нужно изменить
// $data["название_поля"] - содержание поля
echo $data["id"]." <B>".$data["author"]."</B><BR>";
echo $data["text_polno"]."<P>";
}
$navigation = navigation($onpage, $page, $table); // определим навигацию
echo $navigation; // выведем ее
mysql_close(); // отключение от БД
?>
Он ввыводит постранично информацию из базы данных, как сделать что бы он вначале ввыводил последнию новость, затем предпоследнию и т.д.??? Буду благодарен за любые советы. За ОЧЕНЬ ценную помощь могу отблагодарит (подгоню базу e-mail адресов в 10000, актуальность - 87%)
Читай в MySQL про ORDER BY.
Не по теме: Хоть бы код оформил что ли...
Цитата: UAS
Не по теме: Хоть бы код оформил что ли...
А зачем??? Кстати спасибо Shine за совет... Хотя ща возникла другая проблема, даю код если кто захочет помочь - то ему он пригодиться...
Код:
INDEX.PHP
<?php
include "config.php";
function page()
{
if(empty($_GET["page"]))
{
$page = 0;
}
else
{
if(!is_numeric($_GET["page"])) die("Неправильный формат номера страницы!");
$page = $_GET["page"];
}
return $page;
}
function sql_query($onpage, $page, $table)
{
$begin = $page*$onpage; // откуда начинать
$sql = "SELECT * FROM $table ORDER BY $onpage DESC";
$result = mysql_query($sql) or die(mysql_error());
return $result;
}
function navigation($onpage, $page, $table)
{
$return = null;
$count = mysql_query("SELECT COUNT(*) FROM .... ") or die(mysql_error());
$count = mysql_fetch_array($count);
$count = $count[0];
$pages = $count/$onpage;
if($page!==0)
{
$prev = "<A HREF=\"?page=".($page-1)."\"><</A>";
}
else
{
$prev = "<";
}
if($page<round($pages-1))
{
$next = "<A HREF=\"?page=".($page+1)."\">></A>";
}
else
{
$next = ">";
}
for($i=0; $i<$pages; $i++)
{
if($i==$page)
{
$return.="[".($i+1)."]";
}
else
{
$return.="<A HREF=\"?page=".$i."\">[".($i+1)."]</A>";
}
}
return $prev.$return.$next;
}
$onpage = 2; // записей на страницу
$table = "kupc_news_base"; // из какой таблицы
mysql_connect("$localhost", "$user", "$pass") or die(mysql_error()); // коннект к БД
mysql_select_db("$bd_name"); // выбор БД
$page = page(); // определяем страницу
$result = sql_query($onpage, $page, $table); // sql - запрос
while($data = mysql_fetch_array($result)) // цикл вывода
{
// шаблон вывода нужно изменить
// $data["название_поля"] - содержание поля
echo $data["id"]." <B>".$data["author"]."</B><BR>";
echo $data["text_polno"]."<P>";
}
$navigation = navigation($onpage, $page, $table); // определим навигацию
echo $navigation; // выведем ее
mysql_close(); // отключение от БД
?>
CONFIG.PHP
<?php
$localhost = "localhost"; //адрес скула
$user = "user"; //пользователь
$pass = "pass"; //пароль
$bd_name = ""; //название базы
$tbl_name = ""; // название таблицы
?>
Структура таблицы базы
CREATE TABLE имя
(
`id` int(11) NOT NULL auto_increment,
`author` text NOT NULL,
`text_kpatko` text NOT NULL,
`text_polno` text NOT NULL,
`views` int(11) NOT NULL default '1',
`datew` text NOT NULL,
`ip` text NOT NULL,
UNIQUE KEY id (id)
) TYPE=MyISAM;
#
# Дамп данных таблицы
#
INSERT INTO kupc_news_base VALUES (1, 'MoLe-X', 'Первая фигня, краткая', 'Первая фигня, полная', '2', '10.02.2007', '127.0.0.1');
INSERT INTO kupc_news_base VALUES (2, 'MoLe-X', 'Вторая фигня, краткая', 'Вторая фигня, полная', '3', '10.02.2007', '127.0.0.1');
INSERT INTO kupc_news_base VALUES (3, 'MoLe-X', 'Третья фигня, краткая', 'Третья фигня, полная', '4', '10.02.2007', '127.0.0.1');
INSERT INTO kupc_news_base VALUES (4, 'MoLe-X', 'Четвер фигня, краткая', 'Четвер фигня, полная', '5', '10.02.2007', '127.0.0.1');
INSERT INTO kupc_news_base VALUES (5, 'MoLe-X', 'Пятаяя фигня, краткая', 'Пятаяя фигня, полная', '6', '10.02.2007', '127.0.0.1');
INSERT INTO kupc_news_base VALUES (6, 'MoLe-X', 'Шестая фигня, краткая', 'Шестая фигня, полная', '7', '10.02.2007', '127.0.0.1');
<?php
include "config.php";
function page()
{
if(empty($_GET["page"]))
{
$page = 0;
}
else
{
if(!is_numeric($_GET["page"])) die("Неправильный формат номера страницы!");
$page = $_GET["page"];
}
return $page;
}
function sql_query($onpage, $page, $table)
{
$begin = $page*$onpage; // откуда начинать
$sql = "SELECT * FROM $table ORDER BY $onpage DESC";
$result = mysql_query($sql) or die(mysql_error());
return $result;
}
function navigation($onpage, $page, $table)
{
$return = null;
$count = mysql_query("SELECT COUNT(*) FROM .... ") or die(mysql_error());
$count = mysql_fetch_array($count);
$count = $count[0];
$pages = $count/$onpage;
if($page!==0)
{
$prev = "<A HREF=\"?page=".($page-1)."\"><</A>";
}
else
{
$prev = "<";
}
if($page<round($pages-1))
{
$next = "<A HREF=\"?page=".($page+1)."\">></A>";
}
else
{
$next = ">";
}
for($i=0; $i<$pages; $i++)
{
if($i==$page)
{
$return.="[".($i+1)."]";
}
else
{
$return.="<A HREF=\"?page=".$i."\">[".($i+1)."]</A>";
}
}
return $prev.$return.$next;
}
$onpage = 2; // записей на страницу
$table = "kupc_news_base"; // из какой таблицы
mysql_connect("$localhost", "$user", "$pass") or die(mysql_error()); // коннект к БД
mysql_select_db("$bd_name"); // выбор БД
$page = page(); // определяем страницу
$result = sql_query($onpage, $page, $table); // sql - запрос
while($data = mysql_fetch_array($result)) // цикл вывода
{
// шаблон вывода нужно изменить
// $data["название_поля"] - содержание поля
echo $data["id"]." <B>".$data["author"]."</B><BR>";
echo $data["text_polno"]."<P>";
}
$navigation = navigation($onpage, $page, $table); // определим навигацию
echo $navigation; // выведем ее
mysql_close(); // отключение от БД
?>
CONFIG.PHP
<?php
$localhost = "localhost"; //адрес скула
$user = "user"; //пользователь
$pass = "pass"; //пароль
$bd_name = ""; //название базы
$tbl_name = ""; // название таблицы
?>
Структура таблицы базы
CREATE TABLE имя
(
`id` int(11) NOT NULL auto_increment,
`author` text NOT NULL,
`text_kpatko` text NOT NULL,
`text_polno` text NOT NULL,
`views` int(11) NOT NULL default '1',
`datew` text NOT NULL,
`ip` text NOT NULL,
UNIQUE KEY id (id)
) TYPE=MyISAM;
#
# Дамп данных таблицы
#
INSERT INTO kupc_news_base VALUES (1, 'MoLe-X', 'Первая фигня, краткая', 'Первая фигня, полная', '2', '10.02.2007', '127.0.0.1');
INSERT INTO kupc_news_base VALUES (2, 'MoLe-X', 'Вторая фигня, краткая', 'Вторая фигня, полная', '3', '10.02.2007', '127.0.0.1');
INSERT INTO kupc_news_base VALUES (3, 'MoLe-X', 'Третья фигня, краткая', 'Третья фигня, полная', '4', '10.02.2007', '127.0.0.1');
INSERT INTO kupc_news_base VALUES (4, 'MoLe-X', 'Четвер фигня, краткая', 'Четвер фигня, полная', '5', '10.02.2007', '127.0.0.1');
INSERT INTO kupc_news_base VALUES (5, 'MoLe-X', 'Пятаяя фигня, краткая', 'Пятаяя фигня, полная', '6', '10.02.2007', '127.0.0.1');
INSERT INTO kupc_news_base VALUES (6, 'MoLe-X', 'Шестая фигня, краткая', 'Шестая фигня, полная', '7', '10.02.2007', '127.0.0.1');
Цитата:
А зачем???
А ЗАТЕМ, что в таком виде за "спасибо" читать мало кто станет.
Цитата:
Хотя ща возникла другая проблема, даю код если кто захочет помочь - то ему он пригодиться...
В смысле "ему он пригодиться"? Вряд ли тут собрались люди, которые не напишут подобного в более приглядном виде - это раз, целесообразнее - это два. Если это было сказано в форме отдолжения - "так и быть, кто хочет поработать телепатом, предоставляю код...", то что ж, спасибо, будем развивать сверх-естественные способности.
Суть описана так и не была, КАКАЯ, если не секрет "другая проблема"?
загнать можно было
[COLOR=darkred]2MoLe-X: На первый раз тебе большой выговор с занесением в репутацию за хамство. Второй раз, когда я буду оформлять твой код - пойдёшь в баню. Ознакомься с правилами, прежде чем писать "а зачем?" на предложение оформить код.[/COLOR]
[COLOR=darkred]=========================[/COLOR]
На этом форуме уже раза три ложил функцию, которую написал ещё года четыре назад и до сих пор её пользуюсь (в различных модификациях):
Код:
function GetNavArray($startItem, $itemsCount, $unitsPerPage, $unitsInNavbar, $URLString=null)
{
$num_units_all=ceil($itemsCount/$unitsPerPage);
$actual_block=floor(($startItem/$unitsPerPage)/$unitsInNavbar);
$end_block=$num_units_all/$unitsInNavbar;
$start_unit=floor(($actual_block*$unitsInNavbar)+1);
$end_unit=$start_unit+$unitsInNavbar;
for($n=$start_unit; $n<$end_unit; ++$n){
$val = (int)(($n*$unitsPerPage)-$unitsPerPage);
if($val<=$startItem) $ret['actual_unit'] = $n;
$ret['pages'][$n] = is_null($URLString) ? $val : sprintf($URLString, $val);
}
$start_unit!=1 ? $ret['prev_arrow'] = $actual_block * (($unitsPerPage * $unitsInNavbar) - $unitsPerPage) : $ret['prev_arrow'] = 0;
$actual_block < floor($num_units_all/$unitsInNavbar) ? $ret['next_arrow'] = $end_unit * $unitsPerPage - $unitsPerPage : $ret['next_arrow'] = 0;
if(!is_null($URLString)){
$ret['prev_arrow'] = $ret['prev_arrow'] ? sprintf($URLString, $ret['prev_arrow']) : 0;
$ret['next_arrow'] = $ret['next_arrow'] ? sprintf($URLString, $ret['next_arrow']) : 0;
}
return $ret;
}
{
$num_units_all=ceil($itemsCount/$unitsPerPage);
$actual_block=floor(($startItem/$unitsPerPage)/$unitsInNavbar);
$end_block=$num_units_all/$unitsInNavbar;
$start_unit=floor(($actual_block*$unitsInNavbar)+1);
$end_unit=$start_unit+$unitsInNavbar;
for($n=$start_unit; $n<$end_unit; ++$n){
$val = (int)(($n*$unitsPerPage)-$unitsPerPage);
if($val<=$startItem) $ret['actual_unit'] = $n;
$ret['pages'][$n] = is_null($URLString) ? $val : sprintf($URLString, $val);
}
$start_unit!=1 ? $ret['prev_arrow'] = $actual_block * (($unitsPerPage * $unitsInNavbar) - $unitsPerPage) : $ret['prev_arrow'] = 0;
$actual_block < floor($num_units_all/$unitsInNavbar) ? $ret['next_arrow'] = $end_unit * $unitsPerPage - $unitsPerPage : $ret['next_arrow'] = 0;
if(!is_null($URLString)){
$ret['prev_arrow'] = $ret['prev_arrow'] ? sprintf($URLString, $ret['prev_arrow']) : 0;
$ret['next_arrow'] = $ret['next_arrow'] ? sprintf($URLString, $ret['next_arrow']) : 0;
}
return $ret;
}
Вобщем, на входе такие данные:
$startItem - порядковый номер записи
$itemsCount - всего записей из БД, которые могут быть
$unitsPerPage - записей показываемых на одной странице
$unitsInNavbar - сколько ссылок будет в "листалке"
$URLString - опционально, если хочется получить уже готовые ссылки, типа article8.htm - в этом случае параметр $URLString будет выглядеть как article%d.htm
Т.е., например GetNavArray(200, 30000, 20, 5, "article%d.htm") вернёт вот такой массив:
Код: