---
title: "Hur söker jag i tabell?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/169523-hur-söker-jag-i-tabell"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "harry_boy"
published: "2008-03-01T07:36:11.000Z"
updated: "2008-03-01T11:16:20.000Z"
replies: 4
views: 465
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/169523-hur-söker-jag-i-tabell"
---

# Hur söker jag i tabell?

## #1 — harry_boy, 2008-03-01T07:36Z

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å)

```php
$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);
```

Permalänk: https://www.webforum.nu/p/169523

## #2 — oskob, 2008-03-01T09:34Z

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:

```php
$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 ...";
```

Permalänk: https://www.webforum.nu/p/2085714

## #3 — harry_boy, 2008-03-01T10:28Z

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:

```php
$query .= " kund_foretagsnamn like '%$part%' or lev_postadress like '%$part%' or ";
```

Permalänk: https://www.webforum.nu/p/2085718

## #4 — harry_boy, 2008-03-01T10:37Z

Eller är det enklast att lägga till ett nytt sökfält där jag skriver lev.adress?

Permalänk: https://www.webforum.nu/p/2085719

## #5 — Pedda, 2008-03-01T11:16Z

Eftersom du använder or  i din query så måste ju bara någon av delarna uppfyllas. Så ändra till and istället.

Permalänk: https://www.webforum.nu/p/2085727

---

Tråden på webben: https://www.webforum.nu/amne/php/169523-hur-söker-jag-i-tabell
