MySQL DB mit PHP durchsuchen!

  • Hallo zusammen!


    Ich möchte meine MySql Tabelle 'kunden' mit einem Suchbegriff durchsuchen lassen.
    Dafür habe ich ein Such-Formular erstellt:(such.htm)
    <html>
    <head>
    <title>Datenbank Suchfunktion</title>
    </head>
    <body>


    <p>Datenbank Suchfunktion!</p>
    <form method="POST" action="suchen.php">
    <p>Bitte nur den Suchbegriff hier eingeben!<br>
    <input type="text" name="suchbegriff" size="20"></p>
    <p><input type="submit" value="Absenden" name="Absenden"></p>
    </form>
    </body>
    </html>


    Die suchen.php sieht bei mir derzeit so aus:
    <head>
    <title>Gefundene Daten ausgeben</title>
    </head>


    <body>
    <?php
    $db_host = "localhost";
    $db_user = "root";
    $db_pass = "*******";
    $db_name = "kunden";


    $suche = $_POST['suchbegriff'];
    // Verbindung oeffnen und Datenbank ausweahlen
    $conID = mysql_connect( $db_host, $db_user, $db_pass ) or die( "Die Datenbank konnte nicht erreicht werden!" );
    if ($conID)
    {
    mysql_select_db( $db_name, $conID );
    }


    $daten = mysql_query('SELECT * FROM `kunden` WHERE `vorname`=\''.$suche.'\'' , $conID);
    while($row=mysql_fetch_array($daten))
    {
    echo $row['vorname'];
    }
    ?>
    </body>
    </html>


    Fazit: Es funktioniert.
    Problem: Ich habe mehr als nur eine Tabellenspalte (vorname). Also noch Nachname, Anschrift, PLZ, Ort etc. Ich würde gerne mit dem eingegebenen Suchwort im Formualrfeld gerne alle Tabellenspalten durchsuchen lassen und nicht nur 'vorname'. Leider weiss ich eben nicht wie ich das in der SELECT Anweisung dem entsprechend zusammen stellen kann!? Wenn ich z.B. 80541 als PLZ in das Suchformular eingebe soll es in der DB gefunden und ausgegeben werden. Die Begriffsuche soll eben genau sein und nicht nur ungefähr. Währe super lieb, wenn Ihr mir helfen könntet. Danke!

  • WHERE feld = 'bla' OR anderesfeld = 'tralala' OR drittesfeld = 'hossa' ... :D

    My software never has bugs. It just develops random features ... :D
    [FONT="System"]&#63743;
    » DevShack - die Website des freien Webentwicklers Boris ;)

  • Du könntest dir auch LIKE an schauen.


    Beispiel

    SQL
    1. SELECT * FROM `kunden` WHERE `vorname` LIKE'%blabla%'


    Es wird nach allem gesucht wohin blabla enthalten ist.


    also wird auch "Ich schreibe nur blabla in diesem Forum" gefunden (Wenn es sich den in der Spalte vorname befindet)


    gn8


    Rafael

    sizeof(void)

  • Danke Leute, aber es funktioniert nicht. Eure Anntworten sind auch nur unverständliche Fragmente. Ein wenig Programmier Code und dann sofort probiermal. Ich bin leider Anfäger und brauche doch mehr auskommentierte Befehlszeilen. Ich will mittels einem Formualrfeld meine gesamte DB nach dem eingegebenen Begriff durchsuchen u. ausgeben lassen. Ich weiss nicht genau wie ich mit der Variable aus dem Formualrfeld umzugehen habe. Wie ich die Variable mit der Select Anweisung verbinden kann, so das er eben die Felder aus der DB mit dem eingegebenen Begriff vergleicht. Wie müsste ich diese Zeile genau abändern damit alles durchsucht wird?:
    $daten = mysql_query('SELECT * FROM `kunden` WHERE vorname`=\''.$suche.'\'' , $conID);
    Bitte nochmals freundlichst um Hilfe oder andere Vorschläge.

  • Tzzz, na also ... nicht so einfach aufgeben, man lernt immer besser, wenn man erst fummelt :D

    My software never has bugs. It just develops random features ... :D
    [FONT="System"]&#63743;
    » DevShack - die Website des freien Webentwicklers Boris ;)

  • Ich weiß, dass der Thread schon sehr alt ist, aber trotzdem die Frage:
    Wie könnte man in der SQL Bedingung, in z.B. seiner Suche, sagen, dass alle Einträge, die auch nur einen Teil des Suchbegriffes enthalten gezeigt werden. Denn: Wenn ein Eintrag beispielsweise Gaststätte ist, ich gebe aber in die Suche nur Gastst ein, dann zeigt es mir den Eintrag nicht an, wie kann ich das ändern??:rolleyes::rolleyes:

  • Wie, ich habe schon ein bisschen daran herumgeschraubt, bekomme aber irgendwie kein richtiges Layout zusammen, eine Tabelle wäre super!! Also, wie geht soetwas??

  • Also ehrlich gesagt bring ich dir jetzt keine PHP und HTML Grundlagen bei - verstehst du denn den oberen Code kein Stück? ;)

    My software never has bugs. It just develops random features ... :D
    [FONT="System"]&#63743;
    » DevShack - die Website des freien Webentwicklers Boris ;)

  • Wie weit bist Du denn schon? Und wo hängt's?


    Am besten erstellst Du erstmal die Tabelle, so wie sie aussehen soll in html.
    Dann machst Du Dir Gedanken, wie Du in der Schleife in php jeweils eine Zeile erstellen kannst.


    Da wir aber nicht wissen, was Du schon gemacht hast, ist es schwer Dir zu helfen. Da kann ich Boris verstehen.

    Grüße vom Griechen,
    Cybergreek!

  • Ja, das habe ich schon:


    So sollte die Tabelle aussehen, aber je nachdem, wie viele Ergebnisse es gibt, sollten die Zeilen angepasst werden:



    Und das ist das Ergebnis php-Script:



    In kombination mit meinem Suchformular gibt er die Ergebnisse richtig aus. Ich hätte nur gerne ein besseres Layout dafür (Tabelle)


    Danke

  • Und jetzt gehst Du hin und machst aus Deinem

    Code
    1. <td style="vertical-align: top;"><br>
    2. </td>


    und Deinem

    Code
    1. echo $row['Test1'];


    ein

    Code
    1. echo '<td style="vertical-align: top;"><br>'.$row['Test1'].'</td>';


    Dann guckst Du mal in den Quellcode, was raus kommt und was Dir noch fehlt.
    Das ergänzt Du dann nach und nach in Deiner php-Datei bis Du zum Ziel kommst und hast am Ende sogar das Gefühl es selbst gemacht zu haben und sogar was dabei gelernt zu haben ;)

    Grüße vom Griechen,
    Cybergreek!

  • Ein gut gemeinter Tipp noch von mir...


    Gib doch mal in deiner Testumgebung in das Feld "Test1" folgenden Text ein:


    Code
    1. beliebig'; TRUNCATE TABLE `Gutscheine`; SELECT * FROM `Gutscheine` WHERE `Anbieter` LIKE '%test

    Warum solltest du das nicht tun? Weil dann deine komplette Gutschein-Tabelle geleert wird ;)
    Was ich da gerade demonstriere, ist eine SQL-Injection - jemand könnte also seinen eigenen SQL-Code in deine Anweisung einschleusen, indem er das Textfeld entsprechend so wie ich ausfülle ;)


    Wann immer du Daten, die über $_POST oder $_GET oder $_COOKIE kommen, in einer SQL-Abfrage verwendest, solltest du sie vorher "reinigen".
    Dazu gibt es die PHP-Funktion [phpfunction]mysql_real_escape_string[/phpfunction].
    Beispiel:


    "Beißen ist wie küssen. Nur dass einer gewinnt!"
    - TARDIS

  • Hallo, danke für eure Hilfe!


    Jetzt kommt folgende Ausgabe:

    Zitat

    Parse error: syntax error, unexpected ';' in /*meinserver*/Ergebnis.php on line 9


    Der Quellcode von Ergebnis.php ist jetzt:

  • Bei Zeile 9 $res = my.... hast du drei Klammern geöffnet, aber nur zwei geschlossen. ;)

    My software never has bugs. It just develops random features ... :D
    [FONT="System"]&#63743;
    » DevShack - die Website des freien Webentwicklers Boris ;)