array_intersect() ?

hiho experten.

habe folgendes problem:
ich möchte gerade eine volltextsuche programmieren. also ich lese aus einer datenbank die suchbegriffe aus und generie dann die ergebnisse. für 1 suchwort klappt das ganze auch wunderbar. doch bei mehreren is irgendwas faul… und ich vermute, dass das ganze mit $topic zusammen hängt. folgende idee hatte ich dafür:
ich lese einzeln für die begriffe die ergebnisse aus und speichere die ids. und dann möchte ich mit array_intersect() dann halt die schnittmenge bilden.

so sieht gerade mein code aus:

$strings=explode(' ',$begriff); // spliterung in die einzelnen worte
$begriffanzahl=count($strings); // wieviele worte wurden eingegeben?
$ergids;
$idarray;
for ($i=0; $i
aber das ganze klappt irgendwie nicht :frowning:
ich habe in meiner testtabelle 2 wörter, die haben genau 5 übereinstimmungen. wenn ich "wort1 wort2" schreibe, dann bekomme ich zwar als $ergebnisanzahl tatsächlich 5 angezeigt, aber nur 2 ids werden irgendwie in dem array gespeichert... die anderen gehen in einem mysql fehler drauf :frowning:
wenn ich dagegen "wort2 wort1" eingebe, habe ich plötzlich über 400 ergebnisse. erst dachte ich, das wären die ergebnisse von "wort2" ohne die von "wort1". aber irgendwie wurden andere ids rausgeschmissen... warum und weshalb auch immer!

sieht vielleicht jemand von euch experten nen fehler?
oder muss ich noch ein wenig mehr code hier zeigen; sprich, es müsste an was anderem liegen?

laut phpinfo() is auf meinem server "PHP Version 4.3.1"
weiss ja nicht, in wieweit das alles konform is :smile:

mfg
Geisterkarle

debugging

hiho experten.

habe folgendes problem:
ich möchte gerade eine volltextsuche programmieren. also ich
lese aus einer datenbank die suchbegriffe aus und generie dann
die ergebnisse. für 1 suchwort klappt das ganze auch
wunderbar. doch bei mehreren is irgendwas faul… und ich
vermute, dass das ganze mit $topic zusammen hängt.

schwer zu sagen - in Deinem sourcecode taucht nämlich kein einziges $topic auf.

folgende
idee hatte ich dafür:
ich lese einzeln für die begriffe die ergebnisse aus und
speichere die ids. und dann möchte ich mit array_intersect()
dann halt die schnittmenge bilden.

ist mir eigentlich fast zu kompliziert…
wenn schon mit id’s gearbeitet wird (also zahlen), dann bietet sich für mich eine einfache while schleife viel eher an…

in etwa so

$idarray = Deine id's, die den suchbegriff enthalten in einem array;
for ($i=0;$i";
 }
}

allerdings verstehe ich nicht, warum Du nicht schon im mysql query das ganze ausmistest…

ein einfaches $qry = „SELECT * FROM tabelle WHERE inhalt LIKE ‚%$wort1%‘ AND inhalt LIKE ‚%$wort2%‘“; tuts doch viel besser…
und die verknüpfungen lassen sich ja dynamisch erstellen…

explode auf " "
for $i=0 bis count (array)
evtl noch vorschalten: if (!isset($whereanhang)) $whereanhang = „WHERE inhalt LIKE ‚%$array[$i]%‘“;
else $whereanhang .= " AND inhalt LIKE ‚%$array[$i]%‘";
}

hoffe, dass das so verständlich ist…?