google Posted July 17, 2005 Posted July 17, 2005 Sajnos nekem meggyûlt a bajom ezzel. Pedig rém egyszerû script, de valamiért nem mûködik úgy, ahogy kellene. Megszámolja a rekordokat egy táblában, majd kiíratja õket, de 1 oldalra csak 1 darabot belõle. Létrehoz linkeket, amelyekkel vissza, tovább, illetve az adott számú oldalra lehet ugrani. $szam = "SELECT * FROM munkak"; $res = mysql_query($szam,$kapcsolat); $sorszam = mysql_num_rows($res); $limit = 1; if(empty($lap)) { $lap = 1; } $limitval = $lap * $limit - ($limit); $qu = "SELECT * FROM munkak LIMIT $limitval, $limit"; $result = mysql_query($qu,$kapcsolat) or die ("Nem sikerült a lekérdezés!"); if(mysql_num_rows($result) == 0 ) { echo "Nincs munka az adatbázisban."; } while($sorez = mysql_fetch_assoc($result)) { //kiíratások stb. } if($lap != 1) { $lapprev = $lap-1; echo "<a href='websites.php?lap=$lapprev'>Elõzõ</a>"; } else { echo "Elõzõ"; } for($i=1; $i<=$sorszam; $i++) { if($i == $lap) { echo $i." "; } else { echo "<a href='websites.php?lap=$i'>$i</a>"; } } if(($sorszam - ($limit * $lap))>0) { $lapkov = $lap+1; echo "<a href='websites.php?lap=$lapkov'>Következõ</a>"; } else { echo "Következõ"; } Ehelyett azt csinálja, hogy fogja a legelsõ rekordot és kiírja, és hiába ugrálok tovább, ugyanazt a rekordot írja ki mindig, illetve az elõzõ feliratból nem csinál linket.
ocsi Posted July 17, 2005 Posted July 17, 2005 A scriptnek csak az elsõ néhány sorát olvastam el. Tanácstalan vagyok, mivel még soha sem használtam a LIMIT SQL parancsot.... Viszont nem értem, hogy te miért teszed ezt? 1.lépésben lekérdezed az egész táblát, csak azért hogy megszámold a sorokat. Erre elég lenne csak 1 'oszlopot' lekérdezni.... Majd a 2. lépésben újra lekérdezel egy olyan sort, amit már egyszer lekértél.. Fölösegesen terheled az SQL szervert. Ahogy én csinálom: Lekérdezek mindent ( ahogy te az elsõ lépésben) és a mysql_data_seek -el pozícionálok. ( ez ugyan úgy mûködik mint a mysql_fetch_array csak egy számmal tudsz lépkedni benne) És így kiválasztod a neked kellõ sort! ( a többit most nincs energiám átnézni...)
google Posted July 17, 2005 Author Posted July 17, 2005 A limit nagyon hasznos dolog, sokat használom. Ámde. Már többféle megoldást próbáltam a sorszámozásra. Egyik sem akar mûködni. Ha lesz energiád ( ), akkor megtennéd nekem, hogy beidézel egy olyan scriptet, ami mûködik is? Egy tábla rekordjait íratja ki, de minden oldalra csak egyet, a további oldalakat "virtuálisan" hozza létre.
ocsi Posted July 18, 2005 Posted July 18, 2005 A kódodban nem találtam hibát, de én ilyet még nem használtam: if(empty($lap)) { $lap = 1; } Próbáld meg így: if($lap ==0) {$lap=1;} Ha így sem mûküdik akkor nem tudom hol lehet a hiba....
google Posted July 18, 2005 Author Posted July 18, 2005 Az empty az ugyanazt csinálja. Azért megpróbálom, jó volna, ha így mûködne...
ocsi Posted July 18, 2005 Posted July 18, 2005 Próbáljuk meg megkeresni a hiba helyét: Próbáld meg ezt a címet: websites.php?lap=2 Ha itt is az elsõ lapot hozza ki akkor az oldal felépítésénél van a gond, ha nem akkor a navigációnál...
google Posted July 18, 2005 Author Posted July 18, 2005 Persze, már próbáltam. A lap kijön (sõt, még a 6-os, 126-os is, ami az adatbázis alapján nem is létezhet...), az eredmény ugyanaz: elsõ rekord kiíratva, elõzõ link nincs.
ocsi Posted July 18, 2005 Posted July 18, 2005 Szúrd be a while ciklus elé hogy: print $limit; print $limitval; print $lap és még ami van változó( mármint olyan amit használsz, és nem olyan ami a MYSQL hez kell) Így próbálunk debugg olni...
Kovács Dávid ( Davs ) Posted July 18, 2005 Posted July 18, 2005 A limit mire való? Lehet, hogy pont erre, de én a mysql_fetch_rows-t szoktam használni a queryk kiírására...Így egy tömböt kapunk(ha jól emléákszem...Már nem is tudom, hogy mikor web-programztam utoljára...) $res=mysql_query(query) ; $x=mysql_fetch_row($res) ;
google Posted July 18, 2005 Author Posted July 18, 2005 A limit azt szabja meg, hogy a lekérdezett rekordok közül hányat íratunk ki, bõvített formájában (1, 1) pedig azt, hogy - jelen esetben - a másodiktól indulunk, és egyet írunk ki. Én asszociatív tömböt használok (az is egy tömb), de nem a tömbnél van a bibi, hanem a $lap változónál. Valamiért annak minding 1 az értéke.
ocsi Posted July 18, 2005 Posted July 18, 2005 Próbaképpen csináld meg ezt: if(empty($lap)) { $lap = 2; } Mert én csak arra tudok gondolni hogy itt a bibi. Ha az így kapott eredmény ugyanaz mint eddig, csak a 2. lapal... akkor meg van a bibi
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now