Jump to content
GSForum - Segélyvonal

Rekordok kiíratása táblából


google

Recommended Posts

google

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. :S:?:

Link to comment
Share on other sites

ocsi

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...)

Link to comment
Share on other sites

google

A limit nagyon hasznos dolog, sokat használom. :D

 

Ámde. Már többféle megoldást próbáltam a sorszámozásra. Egyik sem akar mûködni. :S

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.

Link to comment
Share on other sites

ocsi

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....

Link to comment
Share on other sites

google

Az empty az ugyanazt csinálja. Azért megpróbálom, jó volna, ha így mûködne... :hááát:

Link to comment
Share on other sites

ocsi

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...

Link to comment
Share on other sites

google

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.

Link to comment
Share on other sites

ocsi

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...

Link to comment
Share on other sites

Kovács Dávid ( Davs )

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) ;

Link to comment
Share on other sites

google

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. :S

Link to comment
Share on other sites

ocsi

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

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...