17. juli 2004 - 12:15Der er
52 kommentarer og 1 løsning
Søgning der deles op i 10 ad gangen
Jeg har en søgning i en mySQL database som jeg godt kunne tænke mig blev delt op i sider visende 10 ad gangen. (altså hvis den finder mere end 10)
Min mySQL udtræk ser således ud: $query = mysql_query("SELECT * FROM filer WHERE kat='$kat' AND (titel LIKE '%$search%') ORDER BY titel") or die(mysql_error()); while ($row = mysql_fetch_array($query)) { ... }
Kan I ikke vise hvad jeg kan gøre på sådan en simpel en her? $foresp = mysql_query("SELECT * FROM annonce_udlejer ORDER BY dato LIMIT 0,10") or die(mysql_error()); while($data = mysql_fetch_array($foresp)){
}
Kan godt forstå at der skal være en frem og tilbage knap hvor dataene fra den gemmes i X,10. Men hvordan? Razmuz, jeg kan ikk få dit til at virke... Min URL er index.php?side=soeg når jeg søger...
<? $foresp = mysql_query("SELECT * FROM annonce_udlejer ORDER BY dato LIMIT ".($_GET[page]*10).",10") or die(mysql_error()); while($data = mysql_fetch_array($foresp)){ // vis din data }
razmuz.dk --> den finder fint nok de 10 første, men når jeg klikker næste så viser den bare ingenting.. har forkortet det ned til: "index.php?side=soeg&page=1" hvis jeg klikker på næste...
Det er fordi den registrerer om jeg klikker på submit knappen.. altså database forespørgslen er indkrandset af if ($_POST['submit']) {
Men kan I ikke fortælle mig hvorfor den ikke viser noget når jeg først har klikket frem og derefter tilbage?
if ($_POST['submit'] || $HTTP_GET_VARS['s']) { open();
$pr_side = 10; // Antal poster pr. side if (isset($_GET['s'])) { $s = $_GET['s']; } else { $s = 0; }
$query = mysql_query("SELECT * FROM annonce_udlejer ORDER BY dato LIMIT $s,$pr_side") or die(mysql_error()); while($row = mysql_fetch_array($query)){ echo "<B>$row[nr]</B><BR>"; }
echo '<BR><HR>';
$g_total = mysql_query("SELECT COUNT(nr) AS TOTAL FROM annonce_udlejer") or die(mysql_error()); $total = mysql_result($g_total,0); echo '<BR><CENTER>';
Hm, nu har jeg lavet en fil der kan køre din søgning selvstændigt. Prøv om du kan finde ud af det ved at kigge på dette eksempel... ellers så skriv igen :)
<? if(!$_GET[page]) $_GET[page]=0;
// etabler forbindelse til din mysql-db ?> <form> <input name="searchword"> <input type="submit"> </form><br> <? if($_GET[searchword]) {
$foresp = mysql_query("SELECT * FROM annonce_udlejer ORDER BY dato LIMIT ".($_GET[page]*10).",10") or die(mysql_error()); while($data = mysql_fetch_array($foresp)) { // vis din data her }
Hmm, du kan ikke rette det eksempel til som jeg skrev 17:17:08 Det har nemlig alle de funktioner som jeg eftersøger.. men har problemer når jeg klikker tilbage - den "glemmer" nærmest udtrækket fra databasen.
den virker ikke fordi variablen har værdien nul, hvilket svarer til false. i stedet for at sige if($var) skal du bruge if(isset($var)). så burde det virke.
if($_POST['submit'] || isset($_GET['s'])) { $antal = (10*$_GET['s']); // starter så ved 10 på side 2, 20 på side 3, osv. (...) $antal++; echo "$antal"; (...) }
Min søgning består af 3 dropdown boxe, og jeg kan godt lave et "WHERE tabel = '$dropdown_box' i databasen.. men i de dropdown boxe kan man også vælge "alle" - altså hvor den skal søge på alt. Hvad gør jeg der? Er jeg så nød til at dele det op i if-sætninger eller kan jeg lave noget smart i WHERE-sætningen?
jov.. altså man søger på noget bestemt i 3 kategorier (celler) i databasen. F.eks. en by. så vælger man en by eller klikker at man vil søge på alle byer.
if ($dd_box == "alle") $where = "(by1 LIKE '%$search%') OR (by2 LIKE '%$search%') OR (by3 LIKE '%$search%')"; else $where = "($dd_box LIKE '%$search%')";
$query = mysql_query("SELECT * FROM filer WHERE $where (osv.)");
Jamen cellerne hedder bare det som man kan søge efter... Jeg kan bare ikke komme på en smart måde at dele det op, så man definerer en søgning (altså skriver WHERE = man vælger noget i dropdown menuen) eller man søger efter alt (vælger alle = man behøves ikke at definere WHERE)
yes det går fint :] Så må du lære mig noget smartere en anden gang...
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.