---
title: "kombinerad sökning i flera kolumner?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/166184-kombinerad-sökning-i-flera-kolumner"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "vela"
published: "2007-11-07T11:37:30.000Z"
updated: "2007-11-18T23:09:53.000Z"
replies: 5
views: 580
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/166184-kombinerad-sökning-i-flera-kolumner"
---

# kombinerad sökning i flera kolumner?

## #1 — vela, 2007-11-07T11:37Z

Har gjort en enklare sökfunktion i php, som söker i en MySQL-databas. Som det är nu söker den bara i en kolumn. Jag skulle vilja ha ett sökfält där man kan skriva in ett sökord, men också tre andra drop-down, där man kan välja att avgränsa sökningen enligt vissa parametrar (eller kolumner då). Så att exempelvis, söker jag på "iogt-nto" i sökrutan, och väljer  "skellefteå" i drop-down-rutan "Orter", så får jag således upp alla träffar på "iogt-nto" i "Skellefteå". På samma vis vill jag att man ska kunna avgränsa enbart med hjälp av drop-down-rutorna, så att man exv kan välja "nykterhetsförbund" i drop-down-rutan "Kategori" och "Skellefteå" i rutan "Ort", och således få träffar på alla nykterhetsförbund i Skellefteå. 

(Precis som det är på den här sidan: <https://www.fauppsala.se/sok.php>)

Är det någon som kanske kan hjälpa till lite?

Här är lite kod.

```

<form name="form" action="soek.php" method="get">
  <input type="text" name="q" />
  <input type="submit" name="Submit" value="Sök" />
</form>

<?php

  $var = @$_GET['q'] ;
  $trimmed = trim($var); 

$limit=10; 

if ($trimmed == "")
  {
  echo "<p>Skriv in ett sökord...</p>";
  exit;
  }

if (!isset($var))
  {
  echo "<p>We dont seem to have a search parameter!</p>";
  exit;
  }

$opendb = mysql_connect("host","user","passwd"); 

mysql_select_db("databas") or die("Unable to select database"); 

$query = "select * from tabell where kolumn1 like \"%$trimmed%\"  
  order by kolumn1"; 

 $numresults=mysql_query($query);
 $numrows=mysql_num_rows($numresults);

  if (empty($s)) {
  $s=0;
  }

  $query .= " limit $s,$limit";
  $result = mysql_query($query) or die("Couldn't execute query");

echo "<p>Du sökte efter: &quot;" . $var . "&quot;</p>";

echo "Organisationer funna:";
echo "<br />";
echo "<br />";

$count = 1 + $s ;

  while ($row= mysql_fetch_array($result)) {
   
     echo $row['kolumn1'].". ";
     echo "<br />";
     }
```

Tack på förhand,
/victor

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

## #2 — vela, 2007-11-07T13:27Z

Hm, tråden kanske hör bättre hemma i php-forumet?

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

## #3 — LarsG, 2007-11-07T16:50Z

Jo, det är mer en scriptfråga än SQL. 

I p(seudo)hpkod skulle man kunna göra så här

```
   $query = "select <kolumner> from tabell where 1 = 1 ";
   if  (isset($dropdown1))
   {
         $selectionValue = ...;
         $query .= "and c1 = '" . $selectionValue . "'";
    }
   if  (isset($dropdown2))
   {
         $selectionValue = ...;
         $query .= "and c2 = '" . $selectionValue . "'";
    }
```

Flyttas från SQL

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

## #4 — vela, 2007-11-09T08:10Z

Tack LarsG (vilket min farbror för övrigt också heter) för ett bra svar. Återstår bara att förstå hur jag ska tillväga med det. Återkommer säkerligen med fler frågor...:)

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

## #5 — vela, 2007-11-13T13:33Z

Jag känenr mig lite dum...men jag förstår inte riktigt. 

\- Måste queryn vara annorlunda, än den är i den kod jag urpsurngligen använt mig av?

\- $selectionValue, ska det definieras nånstans? Och isf hur?

\- Och $dropdown1 -och 2, hur definierar jag dom?

Förlåt om mina frågor är dumma, men ibland måste man ju verkligen ställa sådana ibland.

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

## #6 — aasah, 2007-11-18T23:09Z

För att återgå till din ursprungliga fråga, var lagrar du det innehåll du vill ha i drop-down boxarna? Om de finns i en databas får du göra något i stil med detta. (Om orterna lagras i tabell Orter och har kolumnerna id och ort, Kategori har kolumnerna id och kat.)

```php
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>
<select name="ort">
<?php
$sql="SELECT * FROM Orter";
$res = mysql_query($sql) or die("Ortstrul");
while ($row=mysql_fetch_array($res)) {
   echo '<option value="'.$row['id'].'">"'.$row['ort'].'"</option>";
} ?>
</select>
<select name="kat">
<?php
$sql="SELECT * FROM Kategori";
$res = mysql_query($sql) or die("Kategoristrul");
while ($row=mysql_fetch_array($res)) {
   echo '<option value="'.$row['id'].'">"'.$row['kat'].'"</option>";
} ?>
</select>....</form>

<?php
$where == ""
if (isSet($_POST["ort"]))
   $where = "OrtID = ".$_POST["ort"];
if (isSet($_POST["kat"])) {
   if ($where == "")
      $where = "KatID = ".$_POST["kat"];
   else $where .= " AND OrtID = ".$_POST["ort"];
}
$sql = "SELECT * FROM Tabell WHERE $where";
$res = mysql_query($sql) or die("sökstrul");
//Visa resultaten....
?>
```

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

---

Tråden på webben: https://www.webforum.nu/amne/php/166184-kombinerad-sökning-i-flera-kolumner
