Del en mysql query op i flere sider

Tags:    php

Hejsa, jeg er igang med at "lave" et quote system, som jeg indtil videre syntes ser ganske fornuftigt ud, jeg vil ikke ud med addressen lige pt. da jeg vil holde det en lille smule "hemmeligt" til det hele virker og vi launcher siden.

Men jeg har det "problem", at når jeg går ind under browse siden, så smider mit script et kald efter databasen, og får de resultater tilbage den selvfølgelig skal. Men, på grund af at koden lige pt. ser således ud:

Fold kodeboks ind/udKode 


Jeg kan selvfølgelig sætte et "LIMIT =50" på min query, men så printer den jo bare de første 50, og ikke de næste, og igen, den skal jo ikke vise 2 sider hvis der fx. kun er rows nok til én side. så det dur selvfølgelig heller ikke at lave pre-definerede sider.

Er der ikke mulighed for at jeg kan dele det op på flere sider, på fx. 50 rows af gangen.
Jeg skal vel have lavet noget med at, på hver side skriver den fx (og dette er simpelt matematik:
(side nummer)*50 til og med ((side nummer)*50)+50

Hvordan kan dette gøres mest effektivt, jeg har ikke det store begreb om hvordan man sætter det op overhovedet faktisk. Så alt den hjælp der kan gives vil jeg sætte pris på.
På forhånd tak :)



Indlæg senest redigeret d. 03.04.2008 09:26 af Bruger #10379
6 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 8 karma
Sorter efter stemmer Sorter efter dato
Jeg ved ikke om det virker, men det er taget fra en gæstebog jeg har lavet her
Du bliver nok selv nødt til at ændre i koden, så den virker som du vil have den til.
3 steder står der index.php det skal du ændre til den side du bruger.
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 04.04.2008 02:00 af Bruger #10878
$res=mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM `" . $quotetable . "`WHERE `approve`=1 ORDER BY `id` asc LIMIT 50*".$SIDENUMMER.",50");
quote_format($res, 0);
$res2=_query("SELECT FOUND_ROWS()");
list($antalquotes)=mysql_fetch_row($res2);
$antalsider=ceil($antalquotes/50);

du skal så i dine links have en værdi for sidenumeret kunne f.eks være ?side=1, så kan $SIDENUMMER sættes
$SIDENUMMER=(isset($_GET['side']))$_GET['side']-1:0

og linksne kunne laves
for($i=1;$i<=$antalsider;$i++){
print('<a href="?side='.$i.'">'.$i.'</a>');
}


I øvrigt synes jeg det en rigtig dårlig ide at skrive en function i en function, eftersom php ikke understøtter nested functions, men bare laver dem globale.
Det kan dog være de har ændret det i 5 eller 6 ved jeg ikke :)



Indlæg senest redigeret d. 03.04.2008 10:12 af Bruger #5620
Du bruger to SQL kald:
Det første kald skal kun bruges til at tælle antal rækker.
Det næste skal bruges til at hente de aktive rækker.

Pseudo kode:
Fold kodeboks ind/udKode 




I må meget undskylde jeg virker uforstående overfor jeres svar, men jeg ved ikke helt hvordan jeg skal stille det op :)
Skal jeg fx. beholde min nuværende syntax, eller skal den skrottes helt, og er der noget i jeres kode der skal redigeres af mig personligt for at passe til nogle andre values :) ?



Heya, det ser ud til dit script virker fint Dion, har dog lavet lidt om på det så den fx. kun viser forrige og næste hvis der er e forrige og en næste, men det var bare at flytte lidt rundt på det. Og 1000 tak, men mit script ved desværre ikke hvad ?side=2 er for noget. Kan du evt. hjælpe mig med at få den til det? :) Så smider jeg også lidt UP's mere oveni hatten ;)



Nå, jeg har fået det til at virke nu, skulle tilføje en
Fold kodeboks ind/udKode 


:D smider lige nogle point rundt



t