ugrás a tartalomhoz

100 hír kiolvasás 10 oldalon keresztül, vagyis a LIMIT használata hogy oldalanként hány hír jelenjen meg és mettől...

Vas Dávid · 2006. Szep. 17. (V), 02.13
Üdv!

Nos, ugye van az mikor pl. van vagy 100 hír és azt szeretném hogy egy oldalon csak 10 hír jelenjen meg, de ott legyen a többi 90 hírnek a linkje oldal formában.

Oldalak: 1, 2, 3, 4, 5, 6, 7, 8, 9 -> így ugye csak link rajtuk:)

Nos erre végülis van megoldásom, csak nem tudom, hogy ez a megoldás mennyire jó szerintem túl hosszadalmasan valósítom ezt meg, nos a kérdése az lenne hogy egszerűbben nem lehetne-e megvalósítani mint így:

<?php
$sor = 10;

$from_szama = 0;//ugye ez az hogy honnan kezdje el olvasni(hányadik sortól), és következő oldalra lépéskor $from_novelo_szama-val növeli a LIMIT első paraméterét pl.: 1 page: LIMIT 0, 10 2. page LIMIT 10, 10 3. page: LIMIT 20, 10 és így tovább...
$oldal_szama = 1; //az oldalak kiirásához kell
$from_novelo_szama = "10";//ennyi hírt olvas ki egy oldalon

$sql = mysql_query("... LIMIT $_GET[from], $from_novelo_szama ...");

$hany_oldal_van = $sor/$from_novelo_szama; //ugye itt megtudom hogy max hány oldal van jelen esetben 10
$hany_oldal_van_felfele_kerekitve = ceil($hany_oldal_van); //itt felfelé kerekítek mivel ha 9.1 oldal van tehát mondjuk 91 hír akkor is kell a 10. oldal annak az egy hír megjelenítéséhez

while ($oldal_szama <= $hany_oldal_van_felfele_kerekitve) {
if ($_GET['from'] == $from_szama) {
print ''.$oldal_szama.''; //az aktuális oldalon, ahol tartózkodik azon ne legyen link.
}

elseif ($_GET['from'] != $from_szama) {
print ' <a href="from='.$from_szama.'">'.$oldal_szama.'</a>,';//a többi 9 oldal kiirása linkelve
}


$oldal_szama++;//1-el nagyobb oldalt irjon ki a követjezőnél
$from_szama++;$from_szama++;$from_szama++;
$from_szama++;$from_szama++;$from_szama++;
$from_szama++;$from_szama++;$from_szama++;
$from_szama++;$from_szama++;$from_szama++;
$from_szama++;$from_szama++;$from_szama++; //növele a $from_szama-t 10-el hogy a linkben növekedjen a from mert 1. linken 0 a 2.-on 10 a 3.-on 30, így valósítom meg hogy honnan kezdje el kiolvasni

}

?>
 
1

2 dolog

vbence · 2006. Szep. 17. (V), 12.50
1) Az elseif butaság. Az ELSE eleve azt jelenti, hogy különben, tehát ha az első feltétel nem tejlesül.
2) Ezt a $from_szama++;... őrületet honnan szedted? :) Szerinted a PHP-ben nincs $from_szama = $from_szama + 10 ? Ha elegáns akarsz lenni, akkor $from_szama += 10

Amúgy semmi probléma a kóddal. A példádban a "jelenleg hány oldal van" 1-et fog adni, nem pedig 10-et, (az elején $sor=10) de ezt gondolom csak elnézted.
B
2

szerintem

kerzo · 2006. Szep. 24. (V), 10.15
A $_GET[from]-ban mit adsz át? Szerintem célszerű csak az oldal számát átadni 0-val kezdve. Ez megkönnyíti az adatbázisból való kiolvasást.

$kezdet = $_GET[from]*10+1; // 0*10+1=1; 1*10+1=11
$vege = $kezdet+9;

Az adatbázisból a $kezdet-től a $vege-ig olvasod ki a sorokat.
Ebben az esetben a while végén elég egyszer megadni a $from_szama++;-t.
3

sql injection

Szekeres Gergő · 2006. Szep. 24. (V), 11.34

"..LIMIT $_GET[from], .."
ugye a GET tömbböt ellenőrizted, mielött beraktad a lekérdezésbe?

http://hu.php.net/manual/hu/function.mysql-real-escape-string.php