Avatar billede lesp Nybegynder
23. november 2007 - 11:27 Der er 2 kommentarer og
2 løsninger

Hjælp til paging

Hvordan gør jeg, så hvert 'brugernavn' bliver til et link og id'en bliver sendt med i linket?

<?php
include("connect.php");

/* Antallet af poster vi ønsker vist på hver side */
$pr_side = 2;

/* Vi tæller antallet af poster i tabellen husk at ændre ‘table’ til dit eget tabelnavn */
$antal = mysql_result(mysql_query("SELECT COUNT(*) FROM brugere"),0) or die(mysql_error());

/* Hvis visfra-variablen ikke findes i URL-feltet og den ikke er et nummer og den er større end antallet i databasen, så sættes den til 0, ellers sættes den til værdien fra URL feltet */
$vis_fra = (isset($_GET["visfra"]) && is_numeric($_GET["visfra"]) && $_GET["visfra"] < $antal) ? $_GET["visfra"] : 2;

/* Vi laver et database udtræk med limit, så den kun hiver det rigtige antal ud fra tabellen, husk at ændre ‘table’ til dit eget tabelnavn */
$query = mysql_query ("SELECT * FROM brugere ORDER BY id DESC limit $vis_fra, $pr_side") or die(mysql_error());
/* Vi kører en while og udskriver data, det jeg har sat på er blot et eksempel */
while ($row = mysql_fetch_array($query)) {
$foresp = mysql_query("SELECT * FROM brugere ORDER BY id DESC limit $vis_fra, $pr_side");
$data = mysql_fetch_array($foresp);

echo $row['brugernavn']."<br>";
}
echo "<hr />";

/* Der undersøges om der skal udskrives et ”forrige side”-link, er dette tilfældet udskrives linket */
if ($vis_fra > 0) {
$back= $vis_fra - $pr_side;
echo "<a href='$_SERVER[PHP_SELF]?visfra=$back'>Forrige</a> ";
}
$page = 1;

/* Alle siderne udskrives så man med et klik kan få resultaterne fra fx 90-100 */
for ($start = 0; $antal > $start; $start = $start + $pr_side) {
if($vis_fra != $page * $pr_side - $pr_side) {
echo "<a href='$_SERVER[PHP_SELF]?visfra=$start'>$page</a> ";
} else {
echo $page." ";
}
$page++;
}

/* Der undersøges om der skal udskrives et ”næste side”-link, er dette tilfældet udskrives linket */
if ($vis_fra < $antal - $pr_side) {
$next = $vis_fra + $pr_side;
echo " <a href='$_SERVER[PHP_SELF]?visfra=$next'>Næste</a>";
}
?>
Avatar billede mahler Nybegynder
23. november 2007 - 17:37 #1
echo $row['brugernavn']."<br>";
ændres til

echo "<a href='bruger.php?id=" . $row['id'] ."'>" . $row['brugernavn']."</a><br>";

forudsat at id-kolonnen hedder "id" og filen du vil linke til hedder "bruger.php".
Avatar billede coderdk Praktikant
23. november 2007 - 17:45 #2
ændrer

echo $row['brugernavn']."<br>";

til

echo '<a href="visbruger.php?id='.$row['brugerid'].'">'.$row['brugernavn']."</a><br>";

Såfremt scriptet hedder visbruger, og bruger ID hedder brugerid

Men scriptet kører den samme query to gange - helt unødvendigt. Disse to linjer kan du godt slette:

$foresp = mysql_query("SELECT * FROM brugere ORDER BY id DESC limit $vis_fra, $pr_side");
$data = mysql_fetch_array($foresp);

Som er inde i din while.

Derudover er det ikke nødvendigt at køre en SELECT COUNT() - man kan i stedet bruge SQL_CALC_FOUND_ROWS i den anden query og efter endt kørsel, hente lave queryen SELECT FOUND_ROWS() for at finde ud af hvor mange der er i alt. Så kan du bare ikke checke fra starten, om vis_fra er gyldig ;)
Avatar billede lesp Nybegynder
27. november 2007 - 13:02 #3
Tak Mahler. Men jeg brugte også coderdk's svar. Skriv et svar begget to
Avatar billede coderdk Praktikant
27. november 2007 - 16:36 #4
(c:
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