[PHP] MySQL Suche

Dieses Thema im Forum "Webentwicklung" wurde erstellt von DaHellgod, 10. September 2008 .

Schlagworte:
  1. 10. September 2008
    MySQL Suche

    Guten Tag,

    ich will übern Browser mit Hilfe einer Suchfunktion Datensätze aus der DB anzeigen lassen.
    Hab mir dafür eine einfache Suchmaske erstellt und den dazugehörigen PHP CODE auch , der leider keine Ergebnisse anzeigt ;>

    Es gibt nur ein Eingabefeld - Produkt - Danach soll auch die DB suchen und den dazugehörigen Datensatz anzeigen.

    HTML-Code (Dateiname:suchen.html)
    Code:
    <html>
    <head> <title> Eintrag Suchen </title> </head>
    <body>
    <h2> Produkt suchen : </h2>
    <form action="mysqli-suchen.php" method="post">
    <table>
    <tr><td>Produkt</td><td> <br /><input type="text" name="produkt"/></td></tr>
    </table>
    <br />
    <input type="submit" value="Suchen" /><br/>
    </form>
    </html>
    
    PHP-Code (Dateiname:mysqli-suchen.php)
    Code:
    <table>
    <tr><th>#</th><th>Produkt</th><th>Beschreibung</th></tr>
    <?php
    if(isset($_POST['submit']) && isset($_POST['produkt']) && $_POST['produkt'] !== '')
    {
    try {
     $db = new MySQLi ('localhost', '$db_user', '$db_pw', '$db_name');
     $sql = " SELECT * FROM artikel WHERE MATCH produkt AGAINST ('".$_POST['produkt']." ') ";
     $ergebnis = $db->query($sql);
     while ($row = $ergebnis->fetch_object()){
     printf('<tr><td>%s</td><td>%s</td><td>%s</td></tr>',
     $row->id,
     htmlspecialchars($row->produkt),
     htmlspecialchars($row->info)
     );
    }
    } 
    }
    ?>
    </table>
    
    Da ich keine Ahnung habe wie ich sonst noch vorgehen soll da ich schon ne menge probiert habe würd ich mich über Hilfe von erfahrenen PHP Leuten freuen.

    MFG
     
  2. 10. September 2008
    AW: MySQL Suche

    Wenn du das Feld $_POST['submit'] abfragen willst musst du es auch benennen:
    <input type="submit" value="Suchen" /><br/>

    Da fehlt das "name" Attribut.
     
  3. 11. September 2008
    AW: MySQL Suche

    ich geh mal davon aus das du keinen benutzer '$db_user' angelegt hast mit dem passwort '$db_pw' mit zugriff auf '$db_name'

    schau dir mal den unterschied zwischen " und ' an. innerhalb von ' werden variablen nicht geparsed, d.h. du schickst den inhalt so wie er da steht an den constructor von MySQLi ($db_user bleibt $db_user)

    entweder du lässt die ' weg, oder ersetzt sie durch ".
    dann solltest du ne verbindung zur datenbank aufbauen können.

    beispiel:
    PHP:
    $foo  'bar' ;
    print 
    '$foo' //$foo
    print  " $foo " //bar
    print  $foo //bar
    aja, du MUSST deine eingaben ($_POST|$_GET) IMMER überprüfen. ließ dir mal den artikel im php-magazin dazu durch, da wird einem verständlich erklärt wie man das macht. vorallem bei nummern kann man deine ganze seite lahmlegen (ddos), deine datenbank übernhemen und deine seite defacen wenn du da nicht acht gibst.

    ich sag nur benchmark(80000000, md5(1))
     
  4. 12. September 2008
    AW: MySQL Suche

    Hast du so große Datensätze, dass LIKE nicht mehr ausreicht?

    Wenn du ein paar tausend einträge hast, macht against/match sinn...ansonsten iwie nicht.
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.