MySQL Autocomplete

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • MySQL Autocomplete

    Hallo, ich habe ein Script, welches in einem Textfeld autocomplete erstellt.
    Das Problem ist, dass ich beide Daten aus der Zeile angezeigt bekommen möchte.

    Der Aufbau der Datenbank ist: z.B. Name=Test1234, Nachname=Test5678

    Ich bekomme das ganze aber nicht zum laufen.

    Vielen Dank
    Fynn

    PHP Datei:

    PHP Code:
    <?php


    ******** ****define (DB_USER"xxx");
    ******** ****
    define (DB_PASSWORD"xxx");
    ******** ****
    define (DB_DATABASE"test");
    ******** ****
    define (DB_HOST"localhost");


    ******** ****
    $mysqli = new mysqli(DB_HOSTDB_USERDB_PASSWORDDB_DATABASE);


    ******** ****
    $sql "SELECT * FROM testdb
    ******** ************ ************ ****WHERE Name LIKE '%"
    .$_GET['query']."%'
    ******** ************ ************ ****LIMIT 10"
    ;****


    ******** ****
    $result $mysqli->query($sql);


    ******** ****
    $json = [];
    ******** ****while(
    $row $result->fetch_assoc()){
    ******** **** **** **** 
    $json[] = $row["Name","Nachname"];
    ******** ****}




    ******** ****echo 
    json_encode($json);
    ?>

  • #2
    Bitte beachten Sie, dass Sicherheitsvorkehrungen (wie die Filterung und Bereinigung von Benutzereingaben) wichtig sind, um vor SQL-Injection-Angriffen zu schützen. Stellen Sie sicher, dass Sie angemessene Sicherheitsmaßnahmen implementieren, mapquest bevor Sie Benutzereingaben in SQL-Abfragen verwenden.

    Comment


    • #3
      Hi,

      kommt da überhaupt irgendwas raus, oder funktioniert es gar nicht?

      VG

      p.s. lager mal den DB-Connect aus und steuere die DB Abfrage mit prepared statements. Dient alles der Sicherheit.
      Last edited by ; 25-08-2023, 11:57.

      Comment


      • #4
        Mit

        PHP Code:
        WHERE Name LIKE '%".$_GET['query']."%'  ​ 
        Wird nur die Spalte "Name" durchsucht, nicht aber "Nachname".

        Probier mal so:

        PHP Code:
        WHERE NameNachname LIKE '%".$_GET['query']."%' 

        Comment


        • #5

          Schon mal auf das Datum des Theads geachtet:[COLOR=#c0392b] 30.05.2020[/COLOR]
          Das wird wohl niemanden mehr interessieren!
          Außerdem ist es fahrlässig, eine $_GET-Variable direkt in eine SQL-Aweisung einzuschleusen und dein Versuch mit
          Code:
          WHERE Name, Nachname LIKE '%".$_GET['query']."%'
          ist auch falsch
          Last edited by scatello; 25-08-2023, 16:14.

          Comment


          • #6
            Originally posted by scatello View Post

            Schon mal auf das Datum des Theads geachtet:[COLOR=#c0392b] 30.05.2020[/COLOR]
            Das wird wohl niemanden mehr interessieren!
            Außerdem ist es fahrlässig, eine $_GET-Variable direkt in eine SQL-Aweisung einzuschleusen und dein Versuch mit
            Code:
            WHERE Name, Nachname LIKE '%".$_GET['query']."%'
            ist auch falsch
            Ach, haha. Dann ist der nur wegen dem Spam Post nach oben gerutscht...

            Comment


            • #7
              Sie können zuerst Ihre Daten aus der Datenbank abrufen und in einem geeigneten Format speichern, z.B. als Array von Objekten. Jedes Objekt im Array könnte die Eigenschaften "Name" und "Nachname incredibox " haben.
              Last edited by Bernie; 03-10-2023, 12:11.

              Comment


              • #8
                Thank you for the suggestion. To address the issue, I've followed your advice and made some progress. Here's what I've done:
                PHP Code:
                $data = array(
                    array(
                "Name" => "Test1234""Last Name" => "Test5678"),
                    
                // Add more entries for other data
                );
                ​ 
                PHP Code:
                // Sample JavaScript code to populate the autocomplete results
                $('#autocomplete').on('input', function() {
                    
                let input = $(this).val();
                    
                let results = [];

                    
                // Iterate through the data array
                    
                data.forEach(function(item) {
                        if (
                item["Name"].includes(input) || item["Last Name"].includes(input)) {
                            
                results.push(item["Name"] + ' ' item["Last Name"]);
                        }
                    });

                    
                // Display results
                    
                displayResults(results);
                });

                function 
                displayResults(results) {
                    
                // Code to display the autocomplete results here
                }
                ​ 
                With this setup, I'm now able to create autocomplete functionality in my text field that displays both the Name and Last Name from the database.

                Thanks again for your help!​
                Last edited by Bernie; 17-10-2023, 10:20.

                Comment

                Working...
                X