---
title: "Sökning som går galet"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/47220-sökning-som-går-galet"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "U2K"
published: "2002-07-04T20:43:30.000Z"
updated: "2002-07-05T08:42:50.000Z"
replies: 7
views: 212
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/47220-sökning-som-går-galet"
---

# Sökning som går galet

## #1 — U2K, 2002-07-04T20:43Z

```php
if ( (isset($searchfld) && $searchfld != "") && (isset($method) && $method !="") ) {
	
		$searchfld = str_replace("*","%",$searchfld);	// Ersätter PHP wildcards med originalet

			$sql = "SELECT text FROM $type WHERE $method like '$searhfld'";

				$result = $db->sql_query($sql);
				if ($db->sql_numrows($result)>=1) {	
					while($row = $db->sql_fetchrow($result) )
					{
						$text = highlight($row['text'],$searchfld); // Gör sökordet i strängen till BOLD
						$tpl->assign(
							array(
								SEARCHRES	=> $text
							)
						);
						$tpl->parse(ROWS,".row");
					}
				}
				else	// Om man inte finner några poster med ordet i visas felmeddelandet.
					{
						$tpl->assign(
							array(
								SEARCHRES	=> "0 funna poster innehållande <b>" . $searchfld . "</b>" 
							)
						);
						$tpl->parse(ROWS,".row");
					}
	}
	else 
	{
		$tpl->assign(
		array(
			SEARCHRES	=> "Du måste skriva in ett ord att söka på!"
		)
		);
		$tpl->parse(ROWS,".row");
	}
```

Detta skiter sig fett.. Jag har fixat och trixat men det verkar inte fungera. Vad är fel?

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

## #2 — SPiN, 2002-07-04T20:47Z

```
...
$sql = "SELECT text FROM $type WHERE $method like '$searhfld'";
...
```

Borde väl vara:

```
$sql = "SELECT text FROM $type WHERE $method LIKE '$searchfield'";
```

Dvs. med ett $searchfield istället för $searhfield. :)

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

## #3 — U2K, 2002-07-04T20:54Z

Är problemet det ska jag personligen kasta mig på golvet och slita av mig allt hår... Hur dum får man bli. 
Så lätt får det inte vara... :)

Jag ser inte skogen för alla träd!

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

## #4 — U2K, 2002-07-04T21:01Z

Nä du SPiN... 

Det var visserligen en kugge men hjulet snurrar inte ännu..
hmmm...

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

## #5 — U2K, 2002-07-04T21:12Z

Det verkar som om det är min förändring av wildcards som gör skillnaden. Om man sätter sökningen till

```
$searchfield = "*text";
istället för
$searchfield = "text*";
så går det.
```

Får kolla upp det...

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

## #6 — SPiN, 2002-07-04T21:13Z

Wildcars för MySQL är %, kan det vara det som spökar?

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

## #7 — U2K, 2002-07-04T21:23Z

Jovisst är det det. MEn jag vet inte hur man ska fixa det så man som användare kan använda \* istället för %. 

Jag läste att man fixar det med str_replace och det verar fungera. Problemet ligger i när man söker. Har man inte searchfield strängen med wildcard före och efter finner den inget.

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

## #8 — Mungo, 2002-07-05T08:42Z

```php
$searchfld = str_replace("*","%",$searchfld);    // Ersätter PHP wildcards med originalet
$sql = "SELECT text FROM $type WHERE $method like '$searhfld'";
```

Det här ersätter ju bara "\*" i söktexten till "%". För att använda LIKE bör du helst ha lite wildcards före och efter också, annars söker du bara efter exakta matchar... Dvs, skriver du in "pappa \*" i sökfältet letar den efter fält i tabellen vars värden är exakt "pappa %" dvs det måste börja med "pappa". Testa med att köra:

```php
$sql = "SELECT text FROM $type WHERE $method like '%'" . $searhfld . "%'";
```

Kanske?

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

---

Tråden på webben: https://www.webforum.nu/amne/php/47220-sökning-som-går-galet
