MySQL Datenbanksuchen mit PHP

  1. DieTa

    DieTa Thread StarterMacUser Mitglied

    Mitglied seit:
    17.09.2003
    Beiträge:
    3.308
    Zustimmungen:
    32
    Guten Morgen,

    ich brech mir gerade einen bei dem Bau einer Suchfunktion ab.

    Eine Datenbank mit Kundendaten ist in MySQL gespeichert und ich möchte nun mit einem einfachen Formular (ein Feld) nach verschiedenen Ergebnissen suchen. z.B. Name, Stadt, PLZ, Kundennummer etc.

    Ich habe durch Google-Suche folgendes Script gefunden, was mir allerdings kein Ergebnis auswirft. Ich glaube da fehlt eigentlich nur die Ausgabe der Suche.. hat jemand eine Idee?

    PHP:
             <?PHP
                   
    echo "Suche nach: "$keywords "<br>";
                   
                    include(
    'config.inc.php');
                                    
    $db2 mysql_select_db($db_name);

                    
    $association 'AND';
                    
    $keywords explode(" ",$keywords);
                    
    $query = array();

    foreach(
    $keywords as $keyword) {
        
    $query[] = "(kdnr LIKE '%".$keyword."%'
                    OR rnr LIKE '%"
    .$keyword."%'
                    OR anrede LIKE '%"
    .$keyword."%'
                    OR firma LIKE '%"
    .$keyword."%')
                    "
    ;
    }

    $query implode("\n ".$association." ",$query);

    $sql "SELECT * FROM kundenverwaltung WHERE ".$query;

    $res mysql_query($sql);

    if (!
    $res) {
        
    /**
         * Diese Zeilen geben das SQL-Statement in recht lesbarer Form aus.
         */
        
    print '<pre>';
        print 
    $sql;
        print 
    '</pre>';
        
    /**
         * E_USER_ERROR führt zum Abbruch des Scripts.
         * E_USER_NOTICE und E_USER_WARNING, lassen das Script weiterlaufen
         */
        
    trigger_error('Datenbankanfrage schlug fehl: '.mysql_error(), E_USER_ERROR);
    } else {

        echo 
    "Suche nach: " $keywords;
    }
    PS. Bei der "keywords" oben wirft der noch das Suchwort aus, unten allerdings "array"?

    Hier noch das Formular:
    PHP:
    <html>
    <
    head>
        <
    title>The Sponged.net Kundenverwaltung</title>
          <
    link rel="stylesheet" type="text/css" href="billgen.css" title="style" media="screen">
    </
    head>
    <
    body>
        <
    center><h1>The Sponged.net Suche</h1></center>
        
            
        <
    form action="sufu.php" method="post">
        <
    input type="text" value="" class="billgen2" name="keywords">
        <
    input type="submit" value="Suchen">
        </
    form>
        
        </
    body>
    </
    html>
    Vielen Dank schonmal!

    Gruss
    Dennis
     
    DieTa, 11.09.2006
  2. balufreak

    balufreakMacUser Mitglied

    Mitglied seit:
    12.10.2003
    Beiträge:
    1.556
    Zustimmungen:
    28
    Bei diesem Teil hier
    PHP:
    $sql "SELECT * FROM kundenverwaltung WHERE ".$query
    hängst du an einen String ein Array an. Ich glaube das ist der grund warum es nicht funktioniert. Oder lieg ich da falsch?
     
    balufreak, 11.09.2006
  3. ThaHammer

    ThaHammerMacUser Mitglied

    Mitglied seit:
    01.06.2004
    Beiträge:
    3.277
    Zustimmungen:
    13
    Ich gebe vor dem eigentlichen Datenbankeinträgen den SQL String immer erst aus. Weil wenn da ein fehler drin ist, kopiere ich den String und gebe den in phpmyadmin ein. Dort gibt es exakte Fehlermeldungen für den String!
     
    ThaHammer, 11.09.2006
  4. DieTa

    DieTa Thread StarterMacUser Mitglied

    Mitglied seit:
    17.09.2003
    Beiträge:
    3.308
    Zustimmungen:
    32
    Danke für das Feedback.

    @balufreak: Na er sollte mir doch wenn überhaupt den Inhalt ausgeben und nicht nur das Wort "array", oder irre ich?

    @ThaHammer: Was meinst Du mit den SQL String ausgeben? Ich möchte ja nichts reinschreiben sondern abrufen bzw. suchen?
     
    DieTa, 11.09.2006
  5. wegus

    wegusMacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    14.982
    Zustimmungen:
    1.545
    Ja und das machst Du mit einer Abfrage! Die wird dynamisch generiert und steht in einem String! In Deinem obigenb Beispiel ist die Abfrage defekt, weil Du einen String aus String und einem Array konkatenieren willst. Das geht nat. nicht.
    Es gibt auch noch zig andere Gründe warum dynamische Abfragen falsch konstruiert werden könnten. Es bietet sich also an so etwas wie eine Variable:

    $SQL_DEBUG=true;

    am Anfang zu definieren und vor jeder ausgeführten SL-Anweisung sowas wie ein

    if ($SQL_DEBUG)
    print "Führe Anweisung *".$sql."* aus";

    besonders sinnvoll ist es das in einer SQL-Klasse zu kapseln!
     
    wegus, 11.09.2006
  6. Manjo

    ManjoMacUser Mitglied

    Mitglied seit:
    25.07.2005
    Beiträge:
    903
    Zustimmungen:
    22
    Hallo,

    @balufreak: $query = implode("\n ".$association." ",$query); macht Array zu String!

    Richtig, es wird nur die Anfrage ausgeführt. Die Ausgabe erfolgt jedoch nicht. Mit mysql_fetch_array kannst Du Dir die Daten holen. Gibt ein Array zurück, solange Daten vorliegen, sprich für jeden Treffer ein Array, also so lange aufrufen, bis false zurückkommt.

    Wie das geht? Schau unter php.net

    Gruß
    Manjo
     
    Manjo, 11.09.2006
Die Seite wird geladen...
Ähnliche Themen - MySQL Datenbanksuchen PHP
  1. mampfi
    Antworten:
    7
    Aufrufe:
    277
  2. malah
    Antworten:
    3
    Aufrufe:
    1.163
    beatles
    10.02.2017
  3. beatles
    Antworten:
    4
    Aufrufe:
    444
  4. Hausbesetzer
    Antworten:
    7
    Aufrufe:
    976
    Deine Mudda
    27.04.2016
  5. xenon96
    Antworten:
    2
    Aufrufe:
    584
    xenon96
    27.06.2015