13. august 2006 - 20:26Der er
18 kommentarer og 1 løsning
Forrige og næste
Hej.
Jeg går lige til sagen, hvordan skal jeg lave forrige og næste i dette script:
<? include("inc/cfg.php");
$q = mysql_query("SELECT * FROM funnypics WHERE id = '$_GET[id]'") or die(mysql_error()); $vis = mysql_fetch_array($q); ?>
<b>Fuld størrelse af billedet <? echo $vis[navn]; ?></b><br> <table border="0" width="100%"> <tr> <td>HER SKAL FORRIGE OG NÆSTE STÅ.</td> </tr> <tr> <td><img src="<? echo $vis[billede]; ?>" border="0"></td> </tr> <tr> <td>..</td> </tr> </table>
<? } } mysql_close(); ?>
Jeg vil gerne have at man har mulighed for at trykke forrige eller næste billede. Hvis der ikke er nogen forrige, så skal knappen være disabled, og det samme hvis der ikke er nogen næste. Jeg håber i vil prøve at kode det ind i mit script ovenfor..
$offset = (isset($_GET[offset])) ? $_GET[offset] : 0; // Hvis ikke offset er sat, sættes den til 0 $pr_side = 10; // Antal resultater pr. side
$q = mysql_query("SELECT * FROM funnypics WHERE id = '$_GET[id]' ORDER BY id DESC LIMIT $offset,$pr_side") or die(mysql_error()); $vis = mysql_fetch_array($q); ?>
<b>Fuld størrelse af billedet <? echo $vis[navn]; ?></b><br> <table border="0" width="100%"> <tr> <td> <? $antal = mysql_result(mysql_query('SELECT COUNT(*) FROM funnypics'),0); // Tæller antal poster i tabellen "tabel" (husk at ændre til den tabel du bruger)
if ($offset >= $pr_side) { // Tester om det er nødvendigt med et "forrige-link" $forrige = $offset-$pr_side; // Finder ud af hvor forrige skal starte fra echo "<a href='?offset=$forrige'>Forrige</a> "; // Udskriver link } if ($antal > $offset+$pr_side) { // Tester om det er nødvendigt med et "næste-link" $naeste = $offset+$pr_side; // Finder ud af hvor næste skal starte fra echo "<a href='?offset=$naeste'>Næste</a>"; // Udskriver link } ?> </td> </tr> <tr> <td><img src="<? echo $vis[billede]; ?>" border="0"></td> </tr> <tr> <td>..</td> </tr> </table>
$offset = (isset($_GET[offset])) ? $_GET[offset] : 0; // Hvis ikke offset er sat, sættes den til 0 $pr_side = 10; // Antal resultater pr. side
$q = mysql_query("SELECT * FROM funnypics WHERE id = '$_GET[id]' ORDER BY id DESC LIMIT $offset,$pr_side") or die(mysql_error()); $vis = mysql_fetch_array($q); ?>
<b>Fuld størrelse af billedet <? echo $vis[navn]; ?></b><br> <table border="0" width="100%"> <tr> <td> <? $antal = mysql_result(mysql_query("SELECT COUNT(*) FROM funnypics WHERE id = '$_GET[id]'"),0); // Tæller antal poster i tabellen "tabel" (husk at ændre til den tabel du bruger)
if ($offset >= $pr_side) { // Tester om det er nødvendigt med et "forrige-link" $forrige = $offset-$pr_side; // Finder ud af hvor forrige skal starte fra echo "<a href='?offset=$forrige'>Forrige</a> "; // Udskriver link } if ($antal > $offset+$pr_side) { // Tester om det er nødvendigt med et "næste-link" $naeste = $offset+$pr_side; // Finder ud af hvor næste skal starte fra echo "<a href='?offset=$naeste'>Næste</a>"; // Udskriver link } ?> </td> </tr> <tr> <td><img src="<? echo $vis[billede]; ?>" border="0"></td> </tr> <tr> <td>..</td> </tr> </table>
if ( !empty( $_GET['next'] ) ) { $q = mysql_query("SELECT * FROM funnypics WHERE id > '$_GET[id]' ORDER BY id ASC LIMIT 1") or die(mysql_error()); } elseif ( !empty( $_GET['prior'] ) ) { $q = mysql_query("SELECT * FROM funnypics WHERE id < '$_GET[id]' ORDER BY DESC ASC LIMIT 1") or die(mysql_error()); } else { $q = mysql_query("SELECT * FROM funnypics WHERE id = '$_GET[id]'") or die(mysql_error()); } $vis = mysql_fetch_array($q); ?>
coderdk -> kan ikke rigtig få det til at virke.. <? include("inc/cfg.php");
if (!empty($_GET['next'])) { $q = mysql_query("SELECT * FROM funnypics WHERE ID > '$_GET[id]' ORDER BY ID ASC LIMIT 1") or die(mysql_error()); } elseif (!empty($_GET['prior'])) { $q = mysql_query("SELECT * FROM funnypics WHERE ID < '$_GET[id]' ORDER BY DESC ASC LIMIT 1") or die(mysql_error()); } else { $q = mysql_query("SELECT * FROM funnypics WHERE ID = '$_GET[id]'") or die(mysql_error()); } $vis = mysql_fetch_array($q); ?>
Hvis man trykker på "forrige" kommer følgende fejlmeddelse: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DESC ASC LIMIT 1' at line 1
Hvis man trykker næste går den godt nok videre til et andet billede, men ikke lige det billede som gerne skulle komme efter. Og så skulle det også være sådan at forrige var disabled hvis den ikke eksistere, og samme ved næste.. det skal jo være button knapper..
Okay, men det virker stadigvæk ikke. Kan ikke se nogen forandring. og hvordan laver jeg sådan at button knappen er disabled HVIS forrige eller næste ikke findes?
Virker ikke? Hvordan? Sker der intet eller hvordan?
Jeg har ikke testet noget, og har aldrig påstået at løsningen var god ;) Men her er en hvor forrige/næste ikke vises hvis der ingen er:
<? include("inc/cfg.php");
$qNext = mysql_query("SELECT * FROM funnypics WHERE ID > '$_GET[id]' ORDER BY ID ASC LIMIT 1") or die(mysql_error()); $hasNext = ( mysql_num_rows( $qNext ) > 0 );
$qPrior = mysql_query("SELECT * FROM funnypics WHERE ID < '$_GET[id]' ORDER BY ID DESC LIMIT 1") or die(mysql_error()); $hasPrior = ( mysql_num_rows( $qPrior ) > 0 );
if ( !empty( $_GET['next'] ) && $hasNext ) { $q = $qNext; } elseif ( !empty( $_GET['prior'] ) && $hasPrior ) { $q = $qPrior; } else { $q = mysql_query("SELECT * FROM funnypics WHERE ID = '$_GET[id]'") or die(mysql_error()); } $vis = mysql_fetch_array($q); ?>
1: Når man trykker 'næste billede', så kommer man godt til det næste billede, men så kan man ikke trykke 'forrige billede', først næste gang med trykker næste billede. Altså først efter 2 gange.
2: Jeg har lavet næste og forrige i knapper, men hvordan laver jeg sådan at knappen er disabled hvis forrige eller næste ikke findes?
Her er scriptet: <? include("inc/cfg.php");
$qNext = mysql_query("SELECT * FROM funnypics WHERE ID > '$_GET[id]' ORDER BY ID ASC LIMIT 1") or die(mysql_error()); $hasNext = (mysql_num_rows($qNext) > 0 );
$qPrior = mysql_query("SELECT * FROM funnypics WHERE ID < '$_GET[id]' ORDER BY ID DESC LIMIT 1") or die(mysql_error()); $hasPrior = (mysql_num_rows($qPrior) > 0 );
Fik lige selv lavet det med knapperne hvor de er disabled.. Så skal bare vide, hvordan mit første problem løses. Altså.. hvis nu jeg åbner det første billede, som er ID 1, og trykker 'næste billede', så vises 'forrige billede'-knappen ikke, men trykker jeg så næste igen, så vises forrige knappen.. - Hvordan ordnes det?
$qNext = mysql_query("SELECT ID FROM funnypics WHERE ID > '$_GET[id]' ORDER BY ID ASC LIMIT 1") or die(mysql_error()); $hasNext = (mysql_num_rows($qNext) > 0 ); if ( $hasNext ) $next = mysql_fetch_assoc( $qNext );
$qPrior = mysql_query("SELECT * FROM funnypics WHERE ID < '$_GET[id]' ORDER BY ID DESC LIMIT 1") or die(mysql_error()); $hasPrior = (mysql_num_rows($qPrior) > 0 ); if ( $hasPrior ) $prior = mysql_fetch_assoc( $qPrior );
$q = mysql_query("SELECT * FROM funnypics WHERE ID = '$_GET[id]'") or die(mysql_error()); $vis = mysql_fetch_assoc($q);
assoc henter kun et associeret array ud - altså $row['feltnavn'] - array henter både et associeret array og et nummerisk array så du både kan tilgå felter som $row['feltnavn'] og $row[0]
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.