Jag har en tabell som heter tbl_order som jag har innehåller ca 20 fält. Jag skulle vilja veta hur jag från ETT enda formulärssökfält där jag kanske skriver FÖRETAGSNAMN ORT så skall den söka på allt i databasen som där företagsnamnet och orten stämmer.
Hur skulle en sådan kod kunna se ut. Idag är det följande kod och det funkar enbart med sökning på ett ord .. (endast det som söks på)
$query = "SELECT id, kund_foretagsnamn, kund_attention, kund_avdelning, kund_adress, kund_postadress, lev_foretagsnamn, lev_attention, lev_avdelning, lev_adress, lev_postadress, 1_spec, 2_spec, 3_spec, 4_spec, 5_spec, 6_spec, 7_spec, 8_spec, 9_spec, text_1, text_2, text_3, referens, 10_spec, 11_spec, 12_spec, 13_spec, 14_spec, 15_spec, fakturanummer, ordernummer FROM $tbl_order WHERE LOWER(kund_foretagsnamn) LIKE '%". $sokord ."%' OR LOWER(kund_attention) LIKE '%". $sokord ."%' OR LOWER(kund_avdelning) LIKE '%". $sokord ."%' AND LOWER(kund_Adress) LIKE '%". $sokord ."%' OR LOWER(kund_adress) LIKE '%". $sokord ."%' OR LOWER(kund_postadress) LIKE '%". $sokord ."%' OR LOWER(lev_foretagsnamn) LIKE '%". $sokord ."%' OR LOWER(lev_attention) LIKE '%". $sokord ."%' OR LOWER(lev_avdelning) LIKE '%". $sokord ."%' OR LOWER(lev_adress) LIKE '%". $sokord ."%' OR LOWER(lev_postadress) LIKE '%". $sokord ."%' OR LOWER(1_spec) LIKE '%". $sokord ."%' OR LOWER(2_spec) LIKE '%". $sokord ."%' OR LOWER(3_spec) LIKE '%". $sokord ."%' OR LOWER(4_spec) LIKE '%". $sokord ."%' OR LOWER(5_spec) LIKE '%". $sokord ."%' AND LOWER(6_spec) LIKE '%". $sokord ."%' OR LOWER(7_spec) LIKE '%". $sokord ."%' OR LOWER(8_spec) LIKE '%". $sokord ."%' OR LOWER(9_spec) LIKE '%". $sokord ."%' OR LOWER(text_1) LIKE '%". $sokord ."%' AND LOWER(text_2) LIKE '%". $sokord ."%' OR LOWER(text_3) LIKE '%". $sokord ."%' OR LOWER(referens) LIKE '%". $sokord ."%' OR LOWER(10_spec) LIKE '%". $sokord ."%' OR LOWER(11_spec) LIKE '%". $sokord ."%' OR LOWER(12_spec) LIKE '%". $sokord ."%' OR LOWER(13_spec) LIKE '%". $sokord ."%' OR LOWER(14_spec) LIKE '%". $sokord ."%' OR LOWER(15_spec) LIKE '%". $sokord ."%' OR fakturanummer LIKE '%". $sokord ."%' OR ordernummer LIKE '%". $sokord ."%'";
$result = mysql_query($query);
if(!(mysql_num_rows($result)) == 0)
{
$color = "FFFFFF";
while($data = mysql_fetch_array($result))
{
if($color == "FFFFFF")
{
$color = "F1F1F1";
}
else
{
$color = "FFFFFF";
}
$query_2 = "SELECT type,fakturanummer,kund_foretagsnamn,id FROM $tbl_order WHERE id = '". $data["id"] ."'";
$result_2 = mysql_query($query_2);
list($type, $faktura_nr, $foretagsnamn) = mysql_fetch_array($result_2);
Du får dela upp sökorden vid mellanslag och göra en liten loop för att konstruera SQL-satsen ungefär såhär:
$sokord = "rund pizza";
$parts = explode(" ", $sokord); // skapar en array av sökorden
$sql = "select * from tabell where ";
foreach($parts as $part){
$sql .= " tabellfält like '%$part%' or ";
}
$sql = substr($sql, 0, -3); // trimma bort det sista " or"
$sql = "order by ...";
Det fick jag att funka men nu matchar den båda varianterna ... dvs om jag skriver företagsnamnet och sedan orten så tar den med alla på företagsnamnet och även alla som har orten. Jag vill att den skall ta med det företagsnamnet på den orten. Sökningen är i en orderlista där jag vill få fram vilka order som är gjorda med just den kunden på just det leveransstället!
Ändringen tror jag bör göras här:
$query .= " kund_foretagsnamn like '%$part%' or lev_postadress like '%$part%' or ";