12. januar 2008 - 16:39Der er
20 kommentarer og 1 løsning
forrige og næste records
Hej eksperter.
Jeg har et script, som gør at jeg kan se de første 8 records i min tabel "pokaler". Det er lavet således at de bliver vist over 2 rækker med 4 på hver.
Det jeg mangler er et link "forrige" og "næste", som naturligvis henter de forrige 8 records (hvis man ikke er på de første) eller de næste 8 records (hvis man ikke er på de sidste).
Jeg giver 150 point, til hjælperen, da jeg nu har forsøgt i et stykke tid uden held.
$person = mysql_query("SELECT * FROM pokaler LIMIT $start,8"); ?> <? $person = mysql_query("SELECT * FROM pokaler"); print "<table width='350' border='0' cellpadding='0' cellspacing='0' class='tur_detalje' align='center'><tr>"; $i=0; while(($personen = mysql_fetch_array($person)) && $i < 8) { if ($personen[pokal]==""){ $personen[pokal]=" "; } if ($personen[medlem]==""){ $personen[medlem]=" "; } if ($personen[dato]==""){ $personen[dato]=" "; } if ($personen[plads]==""){ $personen[plads]=" ";
} print "<td><table align='center'><tr><td height='20'></td></tr><tr><td class='menudato'>$personen[dato]</td></tr><tr><td align='center'><img src='../jpg/$personen[pokal]' width='54' height='78'></td></tr><tr><td class='brodtekst'>$personen[plads]. Præmie</td></tr></table></td>"; if( ($i+1)%4 == 0 ) { if($i == 7 ) {// sidste række, der kommer ikke flere print "</tr>"; } else {// afslut nuværende række, forsæt med næste print "</tr><tr>"; } } $i++; }
if( $i != 8 ) { print "</td></tr>"; // hvis der er 3 billeder - skal vi huske at afslutte med </tr> - da vi ikke har gjort det endnu. } print "</table>"; ?> <table width="350" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="EEEEEE"> <tr> <td align="center" class="pokaler"> </td> <td align="center" class="pokaler"> </td> </tr> <tr> <td height="20" align="center" class="brodtekst">Forrige</td> <td align="center" class="brodtekst">Næste</td> </tr> </table>
Må lige rette y lidt. Det er LIMIT offset, antal eller LIMIT antal ikke noget med min eller max. Men ellers er det den rigtige vej, du skal have fat i det som hedder paging.
Jeg tror at selve $person = mysql_query("SELECT * FROM pokaler LIMIT $start,8"); delen er fin nok. Men hvordan "connecter" jeg forrige og næste linket?
$person = mysql_query("SELECT * FROM pokaler LIMIT $start,8"); ?> <? $person = mysql_query("SELECT * FROM pokaler"); print "<table width='350' border='0' cellpadding='0' cellspacing='0' class='tur_detalje' align='center'><tr>"; $i=0; while(($personen = mysql_fetch_array($person)) && $i < 8) { if ($personen[pokal]==""){ $personen[pokal]=" "; } if ($personen[medlem]==""){ $personen[medlem]=" "; } if ($personen[dato]==""){ $personen[dato]=" "; } if ($personen[plads]==""){ $personen[plads]=" ";
} print "<td><table align='center'><tr><td height='20'></td></tr><tr><td class='menudato'>$personen[dato]</td></tr><tr><td align='center'><img src='../jpg/$personen[pokal]' width='54' height='78'></td></tr><tr><td class='brodtekst'>$personen[plads]. Præmie</td></tr></table></td>"; if( ($i+1)%4 == 0 ) { if($i == 7 ) {// sidste række, der kommer ikke flere print "</tr>"; } else {// afslut nuværende række, forsæt med næste print "</tr><tr>"; } } $i++; }
if( $i != 8 ) { print "</td></tr>"; // hvis der er 3 billeder - skal vi huske at afslutte med </tr> - da vi ikke har gjort det endnu. } print "</table>"; ?>
if( ($i)%4 == 0 ) { if($i == 8 ) {// sidste række, der kommer ikke flere print "</tr>"; } else {// afslut nuværende række, forsæt med næste print "</tr><tr>"; } } }
if( $i != 8 ) { print "</tr>"; // hvis der er 3 billeder - skal vi huske at afslutte med </tr> - da vi ikke har gjort det endnu. } print "</table>"; ?>
Cool.. Så virker forrige og næste. Men den skal jo helst ikke vise næste, hvis den er på de sidste records. Ligeledes skal den ikke vise forrige, hvis den er på de første records.
Så må du jo lave noget tjek som ser på hvor mange rækker der ialt er i tabellen og så derfter, på baggrund af den aktuelle side, afgøre om næste skal vises. Du kan jo også lave et tjek for om det er side 1 som vises, for så skal forrige jo ikke vises :-)
$person_total = mysql_query("SELECT COUNT(*) AS antal FROM pokaler"); $RowAntal = mysql_fetch_assoc( $person_total ); if( (($side+1)*8) =< ($RowAntal['antal']+7) ){ Næste link her }
$person = mysql_query("SELECT * FROM pokaler LIMIT $start,9");
Hvis du trækker 9 ud i stedet for, og der bliver returneret 9, så ved du, om der er behov for en næste-knap. I din løkke viser du selvfølglig kun max 8.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.