PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit Suche


Hanna
16.05.2003, 11:00:16
Hallo Leute,

ich habe mal wieder ein kleines Problemchen mit meiner Suchabfrage.

erstens möchte ich aus einer Tabelle in mehrerern spalten suchen
komme aber nicht mit den Trennzeichen nicht klar.

so läufts:
$result = mysql_query("SELECT * FROM produkte WHERE info LIKE "%".$suchen."%" LIMIT 10" ,$link);

möchte aber zu info auch noch im Feld text suchen

und außerdem wäre der absolute Hit wenn man mit

and, or

oder

+

suchen könnte.....

aber da fehlt mir jegliches verständniss.....

Gruß Hanna

c4
16.05.2003, 15:57:22
Erstmal findest Du hier (http://www.mysql.com/doc/de/SELECT.html) eine Dokumentation.

Kurz gefasst: SELECT feld1, feld2, feld3 FROM tabelle WHERE bedingung1 AND (bedingung2 OR bedingung3)

Speziellere Fragen??

Hanna
16.05.2003, 16:30:00
hmmm ...

da peile ich nicht so ganz..

also, in meiner abfrage wird doch die Spalte info in der Tabelle produkte durchsucht, gell?!


$result = mysql_query("SELECT * FROM produkte WHERE info LIKE "%".$suchen."%" LIMIT 10" ,$link);

Habe mal versucht Deine Zeile auf meine Zeile anzupassen....

$result = mysql_query("SELECT info, text FROM produkte "%".$suchen."%" AND ("%".$suchen."%" OR "%".$suchen."%" ) LIMIT 10" ,$link);

bedingung1, 2 und drei sollen doch wohl für die eingegebenen Suchbegriffe stehen .. oder nicht?

Habe ich das einigermassen verstanden ... oder mal wieder Holzweg ?

Gruß Hanna

c4
16.05.2003, 16:34:36
Nein, nicht ganz korrekt. Da fehlt die WHERE-Klausel.

Die Verknüpfung in der WHERE-Klausel erfolgt mit AND und OR, wobei AND die höhere Wertigkeit hat (darum im obigen Beispiel die Klammern) Ist wie in der Mathematik: Punktrechnung (AND) geht vor Strichrechnung (OR)


$result = mysql_query("SELECT info, text FROM produkte
WHERE feld1 LIKE '%$suchen%' AND
(feld2 LIKE '%$suchen%' OR feld3 LIKE '%$suchen%')
LIMIT 10" ,$link);

Hanna
16.05.2003, 16:48:11
wolte gerade Antworten das ich verwirrt bin ....
aber nach Deiner Änderung geht's mir nicht besser : )

Also, die suche soll in einer tabelle über mehrere Spalten laufen, mit der AND und OR klausel.

mit SELECT fange ich die spalten ab, so weit so gut...

wen ich jetzt

WHERE feld1 LIKE '%$suchen%' einbaue also,

WHERE info LIKE '%$suchen%'

dann sucht er ja wieder nur in der Spalte info

ich möchte aber das er (warum spricht man eigentlich immer von er?) in mehreren Spalten sucht, verhindere ich das nicht mit dem Befehl
info LIKE '%$suchen%'

zusätzlich soll auch noch mit AND und OR geprüft werden ....

ist es dann vielleicht möglich das ganze so aufzubauen


WHERE info, text LIKE '%$suchen%'

c4
16.05.2003, 17:08:42
Ich muss zugeben, dass es vor der Änderung ein perfektes Chaos war. Danach hab ich es mir nicht nochmal durchgelesen - wohl auch besser so...

Minimalistische Referenz:
- mit SELECT gibst Du an, welche Felder ausgegeben werden sollen, bzw. zur weiteren Verarbeitung zur Verfügung stehen sollen (* = alle Felder)
- WHERE feld LIKE '%auto' findet alle Felder, die mit 'auto' aufhören
- WHERE feld LIKE 'auto%' findet alle Felder, die mit 'auto' anfangen
- WHERE feld LIKE '%auto%' findet alle Felder, die 'auto' beinhalten
- exakten Feldinhalt findet man mittels WHERE feld='auto'

Die Idee von WHERE feld1, feld2 LIKE '$suchen' ist nicht unlogisch, aber das wird so nicht akzeptiert. Da muss man wirklich WHERE feld1 LIKE '%$suchen' AND feld2 LIKE '%$suchen' schreiben. Oder halt OR - kommt auf das Ziel drauf an.


Ist es für Dich als weibliches Wesen nicht wunderschön, dass ER (der Interpreter) männlich ist? ER macht nicht, was Du willst. ER versteht Dich nicht. ER gibt Dir nur Fehlermeldungen aus. ER nervt Dich. usw. :)

Hanna
16.05.2003, 17:19:49
OK ... das habe ich begriffen, macht ja auch Sinn wenn man das so liest. Ich glaube so komme ich klar. Wenn nicht, ich weiß ja wo ich Dich finde : )

Das ER (der Interpreter) männlich ist, bestärkt mich nur bei meinem Wunsch IHN in die Knie zu zwingen ; ) um IHM zeigen zu können wer die Cheffin ist ....

Aber ER ist sehr stark und Kompliziertm was es mir nicht leicht macht ....

mal einen wirklich lieben Gruß an Dich
(ich weiß das ist jetzt wieder Mädchenhaft... ist mir aber egal)

c4
16.05.2003, 20:25:35
Du machst mir Angst!

Trotzdem Danke. :)