FastRed
14.02.2004, 17:57:45
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
14.02.2004, 18:03:23
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 .= " ";
$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 .= " ";
$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
15.02.2004, 01:15:12
Przejrzałem ten kod, i chyba jednak o coś innego mi chodzi.
Prośba o pomoc ciągle aktualna
.
edit: Posiedziałem jeszcze trochę nad tym i jakoś sam sobie napisałem
.