Hogyan tudok oldalanként listázni adatbázistból ?
Van egy adatbázisom amiben pl: felhasználók nevei vannak ezeket le tudom kérdezni egy táblázatba valahogy így:
$eredmeny = mysql_query( "SELECT * FROM tartomanyok");
$sorok_szama = mysql_num_rows( $eredmeny );
print "Jelenleg $sorok_szama sor van a táblában<P>";
print "<table border=1>\n";
while ( $egy_sor = mysql_fetch_row( $eredmeny ) )
{
print "<tr>\n";
foreach ( $egy_sor as $mezo )
print "\t<td>$mezo</td>\n";
print "</tr>\n";
}
print "</table>\n";
A kérdés az, hogy hogyan tudom pl 30-asával(5 oszlop, 6 sor) kiiratni egy oldalra a felhasználókat...hogy nyilakkal lehessen az oldalak közt lépkedni...
mindenhol ilyeneket használnak (még itt a fórumban is) de én nem tudom hogyan csinálják...még tanulom a nyelvet
többféle megoldás is érdekelne akár java-s megoldás is...(kérlek ide is küldd el: todwardus##kukac##gmail.com)
Köszönöm
■ $eredmeny = mysql_query( "SELECT * FROM tartomanyok");
$sorok_szama = mysql_num_rows( $eredmeny );
print "Jelenleg $sorok_szama sor van a táblában<P>";
print "<table border=1>\n";
while ( $egy_sor = mysql_fetch_row( $eredmeny ) )
{
print "<tr>\n";
foreach ( $egy_sor as $mezo )
print "\t<td>$mezo</td>\n";
print "</tr>\n";
}
print "</table>\n";
A kérdés az, hogy hogyan tudom pl 30-asával(5 oszlop, 6 sor) kiiratni egy oldalra a felhasználókat...hogy nyilakkal lehessen az oldalak közt lépkedni...
mindenhol ilyeneket használnak (még itt a fórumban is) de én nem tudom hogyan csinálják...még tanulom a nyelvet
többféle megoldás is érdekelne akár java-s megoldás is...(kérlek ide is küldd el: todwardus##kukac##gmail.com)
Köszönöm
LIMIT
A "LIMIT" lesz a te barátod, vagyis "SELECT * FROM tartomanyok LIMIT 0,10" pl. a 0.sortól 10 sort ad vissza, az oldallépegetés innen már egyszerűen megcsinálható
üdv
BL
LIMIT
MySQL manual...
http://dev.mysql.com/doc/refman/5.0/en/select.html
Illetve a SELECT LIMIT-re vonatkozó része:
http://dev.mysql.com/doc/refman/5.0/en/select.html#id2873847
MySQL manual...
Megkerestem...
Ha a gyenge angol nyelvtudásora építesz, nem fogsz messze jutni...
Ma mások jószándékára, akkor szintén nem fogsz messze jutni, esetleg távolabb, de azt is b@romi lassan ;-)
Építsd fel az elméletet.
Amikor én kezdő voltam mysql+php-ben hasonló feladattal kezdtem. Nem kell ismerned a programozási nyelvet ahhoz, hogy tökéletes rutint írj a logika nyelvén.
Én valahogy így kezdtem:
Előkészületek:
1. Adatbázisban megszámoljuk az összes rekordok számát.
2. Az egy oldalon megjelenítésre kerülő sorok száma alapján egy matematikai összefüggéssel meghatározzuk az oldalak számát, konkrétan elosztjuk a rekordok számát 30-al. Ebből már tudjuk az oldalak számát (nem árt az osztás eredményét felfelé kerekíteni), a tizedesből (kerekítés előtt) meg ki tudjuk számolni az utolsó oldalon megjelenítendő rekordok számát.
Feldolgozás:
1. Meghatározunk egy aktuális oldalszám változót.
2. Az oldalszám változó alapján kiszámítjuk a megjelenítésre kerülő első és utolsó rekordot
3. Összeállítjuk az adatbázis lekérdezést.
4. Megjelenítjük a lekérdezés eredményét.
Amire figyelni kell:
breakline LIMIT-je a te embered, de figyelni kell két dologra. A rekord is mint a tömbök általában 0 sorszámtól indulnak. Tehát a 149 sor az 0 - 148 sorszámokkal bírnak. Továbbá az utolsó oldalon előfordulhat bizony, hogy nem leszen 30 rekord, ezért egy if-es szerkezettel figyeltetned kell az utolsó oldalt, és ott a kalkulált utolsó oldalon található rekordok számát használd felső indexnek.
Ennyi lenne az elmélet, most jöhetnek a hogyanok.
Már csak egy lépés, hogy elkezdhessük megírni a rutint:
Ha az oldalakat léptetni akarod egyesével előre és vissza:
Erre egészen jó megoldás ha az oldalszám változót $_GET tömben adod pl.: lista.php?oldal=1 Ha így töltöd be az oldaladat, akkor a z oldal változó egy lesz. Kiszámolod a sorokat, végrehajtod a lekérdezést, és előkészíted a gombok adatait:
1. Előző oldal: Ha az oldal változó értéke nem 1 és nagyobb 1 akkor elozo=oldal-1
2. Következő oldal: Ha az oldal változó értéke nem egyenlő az utolsó oldallal akkor kovetkezo=oldal+1
3. Megcsinálod a hivatkozásokat (gombokat): lista.php?oldal=elozo és lista.php?oldal=kovetkezo
Ha ezt te fejben összerakod, akkor már érteni fogod, miért írunk neked ilyesmiket a kérdésedre:
SELECT * FROM tartomanyok LIMIT 0,10
$_GET["oldal"]
Különben meg a google-ben ha keresel a php+mysql+limit+page kifejezésre, akkor ez van az első helyen: php-mysql-tutorial (Nem kell hozzá sok angol nyelvtudás.)
A megoldás mindíg kézenfekvő, a kérdés kizárólag csak az, hogy keresed-e a megoldást, vagy csak jó lenne ha valaki megoldaná.
s_volenszki
Köszi