Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbank Volltextsuche ohne Ausgabe

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenbank Volltextsuche ohne Ausgabe

    Hallo PHP Freunde,

    ich suche mich seit Stunden kaputt und finde den Fehler nicht. Mit folgender Suche möchte ich aus der Datenbank den Namen ausgeben lassen. Das ganze wird natürlich noch ausgebaut, aber es müsste erst mal funktionieren.
    Ab "while" bekomme ich aber keine Ausgabe mehr! D.h. die Daten von dem Namen in der Datenbank wird nicht ausgegeben.

    Hier der Code:

    PHP-Code:
    <?php
    echo '<form action="#" method="post">
            <input type="text" size="20" name="suche"><br />
            <input type="submit" name="send" value="Suchen">
          </form>'
    ;

    if (isset(
    $_POST['send']) && $_POST['suche'] != '') {
        try {
            include (
    'functions/php/forms/connect.php');
            
            
    $result mysql_query("SELECT * FROM kunden WHERE (username LIKE '%suche%') AND (vorname LIKE '%suche%')") or die (mysql_error());
            echo 
    '<table>
                    <tr>
                    <td>username</td>
                    <td>vorname</td>
                    </tr>'
    ;

            while (
    $row mysql_fetch_array($result)) {
                
    printf ("Name: %s  Vorname: %s"$row["username"], $row["vorname"]);
                } 
            
    mysql_free_result($result);
            } 
            catch (
    Exception $e) {
                echo 
    'Fehler: ' htmlspecialchars($e->getMessage());
                }
            }
    ?>
    Würde mich sehr über eure Hilfe freuen!!

    Mfg
    cruiser


  • #2
    Vielleicht liefert deine Abfrage keinen Treffer.

    Code:
    '%suche%'
    sieht auch sehr fragwürdig aus. Du musst dort schon
    Code:
    $_POST['suche']
    angeben, wenn du nach dem Inhalt des Formularfeldes suchen möchtest.
    http://hallophp.de

    Kommentar


    • #3
      WoW das ging ja schnell!

      Erstmal danke Asipak, damit bin ich vielleicht einen schritt weiter. Geändert habe ich es so wie du geschrieben hast:

      PHP-Code:
      $result mysql_query("SELECT * FROM kunden WHERE (username LIKE " .$_POST['suche']. ") AND (vorname LIKE " .$_POST['suche']. ")") or die (mysql_error()); 
      Nur ab jetzt spuckt er mir den fehler:

      Code:
      Unknown column 'name' in 'where clause'
      Der "name" ist in der Datenbank vorhanden.

      Mfg
      cruiser

      Kommentar


      • #4
        * Benutze möglichst mysql_real_escape_string() und setze die Zeichenkette in einfache Anführungsstriche.
        * Sollte dort nicht OR statt AND stehen?
        * Wolltest du keine Volltextsuche mit Platzhalter verwenden?

        PHP-Code:
        $suche mysql_real_escape_stringtrim($_POST['suche']) );
        $sql "SELECT * FROM `kunden` WHERE `username` LIKE '%$suche%' OR `vorname` LIKE '%$suche%'";
        $result mysql_query($sql) or die( mysql_error() ); 

        Kommentar


        • #5
          Bei Deiner Abfrage muß der Username identisch zum Vornamen sein, bist Du sicher das Du weißtr was Du da abfragst?
          Gruß Werner
          Mein kleines Projekt: Fussball Satrup
          Wird ein OpenSource CMS für Fussballvereine

          Kommentar


          • #6
            Verdammt, da war Griffith schneller
            Gruß Werner
            Mein kleines Projekt: Fussball Satrup
            Wird ein OpenSource CMS für Fussballvereine

            Kommentar


            • #7
              1. Du musst dein Suchstring in Hochkommata setzen.
              2. Du verbindest beide Statements im WHERE mit AND, was bedeutet, dass der username und vorname gleich sein müssen.

              OT:
              Das ist nichts fürs FG-Forum...
              "My software never has bugs, it just develops random features."
              "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

              Kommentar


              • #8
                Danke euch allen!

                Ja ihr habt Recht, ursprünglich hatte ich OR statt AND, aber durch das ganze rumprobieren, weil es nicht funktionieren wollte, hab ich vergessen es wieder zu ändern.

                mysql_real_escape_string hatte ich Anfangs auch unter der Datenbankabfrage mit:

                PHP-Code:
                .mysql_real_escape_string($suche). 
                siehe Punkt 1

                Hier für die Nachwelt der komplette funktionierende Code:

                PHP-Code:
                <?php
                echo '<form action="#" method="post">
                        <input type="text" size="20" name="suche"><br />
                        <input type="submit" name="send" value="Suchen">
                      </form>'
                ;

                if (isset(
                $_POST['send']) && $_POST['suche'] != '') {
                    try {
                        include (
                'functions/php/forms/connect.php');
                        
                $suche mysql_real_escape_stringtrim($_POST['suche']) );
                        
                $sql "SELECT * FROM `kunden` WHERE `username` LIKE '%$suche%' OR `vorname` LIKE '%$suche%'";
                        
                $result mysql_query($sql) or die( mysql_error() );
                        
                        while (
                $row mysql_fetch_array($result)) {
                            
                printf ("Name: %s  Vorname: %s"$row["username"], $row["vorname"]);
                            } 
                        
                mysql_free_result($result);
                        } 
                        catch (
                Exception $e) {
                            echo 
                'Fehler: ' htmlspecialchars($e->getMessage());
                            }
                        }
                ?>

                Kommentar

                Lädt...
                X