Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 16

Thema: Suchfunktion mit Mysql

  1. #1
    TP-Junior
    Registriert seit
    Jan 2012
    Beiträge
    8

    Suchfunktion mit Mysql

    Guten Abend zusammen! Ich bin hier ganz neu im Forum und deswegen dürft ihr mir nicht übel nehmen, falls ich in das falschen Thema reinschreibe:

    Habe eine Frage, die wahrscheinlich ganz simpel ist. Habe erst vor kurzem angefangen mit php, mysql usw. Habe mir viele tutorials reingezogen, hab es schon soweit verstanden wie es funzt, aaaaaaaaaber:

    Habe heute einen Suchen-Script geschrieben, der so aussieht:


    usersuche.php




    <?php
    session_start();
    ?>

    <html>
    <head>
    </head>
    <body>


    <?php
    $verbindung = mysql_connect("localhost", "root" , "password")
    or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
    mysql_select_db("myDataBase") or die ("Datenbank konnte nicht ausgewählt werden");

    $usersuche = $_GET["usersuche"];


    $abfrage = "SELECT * FROM login WHERE username LIKE '%$usersuche%'";
    $ergebnis = mysql_query($abfrage);
    $row = mysql_fetch_array($ergebnis);

    if (!$row) {
    die ('Etwas stimmte mit dem Query nicht:');
    }
    else
    {

    ?>

    folgende User wurden gefunden: </p>
    </p>

    <?php

    echo $row['username'];

    }


    ?>
    </body>
    </html>



    so nun meine Frage: Ich habe in der MYSQL-Datenbank dieselbe Tabelle durchsuchen lassen, die ich für das registrieren und login-script benutze. Könnte es ein Problem geben, wegen Sicherheitsgründen?

    meine zweite Frage: Das Script oben klappt soweit, nur ich kriege immer nur einen Namen angezeigt, obwohl in meiner MYSQL-Datenbank zwei Namen vorhanden sind, die auf mein Suchkriterium passen.

    Wie kann ich jetzt z. b. 100 Suchergebnisse anzeigen lassen? Als Beispiel: habe einen testuser mit dem namen fffff angelegt und einen mit fff. Wenn ich jetzt nach ff Suche, bekomme ich nur den fffff. Obwohl ich ja eigentlich fff und fffff angezeigt bekommen müsste.

    Oh mei, ich hoffe, ich habe mich verständlich ausgedrückt.

    Danke schonmal im Vorraus.

    Roman

  2. #2
    TP-Supporter Avatar von chorn
    Registriert seit
    Apr 2008
    Ort
    Verden
    Beiträge
    479
    Du lässt dir ja auch nur eine einzige Zeile anzeigen, ich sehe nicht, dass du mehrere Zeilen haben willst oder auswertest.

    Code:
    $row = mysql_fetch_array($ergebnis);
    Siehe Manual -> http://php.net/manual/de/function.mysql-fetch-array.php

    Ausserdem ist deine Abfrage für SQL-Injection anfällig (einfach mal suchen, dazu gibt es tausend Tutorials). Ein einfaches

    Code:
    suche.php?usersuche=;DROP TABLE login
    und die Tabelle mit den Logindaten ist weg.

  3. #3
    TP-Insider Avatar von dieter99
    Registriert seit
    Dec 2001
    Ort
    Oberfranken
    Beiträge
    719
    Zitat Zitat von Roma87 Beitrag anzeigen
    meine zweite Frage: Das Script oben klappt soweit, nur ich kriege immer nur einen Namen angezeigt, obwohl in meiner MYSQL-Datenbank zwei Namen vorhanden sind, die auf mein Suchkriterium passen.
    Du musst bei der Ausgabe mit einer WHILE Schleife arbeiten:

    PHP-Code:
    <?php
    $verbindung 
    mysql_connect("localhost""root" "password")
    or die(
    "Verbindung zur Datenbank konnte nicht hergestellt werden");
    mysql_select_db("myDataBase") or die ("Datenbank konnte nicht ausgewählt werden");

    $usersuche $_GET["usersuche"];


    $abfrage "SELECT * FROM login WHERE username LIKE '%$usersuche%'";
    $ergebnis mysql_query($abfrage);


    if (
    mysql_affected_rows() < 1) {
    die (
    'Etwas stimmte mit dem Query nicht:');
    }
    else
    {
    echo 
    'folgende User wurden gefunden:<br />';

    WHILE (
    $row mysql_fetch_array($ergebnis))
    {
       echo 
    $row['username']; 
    }

    }


    ?>

  4. #4
    TP-Junior
    Registriert seit
    Jan 2012
    Beiträge
    8
    Herzlichen Dank für die Tipps! Ich wusste ich bin hier richtig aufgehoben, deswegen habe ich mich registriert.
    ich hab das jetzt umgewandelt und so müsste es jetzt richtig sein, oder habe ich noch was wichtiges übersehen?







    $abfrage = "SELECT * FROM login WHERE username LIKE '.mysql_real_escape_string(%$usersuche%).'";
    $ergebnis = mysql_query($abfrage);

    {
    if (mysql_affected_rows() < 1) {
    die ('Etwas stimmte mit dem Query nicht:');
    }
    else
    {
    echo 'folgende User wurden gefunden:<br />';

    WHILE ($row = mysql_fetch_array($ergebnis))
    {
    echo $row['username'];
    }

  5. #5
    TP-Junior
    Registriert seit
    Jan 2012
    Beiträge
    8
    Ne, so muss er sein!

    Aber der zeigt mir dauernd an, dass keine Suchergebnisse gefunden worden sind, obwohl 2 Namen auf meine Suchanfrage passen müssten. Hat da jemand eine Ahnung wieso das so ist?

    PHP-Code:
    $usersuche $_GET["usersuche"]; 


    $abfrage "INSERT * FROM login WHERE username LIKE %'".mysql_real_escape_string($usersuche)."'%";
    $ergebnis mysql_query($abfrage); 



    if (
    mysql_affected_rows($verbindung) < 1) {
    die (
    'Es konnten keine Suchergebnisse gefunden werden');
    }
    else
    {
    echo 
    'folgende User wurden gefunden:<br />';
    }
    WHILE (
    $row mysql_fetch_array($ergebnis))
    {
       echo 
    $row['username']; 
    }
    ?> 

  6. #6
    TP-Veteran
    Registriert seit
    Jan 2008
    Ort
    Hessen
    Beiträge
    1.031
    Ohne Zähler zeigst Du doch immer das gleiche Feld im Array an.
    So sollte es gehen:

    PHP-Code:
    $i 0;
    WHILE (
    $row[i] = mysql_fetch_array($ergebnis))
    {
       echo 
    $row[i]['username']; 
       
    $i++;


  7. #7
    TP-Junior
    Registriert seit
    Jan 2012
    Beiträge
    8
    Mein Fehler liegt eindeutig bei dieser Zeile aber wieso?

    $abfrage = "INSERT * FROM login WHERE username LIKE %'".mysql_real_escape_string($usersuche)."'%"


    Habe mysqlerror auslesen lassen

  8. #8
    TP-Supporter Avatar von chorn
    Registriert seit
    Apr 2008
    Ort
    Verden
    Beiträge
    479
    Weil dein String nicht in Anführungszeichen steht, die %-Zeichen müssen davon ebenfalls eingeschlossen werden, vgl.

    Code:
    '%dein Suchbegriff%'

  9. #9
    TP-Junior
    Registriert seit
    Jan 2012
    Beiträge
    8
    okay, danke für die Tipps....
    der Fehler in Mysql ist weg, aber der bringt mir keine Userergebnisse:

    der Script sieht jetzt wie folgt aus:

    PHP-Code:
    $usersuche $_GET["usersuche"]; 

    $abfrage "Select username FROM login WHERE username LIKE '".mysql_real_escape_string('%$usersuche%')."'";
    $ergebnis mysql_query($abfrage); 

    if (!
    $ergebnis
    {
    die (
    'Es konnten keine Suchergebnisse gefunden werden');
    }
    else
    {
    echo 
    'folgende User wurden gefunden:<br />';
    }
    $i 0;
    WHILE (
    $row[i] = mysql_fetch_array($ergebnis))
    {
       echo 
    $row[i]['username']; 
       
    $i++;
    }
    ?> 

    da steht jetzt nur folgende User wurden gefunden: aber danach zeigt er keine User an. Diese sind aber defenitiv in der Datenbank drin

  10. #10
    TP-Supporter Avatar von chorn
    Registriert seit
    Apr 2008
    Ort
    Verden
    Beiträge
    479
    Code:
    $row[i]
    i oder $i? Das ist hier die Frage.

    Ich seh da übrigens nicht, dass du wissen willst, ob die Datenbank einen Fehler meldet (mysql_error()).

  11. #11
    TP-Veteran
    Registriert seit
    Jan 2008
    Ort
    Hessen
    Beiträge
    1.031
    Hi, sorry
    PHP-Code:
    $i 
    natürlich

  12. #12
    TP-Junior
    Registriert seit
    Jan 2012
    Beiträge
    8
    Zitat Zitat von chorn Beitrag anzeigen
    Code:
    $row[i]
    i oder $i? Das ist hier die Frage.

    Ich seh da übrigens nicht, dass du wissen willst, ob die Datenbank einen Fehler meldet (mysql_error()).

    Whuaaa sorry, natürlich $i.

    Ne habe den mysql_error entfernt, da kein Fehler mehr da War. Der zeigt die mir jetzt beide an, nur direkt nebeneinander, aber das Krieg ich schon hin. Daaaaaaaaaanke

  13. #13
    TP-Specialist Avatar von max.m
    Registriert seit
    Dec 2005
    Ort
    Stuttgart
    Beiträge
    2.021
    Zitat Zitat von Roma87 Beitrag anzeigen
    nur direkt nebeneinander
    PHP-Code:
    echo $row[$i]['username'] . "<br />"
    Geändert von max.m (20.01.2012 um 15:48 Uhr)

  14. #14
    TP-Junior
    Registriert seit
    Jan 2012
    Beiträge
    8
    So der Code ist fertig und funktioniert auch!

    Sicher ist der denk ich auch mal, oder?

    PHP-Code:

    $usersuche 
    $_GET["usersuche"]; 

    $abfrage "Select username FROM login WHERE username LIKE '%".mysql_real_escape_string($usersuche)."%'";
    $ergebnis mysql_query($abfrage); 

    if (!
    $ergebnis
    {
    die (
    'Es konnten keine Suchergebnisse gefunden werden');
    }
    else
    {
    echo 
    'folgende User wurden gefunden:<br />';
    }
    $i 0;
    WHILE (
    $row[$i] = mysql_fetch_array($ergebnis))
    {
       echo 
    $row[$i]['username'] . "<br />";
       
    $i++;
    }
    ?> 

  15. #15
    TP-Junior
    Registriert seit
    Jan 2012
    Beiträge
    8
    PHP-Code:
    $abfrage "SELECT username  FROM login WHERE username = '" mysql_real_escape_string($empfaenger) . "'"
    $ergebnis mysql_query($abfrage);
    $row mysql_fetch_array($ergebnis); 
      

    if(!
    $row)
        {
        echo 
    "etwas stimmte mit der DB nicht";
        }
    exit;




    if(
    $row['user'] != §empfaenger)
        { 
        echo 
    "dieser Benutzername existiert nicht!";
        }
    exit;
        

    $eintrag "INSERT INTO nachrichten
        ('nach', 'von', 'betreff', 'text', 'datum', 'zeit', 'read')
    VALUES
        ('"
    .$empfaenger."', '".$_SESSION("username")."', '".$betreff."', '".$text."' , '".$date."' , '".$time."' , '0');

    if(!$eintrag)
        echo 'Fehler beim Senden';

    else 
        $eintragen = mysql_query($eintrag) or die (mysql_error());


    if($eintragen == true)
        {
        echo 'Deine Nachricht wurde erfolgreich an '.$empfaenger.' verschickt';
        }
    else
        {
        echo 'Das Senden hat nicht geklappt';
        }
    ?> 
    der zeigt mir bei diesem Code den Fehler:

    syntax error, unexpected $end in .... on line 58

    Habe schon alle Klammern etc. durchgeguckt, finde aber nix, wo ich eins vergessen habe.

Seite 1 von 2 12 LetzteLetzte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. [PHP] PHP - MySQL - Suchfunktion
    Von cachot im Forum Traum-Dynamik
    Antworten: 9
    Letzter Beitrag: 06.08.2010, 13:37
  2. Suchfunktion
    Von eyeswideshut im Forum Traum-Dynamik
    Antworten: 4
    Letzter Beitrag: 28.01.2008, 10:53
  3. Antworten: 1
    Letzter Beitrag: 19.04.2004, 09:15
  4. Was ganz einfaches - Suchfunktion für MySQL
    Von The Verve im Forum Traum-Dynamik
    Antworten: 8
    Letzter Beitrag: 12.03.2003, 08:06
  5. suchfunktion ohne mysql
    Von Schneeschaufel im Forum Traum-Dynamik
    Antworten: 15
    Letzter Beitrag: 02.04.2002, 15:13

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51