Suche mit mehreren Eingabefeldern

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

  • #16
    PHP-Code:
    <?php error_reporting(E_ALL);

                
    $db_host "";
                
    $db_user "";
                
    $db_pass "";
                
    $db_name "";
                
    $abf false;

                
                if (isset(
    $_POST["search"])) {
                    echo 
    "<p><br /></p><hr />Check 1/3<hr />";
                    
                    
    $sql mysqli_connect($db_host$db_user$db_pass$db_name
                       or die(
    "Die Datenbank konnte nicht erreicht werden!");

                
    $abf"SELECT * FROM ... WHERE 1=1 ";

                if (isset(
    $_POST["vname"])) {
                    
    $abf .= " AND `vname`= '" mysqli_real_escape_string($_POST['vname']) . "'";
                }
                    else {echo 
    "Fehler 1/5";}

                if (isset(
    $_POST["nname"])) {
                    
    $abf .= " AND `nname`= '" mysqli_real_escape_string($_POST['nname']) . "'";
                }
                    else {echo 
    "Fehler 2/5";}

                if (isset(
    $_POST["strnr"])) {
                    
    $abf .= " AND `strnr`= '" mysqli_real_escape_string($_POST['strnr']) . "'";
                }
                    else {echo 
    "Fehler 3/5";}

                if (isset(
    $_POST["plz"])) {
                    
    $abf .= " AND `plz`= '" mysqli_real_escape_string($_POST['plz']) . "'";
                }
                    else {echo 
    "Fehler 4/5";}

                if (isset(
    $_POST["ort"])) {
                    
    $abf .= " AND `ort`= '" mysqli_real_escape_string($_POST['ort']) . "'";
                }
                    else {echo 
    "Fehler 5/5";}

                    if (
    $sql != false and $abf != false) {
                        echo 
    "<hr />Check 2/3<hr />";

                    if (
    $result mysqli_query($sql$abf)) {
                        echo 
    "<hr />Check 3/3<hr /><p><br /></p>";

                    
    $anzahl mysqli_num_rows($result);
                    echo 
    "<p>Es wurden <strong>".$anzahl."</strong> Datensätze gefunden!</p>\n";

                    echo 
    "<table border=\"1\">\n".
                    
    "<tr><th>Vorname</th><th>Nachname</th><th>Straße / Nr.</th><th>PLZ</th><th>Ort</th>\n";

                    while (
    $datensatz mysqli_fetch_assoc($result)) {

                    echo 
    "<tr>".
                    
    "<td>" .htmlspecialchars($datensatz["vname"])."</td>".
                    
    "<td>" .htmlspecialchars($datensatz["nname"])."</td>".
                    
    "<td>" .htmlspecialchars($datensatz["strnr"])."</td>".
                    
    "<td>" .htmlspecialchars($datensatz["plz"])."</td>".
                    
    "<td>" .htmlspecialchars($datensatz["ort"])."</td>".
                    
    "</tr>\n";
                    }
                    
    mysqli_free_result($result);
                    echo 
    "</table>\n";
                    }
                    else
                    {
                    echo 
    mysqli_error($sql);

                    echo 
    "<hr />".$abf;
                    } 
                     
    mysqli_close($sql);
                    }
                    else {echo 
    "Es wurden keine verwertbaren Daten vom Formular übermittelt.\n";}
                }
                
    ?>
    Habe eure Ratschläge entsprechend befolgt und komme in jeden if- /else-Zweig. Dennoch erhalte ich nicht das gewünschte Resultat (noch nicht mal Fehlermeldungen (debug.php))! Sobald ich print_r() oder var_dump() in mein Script füge, bringt er mir Fehlermeldungen in genau der Zeile, in der eben jene Befehle stehen (und ja, das restliche Script wurde entsprechend ausgeklammert).

    1. Ja, das ist eins zu eins das Script, das ich verwende und
    2. Nein, die drei Punkte stehen nicht so im Script (dort stehen die dafür vorgesehenen Werte)

    Wäre nett, wenn noch jemand eine aufbauende Idee hätte. Meine Vermutung? Es liegt hier:

    PHP-Code:
    $abf"SELECT * FROM ... WHERE 1=1 ";

                if (isset(
    $_POST["vname"])) {
                    
    $abf .= " AND `vname`= '" mysqli_real_escape_string($_POST['vname']) . "'";
                }
                    else {echo 
    "Fehler 1/5";}

                if (isset(
    $_POST["nname"])) {
                    
    $abf .= " AND `nname`= '" mysqli_real_escape_string($_POST['nname']) . "'";
                }
                    else {echo 
    "Fehler 2/5";}

                if (isset(
    $_POST["strnr"])) {
                    
    $abf .= " AND `strnr`= '" mysqli_real_escape_string($_POST['strnr']) . "'";
                }
                    else {echo 
    "Fehler 3/5";}

                if (isset(
    $_POST["plz"])) {
                    
    $abf .= " AND `plz`= '" mysqli_real_escape_string($_POST['plz']) . "'";
                }
                    else {echo 
    "Fehler 4/5";}

                if (isset(
    $_POST["ort"])) {
                    
    $abf .= " AND `ort`= '" mysqli_real_escape_string($_POST['ort']) . "'";
                }
                    else {echo 
    "Fehler 5/5";} 
    Denn alle 3 "Checks" werden mir ohne weiteres Ausgegeben. Die fünf "Fehler" sollen ja nur ausgegeben werden, wenn eine Übergabe der jeweiligen Eingabe(n) nicht erfolgt ist.

    Hinweis: Die Passage mit

    PHP-Code:
    $abf"SELECT * FROM ... WHERE 1=1 "
    kam von einer anderen Person.


    Bitte um Hilfe! Ich verzweifle hier!
    Zuletzt geändert von N4N0; 06.02.2015, 09:01.
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?

    Kommentar


    • #17
      Alle drei Checks werden ausgegeben?
      Dann solltest du weiterhin mindestens 'Es wurden xx Datensätze gefunden...' ausgegeben bekommen. Ist dem so?
      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
      Schön - etwas Geschichte kann ja nicht schaden.
      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

      Kommentar


      • #18
        Zitat von Quetschi Beitrag anzeigen
        Alle drei Checks werden ausgegeben?
        Dann solltest du weiterhin mindestens 'Es wurden xx Datensätze gefunden...' ausgegeben bekommen. Ist dem so?
        Exakt. Alle 3 "Checks" plus "Es wurden X Datensätze gefunden" werden ausgegeben. Darunter entsprechend die Tabelle (in der die Ergebnisse gelistet werden sollten), allerdings leer.
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?

        Kommentar


        • #19
          Und du kommst nicht von allein auf die Idee, dir mal $abf ausgeben zu lassen und zu sehen, ob die Abfrage zu dem von dir gewünschten Ergebnis führen kann?

          Am Ende sind noch gar keine Daten in der Tabelle
          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
          Schön - etwas Geschichte kann ja nicht schaden.
          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

          Kommentar


          • #20
            PHP-Code:
            SELECT FROM _customerDB WHERE 1=1  AND `vname`= '' AND `nname`= '' AND `strnr`= '' AND `plz`= '' AND `ort`= '' 
            Und was genau muss ich da jetzt ändern, wenn man mir schon gesagt hat, dass ich in mein Script eben genau das reinschreiben soll, was bereits drin steht? Kann's ja nicht sein, dass eine Partei sagt: "Schreib das so" und eine andere meint: "Nein, schreib das so!"

            Nochmal zum Mitschreiben:
            Man soll nach allen Kriterien suchen können, aber nicht müssen.
            Desweiteren soll er mir nur Ergebnisse listen, die auf alle ANGABEN ZUTREFFEN.
            RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?

            Kommentar


            • #21
              Wenn du ein Formular absendest sind die Post-Variablen immer gesetzt - daher baut dir dein Script die Abfrage entsprechend zusammen. Du musst zusätzlich prüfen, ob die Variablen etwas enthalten oder einfach nur leer sind.
              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
              Schön - etwas Geschichte kann ja nicht schaden.
              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

              Kommentar


              • #22
                Also ich habe nun folgendes versucht, trotzdem bringt er mir entweder noch vor der Suche alle Einträge der Datenbank oder gar keine:

                PHP-Code:
                if (!isset($_POST))
                {
                echo(
                'POST nicht gesetzt');

                Dasselbe Spiel mit vname, nname, strnr, plz und ort ...
                RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?

                Kommentar


                • #23
                  Wie Quetschi gerade schon sagte, gesetzt sind diese Parameter immer wenn du entsprechend benannte Felder im Formular hast – du sollst überprüfen, ob sie leer sind!

                  Sobald ich print_r() oder var_dump() in mein Script füge, bringt er mir Fehlermeldungen in genau der Zeile, in der eben jene Befehle stehen
                  Tja, dann hast du sie vermutlich falsch angewendet – aber natürlich zeigst du uns weder, wie du sie angewendet hast, noch verrätst du uns, wie die Fehlermeldungen lauten …
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #24
                    Zitat von wahsaga Beitrag anzeigen
                    Wie Quetschi gerade schon sagte, gesetzt sind diese Parameter immer wenn du entsprechend benannte Felder im Formular hast – du sollst überprüfen, ob sie leer sind!


                    Tja, dann hast du sie vermutlich falsch angewendet – aber natürlich zeigst du uns weder, wie du sie angewendet hast, noch verrätst du uns, wie die Fehlermeldungen lauten …
                    Ich hab sie so angewandt, wie es mir hier demonstriert wurde
                    Die Fehlermeldung besagt einfach nur, dass dort, wo besagte var_dump etc. steht, dort auch der Fehler ist.

                    Desweiteren wollte ich fragen, warum ich auch leer (empty($_POST)) checken soll, wenn ich ohnehin weiß, dass die Angaben durchgehen. Siehe Script (Zeile: "Fehler 1/5[...]" (Der dann erscheint, wenn Var leer)?
                    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?

                    Kommentar


                    • #25
                      Zitat von N4N0 Beitrag anzeigen
                      Ich hab sie so angewandt, wie es mir hier demonstriert wurde
                      Die Fehlermeldung besagt einfach nur, dass dort, wo besagte var_dump etc. steht, dort auch der Fehler ist.
                      Dann hast du irgendwas dabei falsch gemacht. Da du uns aber nicht zeigst, wie du es eingebaut hast, kann dir leider kein Mensch sagen, was du falsch gemacht hast.

                      Zitat von N4N0 Beitrag anzeigen
                      Desweiteren wollte ich fragen, warum ich auch leer (empty($_POST)) checken soll, wenn ich ohnehin weiß, dass die Angaben durchgehen. Siehe Script (Zeile: "Fehler 1/5[...]" (Der dann erscheint, wenn Var leer)?
                      Weil es ein Unterschied ist, ob eine Variable nicht gesetzt ist oder aber gesetzt ist jedoch ohne Inhalt - also leer.
                      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                      Schön - etwas Geschichte kann ja nicht schaden.
                      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                      Kommentar


                      • #26
                        Hier der aktuelle Code:

                        PHP-Code:
                        <?php error_reporting(E_ALL);

                                    
                        $db_host "";
                                    
                        $db_user "";
                                    
                        $db_pass "";
                                    
                        $db_name "";
                                    
                        $abf false;

                                    
                                    if (isset(
                        $_POST["search"])) {
                                        echo 
                        "<p><br /></p><hr />Check 1/3<hr />";
                                        
                                        
                        $sql mysqli_connect($db_host$db_user$db_pass$db_name
                                           or die(
                        "Die Datenbank konnte nicht erreicht werden!");

                                    
                        $abf"SELECT * FROM ... WHERE 1=1 ";

                                    if (isset(
                        $_POST["vname"])) {
                                        
                        $abf .= " AND `vname`= '" mysqli_real_escape_string($_POST['vname']) . "'";
                                    }
                                        else {echo 
                        "Fehler 1/5";}

                                    if (isset(
                        $_POST["nname"])) {
                                        
                        $abf .= " AND `nname`= '" mysqli_real_escape_string($_POST['nname']) . "'";
                                    }
                                        else {echo 
                        "Fehler 2/5";}

                                    if (isset(
                        $_POST["strnr"])) {
                                        
                        $abf .= " AND `strnr`= '" mysqli_real_escape_string($_POST['strnr']) . "'";
                                    }
                                        else {echo 
                        "Fehler 3/5";}

                                    if (isset(
                        $_POST["plz"])) {
                                        
                        $abf .= " AND `plz`= '" mysqli_real_escape_string($_POST['plz']) . "'";
                                    }
                                        else {echo 
                        "Fehler 4/5";}

                                    if (isset(
                        $_POST["ort"])) {
                                        
                        $abf .= " AND `ort`= '" mysqli_real_escape_string($_POST['ort']) . "'";
                                    }
                                        else {echo 
                        "Fehler 5/5";}

                                        if (
                        $sql != false and $abf != false) {
                                            echo 
                        "<hr />Check 2/3<hr />";

                                        if (
                        $result mysqli_query($sql$abf)) {
                                            echo 
                        "<hr />Check 3/3<hr /><p><br /></p>";

                                        
                        $anzahl mysqli_num_rows($result);
                                        echo 
                        "<p>Es wurden <strong>".$anzahl."</strong> Datensätze gefunden!</p>\n";

                                        echo 
                        "<table border=\"1\">\n".
                                        
                        "<tr><th>Vorname</th><th>Nachname</th><th>Straße / Nr.</th><th>PLZ</th><th>Ort</th>\n";

                                        while (
                        $datensatz mysqli_fetch_assoc($result)) {

                                        echo 
                        "<tr>".
                                        
                        "<td>" .htmlspecialchars($datensatz["vname"])."</td>".
                                        
                        "<td>" .htmlspecialchars($datensatz["nname"])."</td>".
                                        
                        "<td>" .htmlspecialchars($datensatz["strnr"])."</td>".
                                        
                        "<td>" .htmlspecialchars($datensatz["plz"])."</td>".
                                        
                        "<td>" .htmlspecialchars($datensatz["ort"])."</td>".
                                        
                        "</tr>\n";
                                        }
                                        
                        mysqli_free_result($result);
                                        echo 
                        "</table>\n";
                                        }
                                        else
                                        {
                                        echo 
                        mysqli_error($sql);

                                        echo 
                        "<hr />".$abf;
                                        } 
                                         
                        mysqli_close($sql);
                                        }
                                        else {echo 
                        "Es wurden keine verwertbaren Daten vom Formular übermittelt.\n";}
                                    }
                                    
                        ?>
                        Hinweis:
                        • Mein Script kommt nach jeder Abfrage bis zu "Check 3/3"
                        • Sollte einen Fehler ausgeben, wenn bestimmtes Feld nicht ausgefüllt

                        Wie und wo muss ich dort nun
                        Code:
                        empty()
                        einfügen?
                        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?

                        Kommentar


                        • #27
                          Zitat von N4N0 Beitrag anzeigen
                          Wie und wo muss ich dort nun empty() einfügen?
                          Na dort wo du dich vergewissern willst, ob der Wert einer Variablen „leer“ ist …
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #28
                            Und wie lange gedenkst du noch zu ignorieren, was dir bzgl. mysqli_real_escape_string schon gesagt wurde?

                            (Btw., das sollte dir auch entsprechende Fehlermeldungen gebracht haben.)
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #29
                              Zitat von wahsaga Beitrag anzeigen
                              Na dort wo du dich vergewissern willst, ob der Wert einer Variablen „leer“ ist …
                              // EDIT
                              Also ich habe es nochmal entsprechend geändert und es funktioniert auch - Soll heißen: Er bringt mir entsprechende Meldung, wenn ein Feld nicht ausgefüllt wurde.
                              Wie soll ich nun weiter verfahren?

                              PHP-Code:
                                      <?php error_reporting(E_ALL);

                                          
                              $db_host "";
                                          
                              $db_user "";
                                          
                              $db_pass "";
                                          
                              $db_name "";
                                          
                              $abf false;

                                          
                                          if (isset(
                              $_POST["search"])) {
                                              echo 
                              "<p><br /></p><hr />Check 1/3<hr />";
                                              
                                              
                              $sql mysqli_connect($db_host$db_user$db_pass$db_name
                                                 or die(
                              "Die Datenbank konnte nicht erreicht werden!");

                                          
                              $abf"SELECT * FROM ... WHERE 1=1 ";

                                          if (isset(
                              $_POST["vname"])) {
                                              
                              $abf .= " AND `vname`= '" mysqli_real_escape_string($_POST['vname']) . "'";
                                          }
                                              else {echo 
                              "Fehler 1/5";}
                                              
                                              if (empty(
                              $_POST["vname"])) {
                                              echo 
                              "Variable ist leer!";
                                              }

                                          if (isset(
                              $_POST["nname"])) {
                                              
                              $abf .= " AND `nname`= '" mysqli_real_escape_string($_POST['nname']) . "'";
                                          }
                                              else {echo 
                              "Fehler 2/5";}

                                              if (empty(
                              $_POST["nname"])) {
                                              echo 
                              "Variable ist leer!";
                                              }

                                          if (isset(
                              $_POST["strnr"])) {
                                              
                              $abf .= " AND `strnr`= '" mysqli_real_escape_string($_POST['strnr']) . "'";
                                          }
                                              else {echo 
                              "Fehler 3/5";}

                                              if (empty(
                              $_POST["strnr"])) {
                                              echo 
                              "Variable ist leer!";
                                              }
                                              
                                          if (isset(
                              $_POST["plz"])) {
                                              
                              $abf .= " AND `plz`= '" mysqli_real_escape_string($_POST['plz']) . "'";
                                          }
                                              else {echo 
                              "Fehler 4/5";}
                                              
                                              if (empty(
                              $_POST["plz"])) {
                                              echo 
                              "Variable ist leer!";
                                              }

                                          if (isset(
                              $_POST["ort"])) {
                                              
                              $abf .= " AND `ort`= '" mysqli_real_escape_string($_POST['ort']) . "'";
                                          }
                                              else {echo 
                              "Fehler 5/5";}
                                              
                                              if (empty(
                              $_POST["ort"])) {
                                              echo 
                              "Variable ist leer!";
                                              }

                                              if (
                              $sql != false and $abf != false) {
                                                  echo 
                              "<hr />Check 2/3<hr />";

                                              if (
                              $result mysqli_query($sql$abf)) {
                                                  echo 
                              "<hr />Check 3/3<hr /><p><br /></p>";

                                              
                              $anzahl mysqli_num_rows($result);
                                              echo 
                              "<p>Es wurden <strong>".$anzahl."</strong> Datensätze gefunden!</p>\n";

                                              echo 
                              "<table border=\"1\">\n".
                                              
                              "<tr><th>Vorname</th><th>Nachname</th><th>Straße / Nr.</th><th>PLZ</th><th>Ort</th>\n";

                                              while (
                              $datensatz mysqli_fetch_assoc($result)) {

                                              echo 
                              "<tr>".
                                              
                              "<td>" .htmlspecialchars($datensatz["vname"])."</td>".
                                              
                              "<td>" .htmlspecialchars($datensatz["nname"])."</td>".
                                              
                              "<td>" .htmlspecialchars($datensatz["strnr"])."</td>".
                                              
                              "<td>" .htmlspecialchars($datensatz["plz"])."</td>".
                                              
                              "<td>" .htmlspecialchars($datensatz["ort"])."</td>".
                                              
                              "</tr>\n";
                                              }
                                              
                              mysqli_free_result($result);
                                              echo 
                              "</table>\n";
                                              }
                                              else
                                              {
                                              echo 
                              mysqli_error($sql);

                                              echo 
                              "<hr />".$abf;
                                              } 
                                               
                              mysqli_close($sql);
                                              }
                                              else {echo 
                              "Es wurden keine verwertbaren Daten vom Formular übermittelt.\n";}
                                          }
                                          
                              ?>
                              Zuletzt geändert von N4N0; 06.02.2015, 11:24.
                              RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?

                              Kommentar


                              • #30
                                Zitat von wahsaga Beitrag anzeigen
                                Und wie lange gedenkst du noch zu ignorieren, was dir bzgl. mysqli_real_escape_string schon gesagt wurde?
                                Zitat von N4N0 Beitrag anzeigen

                                PHP-Code:
                                if (isset($_POST["vname"])) {
                                    
                                $abf .= " AND `vname`= '" mysqli_real_escape_string($_POST['vname']) . "'";



                                EDIT:
                                Und anhand davon, was bei der empty-Prüfung rauskommt sollst du abhängig machen, ob der entsprechende Teil überhaupt in dein SQL-Statement mit aufgenommen wird.


                                OT:
                                Bist du dir sicher, dass Programmieren das richtige für dich ist?
                                Zuletzt geändert von Quetschi; 06.02.2015, 11:27.
                                Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                                Schön - etwas Geschichte kann ja nicht schaden.
                                Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                                Kommentar

                                Lädt...
                                X