Avatar billede dingkee Nybegynder
17. august 2005 - 12:56 Der er 8 kommentarer og
1 løsning

Søgning i database

Jeg har 4 forskellige ting man skal kunne søge efter:

Alder
Køn
Klasse

også
Fritekst søgning

Hvordan laver man det, så man både skal kunne søge i en af de overstående eller flere??
Avatar billede delphinarious Nybegynder
17. august 2005 - 13:27 #1
Lav nogle if-sætninger, og dan dit sql-kald ud fra det. Eksempel:

$query = "select * from TABEL where beskrivelse like '%$fritekst%'";

if($_POST["alder"]) {
    $query .= " and alder = '$alder'";
}

$query .= " order by id asc";
Avatar billede dingkee Nybegynder
18. august 2005 - 14:56 #2
det eneste jeg ikke kan få til at virke det er det fritekst... den skal søge i hele databasen og ikke kun i en tabel...
Avatar billede dingkee Nybegynder
18. august 2005 - 15:39 #3
Lige et tillæges spørgsmål...

Hvordan gør jeg sådan med alder at den kun skal søge dem der er ældre end den pågældende alder man har indtastet??
Avatar billede delphinarious Nybegynder
18. august 2005 - 16:00 #4
Mht. alder:

if($_POST["alder"]) {
    $query .= " and alder > '$alder'";
}

Så vil den kun finde poster, hvor alderen er større end $alder. Hvis du derimod også ønske at medtage dem, der har alder svarende til $alder, skal du bruge:

if($_POST["alder"]) {
    $query .= " and alder >= '$alder'";
}

Hvad angår fritekst, så mener du vel, at den skal søge i alle FELTER, ikke sandt? Alle tabeller, er et større projekt, men det ser jeg da heller ingen grund til. Den skal vel kun søge i den tabel, hvor du har de her profiler, ikke sandt?
Avatar billede dingkee Nybegynder
18. august 2005 - 16:12 #5
jo, altså alle felter :)
Avatar billede delphinarious Nybegynder
18. august 2005 - 16:46 #6
Ok. Så gør du som følger.

//Indsaml alle variabler
$alder = $_POST["alder"];
$koen = $_POST["koen"];
$klasse = $_POST["klasse"];
$fritekst = $_POST["fritekst"];

//Lav query...
$query = "select * from TABEL where (alder like '%$fritekst%' or koen like '%$fritekst%' or klasse like '%$fritekst%')";

if($_POST["alder"]) {
    $query .= " and alder >= '$alder'";
}

if($_POST["koen"]) {
    $query .= " and koen = '$koen'";
}

if($_POST["klasse"]) {
    $query .= " and klasse = '$klasse'";
}

$query .= " order by id asc";

//Lav MySQL-kald:

$sql = mysql_query($query);
while($row = mysql_fetch_array($sql)) {
    //Udskriv noget ved hver post...
    echo $row["id"]."<br />\n";
}
Avatar billede dingkee Nybegynder
18. august 2005 - 17:29 #7
Mange tak for hjælpen... Det er perfekt... dog har jeg et lille problem...

Jeg har prøvet at tilføje så den også skal søge fra hvilken by de kommer:

$byen = $_REQUEST['Bruger1:Bruger2:tbBy'];

if($_REQUEST["byen"]) {
    $query .= " and byen = '$byen'";
}

Hvis jeg laver en echo og får udskrevet hvilken by den tager med over, er det den rigtige den tager med... Men alligevel så vælger den alle posterne i databasen... hvorfor det??
Avatar billede dingkee Nybegynder
18. august 2005 - 17:56 #8
Jeg har fået det lavet... :)

Det var bare en stavefejl :)

Mange tak for hjælpen igen...
Avatar billede delphinarious Nybegynder
18. august 2005 - 23:03 #9
Nå ok - godt at du fandt ud af det. Det var så lidt, og tak for points! ;-)
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