BenganMedlem sedan juni 2000690 inlägg Jag testade din parsning av en sökfråga som fins här: http://cgi.webforum.nu/wf/Forum11/HTML/000405.html
Den funkar mycket bra förutom en sak (som väl antagligen är mitt fel)... Så fort man skriver minus framför ett ord så returneras ingen data alls. Alla andra kombinationer verkar funka som det är tänkt.
Ett exempel, skriver jag 'gratis -gästbok' så blir SQLen:
SELECT links.*, cats.CatTitle, cats.CatNav from links LEFT JOIN cats ON cats.CatID = links.CatID WHERE (links.LinkName LIKE '%gratis%') AND NOT links.LinkName LIKE '%gästbok%' ORDER BY links.LinkName LIMIT 0,15
Jag har även provat med att ta bort JOIN delen men det blev samma resultat. Provade även att ta bort % runt ordet i AND NOT men det hjälper inte heller.
Det finns gott om poster med Gratis i så nåt borde returneras.
Någon ide om vad som kan vara fel? Kör med MySQL och får samma fel om jag kör SQL.en direkt mot MYSQL.
Tydligen har jag fått hjärnsläpp :)
------------------
MvH
/Bengan
www.bengan.com | Brossans Räjser
"Better to be hated for who you are than loved for who you're not."
[Redigerat av Bengan den 05 aug 2001]
emissionMedlem sedan dec. 19996 721 inlägg MySQL gillar inte AND NOT-kriteriet. Tillsvidare (håller på att bygga om funktionen helt) kan du bygga om, så att det i stället blir
AND NOT (links.LinkName LIKE '%gästbok%')
dvs. med parenteser runt.
BenganMedlem sedan juni 2000690 inlägg Ah, så det var så enkelt!
Verkligen bra funktion, du får hojta till när den är uppdaterad.
Tack för hjälpen :)
Om någon undrar så löser det sig med att lägga till den fetmarkerade koden:
'återskapa strängarna (ersätt chr(1) med mellanslag) och
'skapa WHERE-satser i arrayerna
for i=0 to ubound(mAndArr)
mAndArr(i)=replace(mAndArr(i),chr(1)," ")
mAndArr(i)=replace(mWhere,"%%","%" & mid(mAndArr(i),3) & "%")
next
for i=0 to ubound(mNotArr)
mNotArr(i)=replace(mNotArr(i),chr(1)," ")
mNotArr(i)= "(" & replace(mWhere,"%%","%" & mid(mNotArr(i),3) & "%") & ")"
next
for i=0 to ubound(mQueryArr)
mQueryArr(i)=replace(mQueryArr(i),chr(1)," ")
mQueryArr(i)=replace(mWhere,"%%","%" & mid(mQueryArr(i),2) & "%")
next
------------------
MvH
/Bengan
www.bengan.com | Brossans Räjser
"Better to be hated for who you are than loved for who you're not."
[Redigerat av Bengan den 05 aug 2001]