![]() |
|
||||||||||
|
|
|
|||||
|
Люди кто-нибуть киньте или напишите код, просто сколько их уже перепробовал ...
мне нужен код с выводом страниц, тобишь напр.: 1 | 2 | 3 Просто без этого можна использовать лимит ... но это не то ... Вобщем помогите скриптом !!!
__________________
заходите в гости advocat, это не по професия - это диагноз! Обычно в PHP обитаю ... |
|
|||||
|
Ветеран форума
|
Похожий скрипт я писал гдето месяца два назад. Он дома и работает (что удивляет)....
ТО что внизу написано за 17 минут... возможны ошибки (как синтаксические так и орфоргафические...) <?php $user="pejone"; $pass="pejone"; $host="localhost"; $db="some"; mysql_connect($host, $user, $pass); mysql_select_db($db); $counter=mysql_num_rows(mysql_query("SELECT * FROM sometable")); //узнаем на сколько страниц разбить вывод $step="10"; $steps=$counter/$step; if ( $steps == "0") { echo (" 1 "); } else { for ($n=0; $n <= $steps; $n++) { printf("<a href=show.php?id=$n> $n </a>" ); } } ?> а в файле show.php пишем <? $user="pejone"; $pass="pejone"; $host="localhost"; $db="some"; mysql_connect($host, $user, $pass); mysql_select_db($db); $counter=mysql_num_rows(mysql_query("SELECT * FROM sometable")); $downmerg=$n*10-10; $counttop=$n*10; $more=$counter-$counttop; if ($more <= "10") { $topmerg=$more; } elseif ($more > "10") { $topmerg=$n*10; } for ($i=$downmerg; $i <= $topmerg; $i++) { $data=mysql_fetch_array(mysql_query(" SELECT * FROM sometable WHERE id = '$i' ")); echo ("$data[somevalue]"); } ?> если подробней то емейлом.... pejone@[NOTFORSPAMERS]svitonline.com убери [NOTFORSPAMERS]....
__________________
... |
|
|||||
|
Регистрация: Oct 2001
Адрес: в Петербурге
Сообщений: 2,430
|
...не согласен с идеей Пижона, насчет того, что режем исходя из кол-ва страниц. На практике необходимо исходить из кол-ва записей на одной странице. Допустим, гостевой книги.
$num=10; // 10 записей на одну страницу, передается как параметр
$page=1; // номер страницы, передается как параметр.
mysql_connect(...bla-bla-bla...
.mysql_select_db(..bla-bla-bla...) //коннектимся...
$query="SELECT name, msg, smth_else_field FROM yourtable";
$r=mysql_query($query);
$npages=1; //кол-во страниц (вычисляется ниже)
$counter=0;
while($counter<mysql_num_rows($r)){
$counter=$num*$npages;
$npages++;
}
$npages-=1; // избавляемся от лишнего значения, порожденного циклом.
if($page>$npages)$page=$npages; // Если просят "большую" страницу, то выдаем последнюю.
if($page<1)$page=1; // Если просят отрицательную страницу, то выдаем первую.
if($npages==1){ // у нас записей меньше чем $num, выдаем ВСЕ записи:
$x=0;
while($x<mysql_num_rows($r)){ //тут делаем что хотим, например просто print:
print mysql_result($r,$x,'name');
print mysql_result($r,$x,'msg');
print mysql_result($r,$x,'smth_else_field');
$x++;
}
}elseif($page<=($npages-1)){ // У нас страница ПОЛНОСТЬЮ забита записями в кол-ве $num (последняя страница не обязательно)
$x=$num*($page-1);
while($x<$num*$page){ //тут делаем что хотим, например просто print:
print mysql_result($r,$x,'name');
print mysql_result($r,$x,'msg');
print mysql_result($r,$x,'smth_else_field');
$x++;
}
}else{ // $page - это последняя страница, там записей скорее всего меньше $num:
$x=$num*($page-1);
while($x<mysql_num_rows($r)){ //тут делаем что хотим, например просто print:
print mysql_result($r,$x,'name');
print mysql_result($r,$x,'msg');
print mysql_result($r,$x,'smth_else_field');
$x++;
}
}
Вроде так, ошибки не исключены, т.к. написано за 11 минут. |
|
|||||
|
хех. А просто текст? Если не из mysql?
__________________
Что за дурь? 50 символов в подписи!? |
|
|||||
|
Ветеран форума
|
function getPages($total, $page, $link, $perpage) {
$mpp = $perpage;
$prev_page = $page - 1;
$next_page = $page + 1;
if ($total <= $mpp) $pages = 1;
elseif($total % $mpp == 0) $pages = $total / $mpp;
else $pages = $total / $mpp + 1;
$pages = (int) $pages;
$s_pages = $page<10 ? 1 : floor($page / 10) * 10;
$e_pages = $page + 9;
if ($e_pages > $pages) {
$e_pages = $pages;
}
$s = "";
if($prev_page != 0) $s = "<a href=\"".$link."page=1\"><<</a> \n";
if($prev_page) {
$s .= "<a href=\"".$link."page=$prev_page\"><</a> \n";
}
for($i=$s_pages;$i<=$e_pages;$i++) {
if ($i != $page) {
$s .= "<a href=\"".$link."page=$i\">$i</a> \n";
} elseif ($i != 1) {
$s .= " <b>$i</b> ";
} elseif ($page != $pages) {
$s .= " <b>1</b> ";
}
}
if($page != $pages) {
$s .= "<a href=\"".$link."page=$next_page\">></a> \n";
$s .= "<a href=\"".$link."page=$pages\">>></a> \n";
}
return $s;
}
--------------------------------------------------------------------------------
а вызывать, например
$print_pages = getPages($total, $page, "$PHP_SELF?param1=1& param2=2&", $pp);
где $total - всего записей, $page - текущая страница, $pp - кол-во записей на страницу.
|
|
|||||
|
2 Pejone и [subway]design : Спасибки ... попробую, будут проблеммы скажу, просто совсем меня уже достали на работе и маловато времени остается
![]() 2 juggy: Насколько я помню, то постраничный вывод из тхт расматривался отдельным топиком, но там все проще, и этот скрипт (из тхт знаю давно ...)
__________________
заходите в гости advocat, это не по професия - это диагноз! Обычно в PHP обитаю ... |
|
|||||
|
Ветеран форума
|
у меня как бы немного поменьше код получился... =)
// ÇÀÏÐÎÑ Â ÌÞÑÊË È ÏÎÄÑ×¨Ò ÎÁÙÅÃÎ ÐÅÇÓËÜÒÀÒÀ
$result = mysql_query($query);
$number = mysql_numrows($result);
// ÂÛÂÎÄ ÑÒÐÎÊÈ ÄËß ËÈÑÒÀÍÈß
if (!isset($page)) {
$page=1;
}
$cikl = ceil($number / 5);
echo "<div align=left class=casino>found $number casinos<br>Pages: ";
for ($i=1;$i<=$cikl;$i++) {
if ($page == $i) {
echo "<b>$i</b> ";
} else {
echo "<a href='.?&page=".$i."'>$i</a> ";
}
}
echo "</div>";
// ÇÀÏÐÎÑ Â ÌÞÑÊË ÇÀ ÏßÒÜÞ ÐÅÇÓËÜÒÀÒÀÌÈ
$page = ($page-1)*5;
$query .= " LIMIT $page,5";
$result = mysql_query($query);
$number = mysql_numrows($result);
// ÂÛÂÎÄ ÑÀÌÈÕ ÊÀÇÈÍÎ
for ($i=0;$i<$number;$i++){
$info = mysql_result($result,$i,"info");
echo $i." - ".$info."<br>";
}
Последний раз редактировалось nagash; 12.03.2002 в 03:41. |
|
|||||
|
Ветеран форума
|
ох лутше бы не постил этот код...
вобщем у кого будут вопросы спрашивайте... =) |
![]() |
Часовой пояс GMT +4, время: 06:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|