27. juni 2003 - 15:23Der er
26 kommentarer og 1 løsning
Søgning - Skriv : Viser 1 - 5 poster ud af 11
Hej.
Jeg har et søgescript, som virkelig driller mig. Jeg vil have det til at udskrive hvor mange poster der vises, og ud af hvor mange ialt.
Jeg vil her give mit eksempel, som desværre viser sig at give fejl hele tiden. (kommer an på antallet af poster)
Nogen der kan give mig en ordentlig metode ?
Kode:
$g_total = mysql_query("SELECT COUNT(*) AS total FROM uploads where kate = '$kate' and (emne like '%$soeg%' or besk like '%$soeg%')") or die(mysql_error()); $total = mysql_result($g_total,0);
$fra = $s+1; $til = $s+$pr_side;
if ($til > $total) { $til = $s+$pr_side-1; }
if ($total < $pr_side) { $til = $total; }
if ($antal == 0) { $fra = 0; }
echo "<table align=center border=0 width=400 cellspacing=0 cellpadding=0></td><td><div class=b2>Viser $fra - $til poster ud af $total</div></td><td align=right>"; if ($s >= $pr_side) { //Tjekker om værdien af $s er større eller lig $pr_side $previous = $s-$pr_side; //Regner ud hvor mysql skal starte hvis forrige side kaldes echo "<a href='?s=$previous&soeg=$soeg&kate=$kate'>Forrige </a>"; //Udskriver linket } if ($total > $s+$pr_side) { //Tjekker om der er flere sider $next = $s+$pr_side; //Regner ud hvor mysql skal starte hvis næste side kaldes echo "<a href='?s=$next&soeg=$soeg&kate=$kate'>Næste</a>"; //Udskriver linket "næste" } echo "</td></tr></table>";
mysql_close($conn);
Alle IF'erne var mit forsøg på, at give nogle fornuftige tal
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
<?php $offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0; // Hvis ikke $offset er sat, sættes den til 0 $pr_side = 5;
$g_total = mysql_query("SELECT COUNT(*) AS total FROM uploads WHERE kate = '$kate' AND (emne LIKE '%$soeg%' OR besk LIKE '%$soeg%')") or die(mysql_error()); $antal = mysql_result($g_total,0); $til = $offset+$pr_side;
<?php $offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0; // Hvis ikke $offset er sat, sættes den til 0 $pr_side = 5;
$g_total = mysql_query("SELECT COUNT(*) AS total FROM uploads WHERE kate = '$kate' AND (emne LIKE '%$soeg%' OR besk LIKE '%$soeg%')") or die(mysql_error()); $antal = mysql_result($g_total,0); $til = $offset+$pr_side;
if ($til > $total) { // fornuftig test $til = $s+$pr_side-1; // Hvorfor sætte til den værdi? } if ($total < $pr_side) { // hvad har de to tal med hinanden at gøre? $til = $total; } if ($antal == 0) { // Hvad tester du her? $fra = 0; }
jeg ville nok skriver
if ( ! isset( $s ) ) $s = 0; // hvis ingen parametre så start forfra.
$fra = $s; $til = $s+$pr_side-1;
if ($til > $total) { // fornuftig test $til = $total; // vis ikke flere end der er ialt } echo "Nu vises resultat $fra til $til."; if ( $fra > 0 ) { echo "<a href='visside.php?s=". max(0,$fra-$pr_side) ."'>forrige side</a> "; } if ( $til < $total ) { echo "<a href='visside.php?s=". ($til+1) ."'>næste side</a> "; }
lidt bedre: <?php $offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0; // Hvis ikke $offset er sat, sættes den til 0 $pr_side = 5;
$g_total = mysql_query("SELECT COUNT(*) AS total FROM uploads WHERE kate = '$kate' AND (emne LIKE '%$soeg%' OR besk LIKE '%$soeg%')") or die(mysql_error()); $antal = mysql_result($g_total,0);
Jeg tillader mig lige, at paste koden lidt mere sammenhængende med resten af mit dokument :
$offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0; // Hvis ikke $offset er sat, sættes den til 0 $pr_side = 5;
$conn = mysql_connect("localhost", "usr", "pass") or die(mysql_error()); mysql_select_db("DB");
$r = mysql_query("select * from uploads where kate = '$kate' and (emne like '%$soeg%' or besk like '%$soeg%') order by id DESC LIMIT $pr_side"); $q = mysql_query("select * from uploads where kate = '$kate' and (emne like '%$soeg%' or besk like '%$soeg%')"); $antal = mysql_num_rows($q);
echo "<div class=b1>Din søgning på: <i>$soeg</i> gav <i>$antal</i> resultater.<br><br></div>";
$g_total = mysql_query("SELECT COUNT(*) AS total FROM uploads WHERE kate = '$kate' AND (emne LIKE '%$soeg%' OR besk LIKE '%$soeg%')") or die(mysql_error()); $antal = mysql_result($g_total,0);
Fejl i denne her : $r = mysql_query("select * from uploads where kate = '$kate' and (emne like '%$soeg%' or besk like '%$soeg%') order by id DESC LIMIT $pr_side");
?
Og en anden ting - den må meget gerne skrive : viser 1 - 5 poster ... Ikke 0 - 5 som den gør nu.
Jakoba > Jeg tænker og tester - alt hvad jeg kan. Jeg har siddet med det træls'e stuff i 1½ time nu. Den vil bare ikke skrive antallet af poster korrekt :o/
<?php $offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0; // Hvis ikke $offset er sat, sættes den til 0 $pr_side = 5;
$conn = mysql_connect("localhost", "usr", "pass") or die(mysql_error()); mysql_select_db("DB");
$r = mysql_query("select * from uploads where kate = '$kate' and (emne like '%$soeg%' or besk like '%$soeg%') order by id DESC LIMIT $offset,$pr_side"); echo "<div class=b1>Din søgning på: <i>$soeg</i> gav <i>$antal</i> resultater.<br><br></div>"; echo "<table width=400 align=center cellspacing=0 cellpadding=0><tr>"; echo "<td width=110 bgcolor=\"#C0C0C0\"><div class=b2>Type</div></td>"; echo "<td width=340 bgcolor=\"#C0C0C0\"><div class=b2>Emne</div></td>"; echo "<td width=50 bgcolor=\"#C0C0C0\"><div class=b2>Karakter</div></td></tr>";
$g_total = mysql_query("SELECT COUNT(*) AS total FROM uploads WHERE kate = '$kate' AND (emne LIKE '%$soeg%' OR besk LIKE '%$soeg%')") or die(mysql_error()); $antal = mysql_result($g_total,0);
scaefner.. ville gerne hente den hos script.dk men den giver mig en 404.. ville sætte pris på hvis du gad sende den du har fremvist her til jacob@crashhouse.dk :)
<?php $offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0; // Hvis ikke $offset er sat, sættes den til 0 $pr_side = 5;
$conn = mysql_connect("localhost", "usr", "pass") or die(mysql_error()); mysql_select_db("DB");
$r = mysql_query("select * from uploads where kate = '$kate' and (emne like '%$soeg%' or besk like '%$soeg%') order by id DESC LIMIT $offset,$pr_side"); echo "<div class=b1>Din søgning på: <i>$soeg</i> gav <i>$antal</i> resultater.<br><br></div>"; echo "<table width=400 align=center cellspacing=0 cellpadding=0><tr>"; echo "<td width=110 bgcolor=\"#C0C0C0\"><div class=b2>Type</div></td>"; echo "<td width=340 bgcolor=\"#C0C0C0\"><div class=b2>Emne</div></td>"; echo "<td width=50 bgcolor=\"#C0C0C0\"><div class=b2>Karakter</div></td></tr>";
$g_total = mysql_query("SELECT COUNT(*) AS total FROM uploads WHERE kate = '$kate' AND (emne LIKE '%$soeg%' OR besk LIKE '%$soeg%')") or die(mysql_error()); $antal = mysql_result($g_total,0);
<?php $offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0; // Hvis ikke $offset er sat, sættes den til 0 $pr_side = 5;
$conn = mysql_connect("localhost", "usr", "pass") or die(mysql_error()); mysql_select_db("DB");
$r = mysql_query("select * from uploads where kate = '$kate' and (emne like '%$soeg%' or besk like '%$soeg%') order by id DESC LIMIT $offset,$pr_side"); echo "<div class=b1>Din søgning på: <i>$soeg</i> gav <i>$antal</i> resultater.<br><br></div>"; echo "<table width=400 align=center cellspacing=0 cellpadding=0><tr>"; echo "<td width=110 bgcolor=\"#C0C0C0\"><div class=b2>Type</div></td>"; echo "<td width=340 bgcolor=\"#C0C0C0\"><div class=b2>Emne</div></td>"; echo "<td width=50 bgcolor=\"#C0C0C0\"><div class=b2>Karakter</div></td></tr>";
$g_total = mysql_query("SELECT COUNT(*) AS total FROM uploads WHERE kate = '$kate' AND (emne LIKE '%$soeg%' OR besk LIKE '%$soeg%')") or die(mysql_error()); $antal = mysql_result($g_total,0);
Jamen det er jo helt perfekt. Mange tak for hjælpen. Er glad for det endelig virker :)
Synes godt om
Ny brugerNybegynder
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.