Hej i Php eksperter/ muligvis Mysql eksperter. Jeg er lidt i tvivl hvor dette spørgsmål skal placeres.
Jeg er igang med at opbygge et Community system opbygget i Sessions, og mysql. Jeg er nu kommet til den del hvor jeg vil have en avanceret søge funktion. Valgmulighederne skal være :
Brugernavn eller ingenting. Alder fra XX til XX. Eller ligegyldigt. Landsdel Midtjylland osv..Eller ligegyldigt Køn : Dreng eller pige Eller begge. Civilstatus : Single eller optaget eller ligegyldigt. Som i kan se er der rigtig mange muligheder.
Jeg er kommet i tvivl hvordan jeg skal løse det. For hvis nu bruger vælger at skrive et brugernavn og undlader i resten så skal den jo kun søge på brugernavnet, osv. Hvordan får jeg lavet det så at jeg ikke skal lave en masse if sætninger? Jeg søger ikke et svar som er lige til at Copy'an'paste.Men hvordan jeg kan lave det smart.Kom gerne med eksempler !
// Rens input $r_navn = mysql_escape_string(trim($navn)); // Fjern åndssvage mellemrum og escape "farlige tegn" $r_alder = (int)$alder; // For at være sikker på der ikke er tekst i ...
// Test for om der udfyldt mindst et felt rigtigt if($r_navn || $r_alder || ...){ $where_clause = "0"; if($r_navn) $where_clause .= " OR navn = '$r_navn'"; if($r_alder) $where_clause .= " OR alder = $r_alder"; ....
$sql = "SELECT ... FROM ... WHERE $where_clause"; }
Uh, hvis du nu vil have en eksklusiv søgning, i stedet for en inklusiv som ovenfor, så retter du $where_clause = "0"; til $where_clause = "1"; og ændrer OR til AND i dine $where_clause .= ...
Da jeg skal søge imellem alderen F.eks 14 - 17 år.. YYYY-MM-DD
Så bruger jeg denne sætning :
*,DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(age, '%Y') - (DATE_FORMAT(CURDATE(), '%m-%d') > DATE_FORMAT(age, '%m-%d')) AS alder FROM users HAVING alder BETWEEN $from AND $to.. Hvordan får jeg det lavet? Undskyld jeg har været så langsom om at svare jer.
Kan du ikke prøve at give et dump af din sql? Så jeg kan se hvilke data eller ihf. bare felter du har i din tabel, så kan jeg prøve at kigge på det. Kom også gerne med de info du ønsker søge på helt præcist.
Forklaring : // Pige har værdien 1, dreng har 0. // Landsdel har værdier fra 1 til 16 //online er 0 for offline og 1 er for online. //////////////////////////////////////////////////////////////// POST DATA: Felt - type - Post værdier -
Brugernavn - text box - bogstaver plus specieltegn som "- :" navn - text box - bogstaver plus specieltegn som "- :" Alder fra og til - 2x Drop down menu - 13 år til 18 år. køn - dropdown menu - Ligegyldigt - pige - dreng landsdel - dropdown menu - midtjylland, sjælland osv.. online - dropdown menu - ligegyldigt -Ja eller nej //////////////////////////////////////////////////////////////// Jeg håber nu, at jeg har gjort mig forstålig nu :) ////////////////////////////////////////////////////////////////
Glemte en ting : Landsdel og alderen skal selvfølgelig også være ligegyldigt ..
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.