Autor Zpráva
sonix
Profil
Zdravím. Z php mám již patřičné skušenosti a už tak trochu "experimentuji". Pokouším se udělat menší herní portál a momentálně se zabývám článkama zejména stránkování článků. Moje představa je taková, že na hlanvní stránce se zobrazí například 10 článků a poté se vytvoří odkaz, na který když se klikne se zobrazí dalších 10 článků k těm prvním 10. Torzo kódu jsem se pokusil napsat ale k funkčnosti podle mých představ to má daleko :(. Proto se na vás obracím s radou, jak upravit tento kod aby fungoval tak jak jsem uvedl výše.


include ("./db.php");
$result = mysql_query("SELECT * FROM aktualizace ORDER BY id", $connection) or die ("chyba prohledavani DB");
while ($zaznam = mysql_fetch_array($result))://zobrazeni vsech clanku
echo "<div class=\"newsdat\">".$zaznam['autor']."</div>\n";
echo "<div class=\"newsnad\"><b>".$zaznam['nadpis']."</b></div>\n";
echo "<div class=\"newsbody\">".$zaznam['text']."<br>\n";
endwhile;

$fa = mysql_num_rows($result); //pocet clanku z vysledku
$str = $_GET['p']; //kolikata stranka
$i = 5; //pocet zobrazenych novinek

if(($i * $str)-$i<=$i){ // u této podmínky si nejsem jistý
$fb = mysql_query("SELECT * FROM aktualizace ORDER BY id LIMIT 0, $i", $connection);
}
echo ('<a href="index.php?str=main&p='.++$str.'">Další novinky</a>');//kdyz kliknu na odkaz zobrazi se prom. i o jednu vyssi
?>
orava
Profil
Preco to neurobis tak ze budes vzdy vypisovat od 1 do 5*$str?
a ten odkaz tam bude vzdy
sonix
Profil
Taky ze ten odkaz tam je furt neni zacleněnej do zadny fce takze neni na nic vazanej. Právě to je nejvetší problém. Nevím jak na tu podmínku aby se vzdy vypsalo plus dalsich 10 novinek k tem predchozim 10.
Harwen
Profil
Použiješ proměnnou $_GET["page"] (například)
Ten bude defaultně 1
Nejdřív se napojíš do db a zjistíš celkovej počet záznamů v db.
Pak se napojíš do db a do dotazu hodíš limit kterej předtím spočítáš jako $_GET["page"]*10 a ($_GET["page"]+1)*10 (10 nahraď za počet příspěvků který zobrazuješ, já navíc mám ještě u druhýho limitu -1, aby se hraniční příspěvek zobrazil na obou stránkách - kontrola jestli se zobrazuje vše)

Dole ve stránkování pak vydělíš celkovej počet záznamů počtem záznamů na stránku. Dostaneš počet zobrazovaných stránek. No a pak už jen stačí odkazy Předchozí a Další kdy předchozí bude mít $_GET["page"] o jedno menší, další zase větší. Jo a pak to chce kontrolu aby jsi nešel buď do mínusu a nebo nestránkoval moc (takže pokud je proměnná 0 tak to nezobrazí Předchozí, pokud je velká jako celkový počet tak nezobrazí Další)
Snad to je pochopitelný :-)

/// EDIT

Pokud chceš neprakticky zobrazir další a to původní už ponechat tak jen nech spodní limit na 0, ne? :-)
sonix
Profil
Jeste se na to podivam a zkusim to podle tve rady.
sonix
Profil
Tak jsem to zkusil podle toho co jsi mi radil skoro vse funguje jak ma az na malou chybicku :D kdyz otevres tu stranku kam by se meli defaultně zobrazit nejake ty prispevky (10) tak se zobrazi jen ta dalsi stranka a kdyz na to kliknes tak teprve potom se zobrazi prvnich 10prispevku.
Harwen
Profil
dej sem kód ;-)
sonix
Profil
$str = $_GET['p']; //kolikata stranka
$i = 5; //pocet zobrazenych novinek
$limit = $i * $str;

$fb = mysql_query("SELECT * FROM aktualizace ORDER BY id LIMIT 0, $limit", $connection);
while ($zaznam = mysql_fetch_array($fb))://zobrazeni vsech clanku
echo "<!-- --------------------------------------------------------- -->\n";
echo "<!-- --------------------------------------------------------- -->\n";
echo "<div class=\"newsdat\">".$zaznam['autor']." | ".$zaznam['datum']."</div>\n";
echo "<div class=\"newsnad\"><b>".$zaznam['nadpis']."</b></div>\n";
echo "<div class=\"newsbody\">".$zaznam['text']."<br>\n";
echo "<p class=\"text\" align=\"right\">\n<font size=\"1\">Zdroj:".$zaznam['zdroj']."</font>\n</p>\n</div>\n";
endwhile;
echo ('<a href="index.php?str=main&p='.++$str.'"><font color="white"><H1 color="white">Další novinky</H1></font></a>');//kdyz kliknu na odkaz zobrazi se prom. i o jednu vyssi



Tohle tam mam :) pro vyzkouseni se muzes mrknout na www.kyllee.ic.cz
orava))
Profil *
za $str = $_GET['p']; daj toto:
if (empty($str)) $str=1;
sonix
Profil
to orava)) THX funguje to jako hodinky :) dik moc. akorat to if (empty($str)) $str=1; znamena ze kdyz je $str nevyplneny tak se do promenny $str priradi 1 ? To je rozumny. THX

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: