...
$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. :)
7 svar · 208 visningar · startad av U2K
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?
...
$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. :)
Ä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!
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...
Wildcars för MySQL är %, kan det vara det som spökar?
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.
$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:
$sql = "SELECT text FROM $type WHERE $method like '%'" . $searhfld . "%'";
Kanske?