kostenloser Webspace werbefrei: lima-city


stichwortsuche

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    date-ideen

    date-ideen hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    Das ganze geht mit SQL. Der zugehörige Befehl lautet:

    SELECT * FROM tabellenname WHERE feld LIKE \'%suchwort%\'


    % dient dabei als Platzhalter.
  4. Autor dieses Themas

    date-ideen

    date-ideen hat kostenlosen Webspace.

    wie realisier ich denn eine Suche nach mehreren Stichworten am einfachsten? z.B. wenn man in einem Feld mehrere Worte durch Kommata getrennt eingeben kann?
    thx
  5. x*****k

    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 :cool:
  6. Autor dieses Themas

    date-ideen

    date-ideen hat kostenlosen Webspace.

    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
  7. familie-schiffer

    Kostenloser Webspace von familie-schiffer, auf Homepage erstellen warten

    familie-schiffer hat kostenlosen Webspace.

    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
  8. x*****k

    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 :cool:
  9. Autor dieses Themas

    date-ideen

    date-ideen hat kostenlosen Webspace.

    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
  10. familie-schiffer

    Kostenloser Webspace von familie-schiffer, auf Homepage erstellen warten

    familie-schiffer hat kostenlosen Webspace.

    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
  11. Autor dieses Themas

    date-ideen

    date-ideen hat kostenlosen Webspace.

    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
  12. Autor dieses Themas

    date-ideen

    date-ideen hat kostenlosen Webspace.

    hat keiner ne Idee? wäre wirklich super!
    thx
  13. Autor dieses Themas

    date-ideen

    date-ideen hat kostenlosen Webspace.

    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
  14. p******e

    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
  15. anders-besser-leben

    anders-besser-leben hat kostenlosen Webspace.

    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
  16. Autor dieses Themas

    date-ideen

    date-ideen hat kostenlosen Webspace.

    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...
  17. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!