Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Stronicowanie-jak w phpBB
Forum PHP.pl > Forum > Gotowe rozwiązania
FastRed
Witam.
Mam problem, z którym męczę się już kilka godzin, ale rezultaty są ciągle mierne :/. Potrzebne mi jest stronicowanie wyników(do newsów pobieranych z bazy mysql), takie jak w phpBB, czyli:
1, 2, 3 ... 11, 12, 13 Następny
Poprzedni 1, 2, 3 ... 6, 7, 8 ... 11, 12, 13 Następny

Normalnie stronicowanie:
poprzednia | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | następna
umiem napisać, i jest to dość proste, ale nie mogę dojść jak zrobić, aby w odpowiednim momencie pojawiały się te kropeczki.
Szukałem na phpclasses, i próbowałem pozmieniać kod z phpbb(funkcja generate_pagination z pliku includes/functions.php), ale nic mi nie wychodzi.

Jeśli ktoś wie jak napisać takie coś to proszę o pomoc(najlepiej od razu z przykładem, ponieważ nie bardzo mi dzisiaj idzie myślenie).

BTW. szukałem na forum i znalazłem tylko linka do webcity, który teraz nie działa

mój kod:
[php:1:5c2f3e41f0]<?php
$ile = 7;
$q = mysql_query ('SELECT COUNT(id) AS id FROM blog_notki');
$row = mysql_fetch_array ($q);
$num=$wynik2[id];
$stron = ceil ($num / $ile);

if (!isset ($_GET['page']) || ereg ('[^0-9]', $_GET['page']))
{
$page = 1;
}else{
$page = $_GET['page'];
}
$query = 'SELECT * FROM news ORDER BY id DESC LIMIT '.(($page - 1) * $ile).', '.$ile;
$result = mysql_query ($query) or die(mysql_error());
$news= array();
while ($row=mysql_fetch_assoc($result)) {
$news[] = $row;
}
if ($stron > 1){
if ($page > 1)
$spis .= ('<a href="index.php?page='.($page-1).'">poprzednia</a> | ');
else
$tabela_stron = array ();
for ($i = 1; $i <= $stron; $i++)
$tabela_stron[$i-1] = '<a href="index.php?page='.$i.'">'.$i.'</a>';
$tabela_stron[$page-1] = $page;
$spis .= (join (' | ', $tabela_stron));
unset ($tabela_stron);
if ($page < $stron) $spis .= (' | <a href="index.php?page='.($page+1).'">następna</a>');
}
?>[/php:1:5c2f3e41f0]

Pozdrawiam, FastRed.
Kocurro
Podsyłam Ci kod z jakiego ja korzystam - moze on Cie torchę naprowadzi, wybacz, żen ie pomogę bardziej ale za chwilkę lecę na studniówkę...

jak to Cię nie naprowadzi to jutro popołudniu spróbuję dla Ciebie coś innego napisać...

pozdrawiam

wynik znajduje się w $data...$pid to numer aktualnej strony (liczony od zera), $files to lista plików (a to dlatego, że może być kilka plików na jednej stornie)..

[php:1:9a776e3b3a]<?
$data = "";
if ( $files < 10) {
while( $row = $db->sql_fetchrow( $res)) {
if ( $data != "") $data .= "<br>";
$data .= "<a href="${siteurl}?mod=download&op=file&cid=$cid&fid=$row[id]">$row[name]</a><br>$row[hint]<br>";
};
} else {
if ( isset( $_GET[pid])){ $pid = $_GET[pid];} else {$pid = 0;}
if (( $pid * 10) > $files - 1) {
$template->write_mainblock( "<p class="mb_text" align="center">Nie ma żadnych plików na tej stronie</p>");
} else {
$start = $pid * 10;
$res = $db->sql_query( "SELECT * FROM tvm_download_files WHERE `cid`='$cid' LIMIT ".$start.", 10");
$data = "";
while( $row = $db->sql_fetchrow( $res)) {
if ( $data != "") $data .= "<br>";
$data .= "<a href="${siteurl}?mod=download&op=file&cid=$cid&pid=${pid}&fid=$row[id]">$row[name]</a><br>$row[hint]<br>";
};
$data .= "<br><br><p align="center">";
if ( $pid > 0) {
$data.="<a href="${siteurl}?mod=download&cid=$cid&pid=".($pid-1)."">Poprzednia strona</a> ";
$temp = $pid;
$data .= "&nbsp;&nbsp;";
$data.="<a href="${siteurl}?mod=download&cid=$cid&pid=0">1</a>";
if ( $pid > 1) {
$data .= " ";
$data .= "<a href="${siteurl}?mod=download&cid=$cid&pid=1">2</a>";
};
if ( $pid == 3) {
$data .= " ";
$data .= "<a href="${siteurl}?mod=download&cid=$cid&pid=2">3</a>";
} else if ( $pid > 3) {
if ( $pid != 4) {
$data.=" .. ";
} else {
$data .= " ";
};
if ( $pid > 4)
$data .= " ";
$data .= "<a href="${siteurl}?mod=download&cid=$cid&pid=".($pid-2)."">".($pid - 1)."</a>";
$data .=" ";
$data .= "<a href="${siteurl}?mod=download&cid=$cid&pid=".($pid-1)."">$pid</a>";

};
$data .= " ";
};
$data .= $pid+1;
$last = (($files - 1) - ($files -1) % 10) / 10;
if ( $pid < $last) {
if ( $last - $pid > 2) {
$data .= " ";
$data .= "<a href="${siteurl}?mod=download&cid=$cid&pid=".($pid+1)."">".($pid + 2)."</a>";
};
if ( $last - $pid > 3) {
$data .= " ";
$data .= "<a href="${siteurl}?mod=download&cid=$cid&pid=".($pid+2)."">".($pid + 3)."</a>";
};
if ( $last - $pid > 4) {
$data .= " .. ";
};
if ( $last - $pid > 1) {
$data .= " ";
$data .= "<a href="${siteurl}?mod=download&cid=$cid&pid=".($last-1)."">".($last)."</a>";
};
$data .= " ";
$data .= "<a href="${siteurl}?mod=download&cid=$cid&pid=".($last)."">".($last + 1)."</a>";
$data .= "&nbsp;&nbsp;";
$data.="<a href="${siteurl}?mod=download&cid=$cid&pid=".($pid+1)."">Następna strona</a>";
};
$data .= "</p>";
}
};
?>[/php:1:9a776e3b3a]

Wszelkich moderatorowó i opiekunów przepraszam za tego posta - próbuję pomóc tak jak mogę w tym momencie...
FastRed
Przejrzałem ten kod, i chyba jednak o coś innego mi chodzi.
Prośba o pomoc ciągle aktualna winksmiley.jpg.

edit: Posiedziałem jeszcze trochę nad tym i jakoś sam sobie napisałem winksmiley.jpg.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.