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

  • cruiser187
    hat ein Thema erstellt Datenbank Volltextsuche ohne Ausgabe.

    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

  • cruiser187
    antwortet
    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());
                }
            }
    ?>

    Einen Kommentar schreiben:


  • Paul.Schramenko
    antwortet
    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...

    Einen Kommentar schreiben:


  • woskamp
    antwortet
    Verdammt, da war Griffith schneller

    Einen Kommentar schreiben:


  • woskamp
    antwortet
    Bei Deiner Abfrage muß der Username identisch zum Vornamen sein, bist Du sicher das Du weißtr was Du da abfragst?

    Einen Kommentar schreiben:


  • Griffith
    antwortet
    * 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() ); 

    Einen Kommentar schreiben:


  • cruiser187
    antwortet
    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

    Einen Kommentar schreiben:


  • Asipak
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X