ugrás a tartalomhoz

Hogyan tudok oldalanként listázni adatbázistból ?

todwardus · 2007. Már. 17. (Szo), 22.12
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
 
1

LIMIT

breakline · 2007. Már. 17. (Szo), 22.29
Hali

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
2

LIMIT

todwardus · 2007. Már. 18. (V), 18.15
Hogyan?
3

MySQL manual...

TeeCee · 2007. Már. 18. (V), 19.22
4

MySQL manual...

todwardus · 2007. Már. 18. (V), 20.02
kössz, de nekem csak néhány magyar mondatra van szükségem... ezzel így nemtok mit kezdeni,nem vagyok olyan perfekt angolból...
6

Megkerestem...

TeeCee · 2007. Már. 18. (V), 22.45
... azt a helyet, ahonnan csak 1+1 angol mondatot kellett volna elolvasnod, illetve a példát megnézned.
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 ;-)
5

Építsd fel az elméletet.

s_volenszki · 2007. Már. 18. (V), 21.54
Szia!

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
7

Köszi

todwardus · 2007. Már. 21. (Sze), 21.01
Nagyon szépen köszönöm!