22. maj 2006 - 21:59Der er
31 kommentarer og 1 løsning
Udskriv fra databasen 25 poster af gangen.
Hej,
Jeg har prøver at lave et meget lille galleri, men jeg vil kun have vist 25 billeder af gangen hvorefter skal der komme et link i bunden hvor man så kan trykke for at se de næste 25 billeder.
Er der nogle der kan hjælpe? Jeg skal vel stoppe løkken efter de første 25 og lave linket "næste side"-> og ved klik skal den kører løkken igen med denne gang starte ved 25 og frem til 50. altså hvis der er så menge billeder i tabellen.
Nu har jeg kigget lidt rundt (godt nok kun hurtigt :)) det passer ikke helt til min idé. fx. var der et script der talte alle cellerne i db. men jeg bruger jo en while løkker den ved jo ikke hvor mange billeder der er på forhånd?
Her er noget gammel kode du nok kan tilpasse. <?php $offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0; // Hvis ikke $offset er sat, sættes den til 0 $pr_side = 10; // Antal resultater pr. side
// Henter poster fra databasen $query = mysql_query("SELECT * FROM tabel ORDER BY id DESC LIMIT $offset,$pr_side") or die (mysql_error()); while($row = mysql_fetch_array($query)) { echo "$row[id] - $row[felt]<br>"; } ?> <hr> <?php // Tæller antal poster i databasen $tael = mysql_query("SELECT COUNT(*) AS antal FROM tabel") or die (mysql_error()); $antal = mysql_result($tael,0);
Mange tak for koden, det er helt sikkert noget jeg kan bruge :)
Jeg har lige 2 spørgsmål til SQL sætningerne. er dette rigtigt? $query = mysql_query("SELECT * from Billeder WHERE type ='$kategori' ORDER BY id DESC LIMIT $offset,$pr_side") or die (mysql_error());
og
$tael = mysql_query("SELECT COUNT(*) AS antal FROM Billeder") or die (mysql_error());
Når jeg køre scriptet skriver den ikke nogle billeder ud den laver kun et <hr> og skriver 1.
Min db er lavet sådan at alle billederne er gemt i en tabel der hedder Billeder og hver billede har en celle med et felt der hedder kategori.
Scriptet skal så selvfølgelig kun skrive de billeder ud som der har denne kategori.
Spg 1: Det ser rigtigt ud jo. Spg 2: Hvis du vil tælle alle billeder, så er det rigtigt. Jeg kunne dog forestille mig du ville tælle billeder i kategorien: SELECT COUNT(*) from Billeder WHERE type ='$kategori'
En anden lille ting, brug ikke SELECT * men kun de felter du skal bruge. Og brug også COUNT(id) og ikke COUNT(*) lidt performance henter du der.
hmm når jeg fx. sætter variablen $pr_side = 4; så laver den ikke et link i bunden til næste omgang billeder.
<?php $offset = (isset($_GET['offset'])) ? $_GET['offset'] :0; // Hvis ikke $offset er sat, sættes den til 0 $pr_side = 4; // Antal resultater pr. side
// Henter poster fra databasen $query = mysql_query("SELECT * from Billeder ORDER BY id DESC LIMIT $offset,$pr_side") or die (mysql_error()); while($row = mysql_fetch_array($query)) { echo "<img src=".$row['lillebillede']."></img>"; echo "<br><a href=download.php?DownloadID=".$row['id'].">Download</a><br>"; //echo "$row[id] - $row[lillebillede]<br>"; } ?> <hr> <?php // Tæller antal poster i databasen $tael = mysql_query("SELECT COUNT(*) from Billeder WHERE type ='$kategori'") or die (mysql_error());
så tager den også billeder med fra andre kategorier end den der er valgt. $query = mysql_query("SELECT * from Billeder ORDER BY id LIMIT $offset,$pr_side") or die (mysql_error());
Det hjalp rigtig meget - nu kom linket frem i bunden. :) Men så når jeg trykker på linket i bunden udskriver den ikke en ny omgang billder.
<?php $offset = (isset($_GET['offset'])) ? $_GET['offset'] :0; // Hvis ikke $offset er sat, sættes den til 0 $pr_side = 2; // Antal resultater pr. side
// Henter poster fra databasen $query = mysql_query("SELECT * from Billeder WHERE type ='$kategori' ORDER BY id LIMIT $offset,$pr_side") or die (mysql_error()); while($row = mysql_fetch_array($query)) { echo "<img src=".$row['lillebillede']."></img>"; echo "<br><a href=download.php?DownloadID=".$row['id'].">Download</a><br>"; //echo "$row[id] - $row[lillebillede]<br>"; } ?> <hr> <?php // Tæller antal poster i databasen $tael = mysql_query("SELECT COUNT(id) from Billeder WHERE type ='$kategori'") or die (mysql_error());
det gik lidt stætkt, jeg prøver igen :) når jeg trykker på næste linket i bunden udskriver den 2 ($pr_side = 2;) og i URL står der også list.php?offset=2
$sql = "SELECT * from Billeder WHERE type ='$kategori' ORDER BY id LIMIT $offset,$pr_side"; echo "DEBUG : " . $sql . "<br />"; $query = mysql_query($sql) or die (mysql_error());
$sql = "SELECT COUNT(id) from Billeder WHERE type ='$kategori'"; echo "DEBUG : " . $sql . "<br />"; $tael = mysql_query($sql) or die (mysql_error());
Sorry - så udskriver den dette: Resource id #2 -------------------------------------------------------------------------------- Resource id #3slut1 2 3 NæsteDEBUG : SELECT * from Billeder WHERE type ='billede' ORDER BY id LIMIT 0,2 DEBUG : SELECT COUNT(id) from Billeder WHERE type ='billede'
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.