Avatar billede Slettet bruger
14. januar 2010 - 11:30 Der er 9 kommentarer og
1 løsning

Udskriv fra database på flere sider

Hej.
Jeg laver en simpel udskrivning fra min database, men da jeg har rimelig mange indlæg skal man scrolle helt vildt.

Vil meget gerne have så jeg f.eks. skriver 15 ud og man så kan vælge side 2, 3, 4 osv. som man ser mange steder.

Kan ikke lige hitte ud af hvordan det skal laves.

Nogen der kan hjælpe?

Har følgende kode:

$host = "x";
$user = "x";
$pass = "x";
$db  = "x";
$connection = mysql_connect($host,$user,$pass);
mysql_select_db("$db");

$query="SELECT * FROM oversigt where kategori = '$_GET[cat]'";

$result=mysql_query($query) or die(mysql_error());

echo "<tablel>\n";
while($row=mysql_fetch_assoc($result))
{

echo "<tablel>\n";
    <?php echo $row['overskrift'];?>
<br>
<?php
}
?>
Avatar billede DGudiksen Nybegynder
14. januar 2010 - 11:42 #1
Først og fremmest skal du have en id smid ind hvor den viser dine posts.

Kunne se sådan her ud: www.test.dk/index.php?cat=test&from=1&to=5

Så skal du have en mysql_query som henter ligesom den du har, den skal dog kun hente fra 1 til 5.

$result = mysql_query("SELECT * From oversigt where kategori='$_GET[cat]' AND ID BETWEEN $_GET[from] AND $_GET[to]");

Der næste skal du have en forrige og næste knap.

Kan laves så ledes:


if ($_GET[from] == 1) {
$from = ($_GET[from] + 5);
$to = $_GET[to] + 5);
echo "<a href='index.php?cat=test&from=$from&to=$to'>Næste</a>";
}
else
{
$fromb = ($_GET[from] + 5);
$tob = $_GET[to] + 5);
$from = ($_GET[from] + 5);
$to = $_GET[to] + 5);
echo "<a href='index.php?cat=test&from=$fromb&to=$tob'>Forige</a><br />";
echo "<a href='index.php?cat=test&from=$from&to=$to'>Næste</a>";


Håber dette kunne hjælpe dig lidt på vej.

Mvh.
Avatar billede majbom Novice
14. januar 2010 - 11:46 #2
du skal have fat i noget der hedder paging eller pagination - prøv google, der er lavet et hav af guides :)
Avatar billede Slettet bruger
14. januar 2010 - 11:47 #3
Okay, yes... det gav mig lidt en ide om hvordan det skal laves.... Tak for det.. :-)

Prøver at arbejde på det og vender så lige tilbage om det lykkedes for mig..
Avatar billede intenz Novice
14. januar 2010 - 23:49 #4
#2 Det var en besværlig måde.

Du kommer i problemer med alt det der ID between hvis alle numrene ikke er der. Eller alt dataet i tabellen ikke skal udskrives.

Brug mysqls LIMIT, det er det den er der for.

URL: www.test.dk/index.php?cat=test&start=0
<?
// hent start værdien
$start = (isset($_GET['start'])) ? $_GET['start'] : 0;
$limit = 15; // 15 resultater pr. side

// lav næste forrige links
$next = "<a href='index.php?cat=test&start=".($start+$limit)."'>Næste</a>";
if ($start != 0) {
  $prev = "<a href='index.php?cat=test&start=".($start-$limit)."'>Forrige</a>";
} else {
  $prev = '';
}

// hent data
$result = mysql_query("SELECT * From oversigt where kategori='$_GET[cat]' LIMIT ".$start.", ".$limit."");

echo $prev." ".$next;
?>
Avatar billede intenz Novice
14. januar 2010 - 23:53 #5
Hov, det var selvfølgelig #1 og ikke #2 min kommentar var henvendt til.
Avatar billede Slettet bruger
31. januar 2010 - 16:47 #6
Har været på ferie, derfor jeg ikke lige har svaret - men går fluks i gang med at teste det.
Tak for hjælpen til alle og intenz dit ser fornuftigt ud, så det vil jeg lige give et forsøg. :-)

Will be back soon...
Avatar billede Slettet bruger
31. januar 2010 - 18:34 #7
Det virker bare perfekt!!!
Mange tak intenz... :-)

Lige et lille spørgsmål - hvor placerer jeg DESC i $result linjen?? Den giver fejl uanset hvor jeg placerer den.

Men smid bare svar... :-)
Avatar billede Slettet bruger
31. januar 2010 - 18:40 #8
Ahhh sorry.. Det skal jeg vist lige forklarer bedre.. :-)

Jeg skal have sat ORDER BY dato DESC ind, men kan ikke lige finde ud af hvor.. :-)

Som her - hvilket ikke virker...

$result = mysql_query("SELECT * From nyheder ORDER BY dato DESC where kategori = '$_GET[cat]' LIMIT ".$start.", ".$limit."");
Avatar billede intenz Novice
01. februar 2010 - 12:57 #9
Det skal se sådan ud:
$result = mysql_query("SELECT * FROM nyheder WHERE kategori = '$_GET[cat]' ORDER BY dato DESC LIMIT ".$start.", ".$limit."");

Hvis det ikke virker så prøv at vis fejlmeddelelsen, sådan:
$result = mysql_query("SELECT * FROM nyheder WHERE kategori = '$_GET[cat]' ORDER BY dato DESC LIMIT ".$start.", ".$limit."") or die(mysql_error());
Avatar billede Slettet bruger
01. februar 2010 - 20:36 #10
Tak :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester