stichwortsuche
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
befehl
code
date
eintrag
familie
fehler
fehlermeldung
feld
idee
kleinschreibung
komma
ordern
spalte
stichwort
suchbegriff
suche
tabelle
text
vorkommen
welt
-
Hey Leute,
ich hab meine mysql Datenbank und würde jetzt gerne eine Spalte nach einem bestimmten Stichwort durchsuchen lassen, heißt da steht hald in jeder Zelle ein ganzer Text und ich möchte nur die Datensätze, bei denen in dieser Spalte das Stichwort vorkommt.
Könnt ihr mir vielleicht nen Funktionsnamen oder Quelltext geben, google und die boardsuche waren leider nicht erfolgreich.
thx -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Das ganze geht mit SQL. Der zugehörige Befehl lautet:
SELECT * FROM tabellenname WHERE feld LIKE \'%suchwort%\'
% dient dabei als Platzhalter. -
So sollte das eigentlich gehen:
SELECT * FROM tabellenname WHERE feld LIKE \'%suchwort1%,%suchwort2%,%suchwort3%\' // etc.
Und direkt nach allen Wörtern:
SELECT * FROM tabellenname WHERE feld LIKE \'%suchwort1% %suchwort2%\' // etc. Ohne Kommas!
Irrtum vorbehalten!
mfg x-bLack -
okay, heißt mit Kommas zeigt er alle in denen mindestens eines der Suchwörter vorkommt, ohne Kommas zeigt er alle an wo alle Wörter vorkommen, richtig?
Wenn ich jetzt in einem Textfeld eine Eingabe habe wie \"Wort1, wort2,wort3\", wie lese ich denn hier am einfachsten die Suchbegriffe in ein array ein?
Beachtet der Befehl LIKE eigentlich groß und klein Schreibung? Gibt es ggf. eine Alternative, die das nicht beachtet?
thx -
nimm:
$arr = explode(\",\",$zeichenkette)
dann wird das komma zum trennen verwendet bei $zeichenkette gibst du dann den string zum explodieren/trennen an.
Beitrag geändert: 25.3.2008 19:15:22 von familie-schiffer
Beitrag geändert: 25.3.2008 19:16:28 von familie-schiffer -
Hallo!
Also zum ersten: Richtig ^^
Zum zweiten: Ich denke das hilft dir weiter:
http://www.issociate.de/board/post/192375/MySQL_Abfrage_in_ein_Array_speichern?.html
Ansonsten Google fragen, MySQL Query in Array (o.ä.)
Zum dritten: MySQL ist das egal, ob du die Befehle gross oder klein schreibst!
mfg x-bLack
-
hey,
danke für die antworten. Ich meinte aber nicht, ob ich die Befehle groß/klein schreiben muss, sondern ob er bei der Suche mit LIKE groß/klein unterscheidet.
thx -
Nach Voreinstellung unterscheiden Suchoperationen in MySQL nicht zwischen Groß- und Kleinschreibung (wobei allerdings manche Zeichensätze grundsätzlich immer zwischen Groß- und Kleinschreibung unterscheiden, wie beispielsweise czech). Das bedeutet, dass Sie bei einer Suche mit col_name LIKE \'a%\' alle Spaltenwerte geliefert bekommen, die mit A oder a anfangen. Wenn Sie diese Suche auf Groß- oder Kleinbuchstaben einschränken möchten, müssen Sie dafür sorgen, dass die Kollation eines der beiden Operanden Groß- und Kleinschreibung unterscheidet oder eine Binärkollation ist. Wenn Sie beispielsweise eine Spalte und einen String vergleichen, die beide den Zeichensatz latin1 verwenden, können Sie den COLLATE-Operator einschalten, um einem der beiden Operanden die Kollation latin1_general_cs oder latin1_bin zuzuweisen. Zum Beispiel:
col_name COLLATE latin1_general_cs LIKE \'a%\'
col_name LIKE \'a%\' COLLATE latin1_general_cs
col_name COLLATE latin1_bin LIKE \'a%\'
col_name LIKE \'a%\' COLLATE latin1_bin
Wenn Sie in einer Spalte immer die Groß- und Kleinschreibung berücksichtigen möchten, deklarieren Sie sie mit einer Binärkollation oder CS-Kollation (CS steht für die Unterscheidung von Groß- und Kleinschreibung). Siehe Abschnitt 13.1.5, „CREATE TABLE“.
Einfache Vergleichsoperationen (>=, >, =, <, <=, Sortieren und Gruppieren) beruhen auf dem „Sortierwert“ der Zeichen. Zeichen mit demselben Sortierwert (wie etwa ‘E’, ‘e’ und ‘é’) werden als gleich betrachtet.
http://dev.mysql.com/doc/refman/5.1/de/case-sensitivity.html -
Hey,
wo ist denn hier mein Fehler:
$stichworte=$_POST[\'stichwort\']; $einzeln=explode(\",\", $stichworte); $anzahl=count($einzeln); $suchbegriffe=\"\"; for($i=0;$i<$anzahl;$i++) { if($i>0) $suchbegriffe=$suchbegriffe.\", \"; $suchbegriffe=$suchbegriffe.\"\'%\".$einzeln[$i].\"%\'\"; } $sql=\"SELECT ID, titel, autor FROM tabelle WHERE (titel LIKE \".$suchbegriffe.\") OR (text LIKE \".$suchbegriffe.\") ORDER BY datumzeit DESC\";
Danke für die Hilfe!
Beitrag geändert: 31.3.2008 16:00:09 von date-ideen -
hat keiner ne Idee? wäre wirklich super!
thx -
Hey Leute,
so sieht mein mysql query für die Stichwortsuche aus:
SELECT ID, titel, autor FROM tabelle WHERE (titel LIKE \'%wort1%\' OR LIKE \'%wort2%\') OR (text LIKE \'%wort1%\' OR LIKE \'%wort2%\') ORDER BY datumzeit DESC
Als Ergebnis möchte ich alle Einträge, bei denen in der Spalte titel oder text mindestens eines der Suchwörter wort1 und wort2 vorkommt.
Ich sehe leider keinen Fehler, vielleicht gibt es Probleme mit den logischen Operatoren. Auf jeden Fall bekomme ich eine Fehlermeldung.
thx
Beitrag geändert: 10.4.2008 21:39:40 von date-ideen -
Was für eine Fehlermeldung....
Da kann ich nur raten:
SELECT ID, titel, autor FROM tabelle WHERE (titel LIKE \'%wort1%\' OR titel LIKE \'%wort2%\') OR (text LIKE \'%wort1%\' OR text LIKE \'%wort2%\') ORDER BY datumzeit DESC
Beitrag geändert: 14.4.2008 4:19:37 von polopage -
Hallo date-ideen,
also ganz ehrlich - so kann dir keiner helfen: da ist ein Fehler:
Welcher Fehler denn? das können ganz viele sein: Tabelle falsch, DB falsch, oder was auch immer: Also wenn Du Hilfe möchtest (ich persönlich finde, dass Du auch zunächst einmal evtl. mehr Grundlagenwissen Dir anlernen könnetst :-)), dann musst Du präzisere Auskünfte geben.
LG
UC
-
Hmm,
das ist ja das Problem, es ist kein Syntaxfehler, ich bekomme keine Fehlermeldung...
Ich erstelle einen Tabelleneintrag, in dem z.B. die Worte \"hallo\" und \"welt\" vorkommen. Wenn ich dann in das Suchfeld \"hallo\" eingebe wird mir der Eintrag angezeigt, wenn ich \"welt\" eingebe wird mir der eintrag auch angezeigt. Wenn ich aber \"hallo,welt\" eingebe bekomme ich einfach keinen Eintrag zurück...
Ich finde den logischen Fehler in meiner Syntax aber nicht, ich dacht vielleicht springt er einem von euch ins Auge... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage