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:
  1. <?php  
  2. $sor = 10;  
  3.   
  4. $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...  
  5. $oldal_szama = 1; //az oldalak kiirásához kell  
  6. $from_novelo_szama = "10";//ennyi hírt olvas ki egy oldalon  
  7.   
  8. $sql = mysql_query("... LIMIT $_GET[from], $from_novelo_szama ...");  
  9.   
  10. $hany_oldal_van = $sor/$from_novelo_szama//ugye itt megtudom hogy max hány oldal van jelen esetben 10  
  11. $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  
  12.   
  13. while ($oldal_szama <= $hany_oldal_van_felfele_kerekitve) {  
  14. if ($_GET['from'] == $from_szama) {  
  15. print ''.$oldal_szama.''//az aktuális oldalon, ahol tartózkodik azon ne legyen link.  
  16. }  
  17.   
  18. elseif ($_GET['from'] != $from_szama) {  
  19. print ' <a href="from='.$from_szama.'">'.$oldal_szama.'</a>,';//a többi 9 oldal kiirása linkelve  
  20. }  
  21.   
  22.   
  23. $oldal_szama++;//1-el nagyobb oldalt irjon ki a követjezőnél  
  24. $from_szama++;$from_szama++;$from_szama++;  
  25. $from_szama++;$from_szama++;$from_szama++;  
  26. $from_szama++;$from_szama++;$from_szama++;  
  27. $from_szama++;$from_szama++;$from_szama++;  
  28. $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  
  29.   
  30. }  
  31.   
  32. ?>  
 
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
  1. "..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