Jag har tänkt göra en sökfunktion med tre textrutor.
Det kan man söka är bilmärke, årsmodell och färg.
Informationen finns lagrad i en MySQL-tabell.
På vilket sätt löser man detta enklast med hjälp av php?
Sökningen skall fungera på följande sätt ifall man endast skriver i en textruta, så visas resultatet enligt sökordet. Den skall också fungera på detta sätt, ifall man skriver i två eller flera textrutor, så skall det endast visa resultatet enligt
sökorden. T.ex om man skriver i en textruta bilmärke, som Volvo och en annan textruta färg, som blå, skall det endast visa Volvo med färgen blå.
Det är ju lite kul för din beskrivning av ditt problem är ju som psedukod (stavas?)
Det är ju bara att du programmerar som du sagt, skapa olika sql frågor med hjälp av dina "ifall satser" (if).
Det är ju alltså hur många attribut i WHERE satsen som ska matchas som du bestämmer med dina if-satser.
EDIT! Observera hur varje rad börjar på "Det är ju" :bire
Om dina fält i formuläret heter "marke", "farg" och "ar" och formuläret postas mha POST samt databasens fält heter detsamma med inledande versal, så skulle det bli något liknande:
$where = "";
if (isSet($_POST["marke"])
$where.= "Marke = '".$_POST["marke"]."' ";
if (isSet($_POST["farg"]) {
if (strlen($where) > 0) $where .= " AND ";
$where.= "Farg = '".$_POST["farg"]."' ";
}
if (isSet($_POST["ar"]) {
if (strlen($where) > 0) $where .= " AND ";
$where.= "Ar = '".$_POST["ar"]."' ";
}
$sql = "SELECT * FROM tabellnamn WHERE $where";
$marke = mysql_escape_string( $_POST['marke'] );
$farg = mysql_escape_string( $_POST['farg'] );
$ar = mysql_escape_string( $_POST['ar'] );
$sql = "SELECT * FROM tabellnamn WHERE marke LIKE '%$marke%' AND farg LIKE '%$farg%' AND ar LIKE '%$ar%'";