Suche mit Eingabefeldern

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

  • #31
    Zitat von ich1d3 Beitrag anzeigen
    Auch konsequent umgesetzt:
    PHP-Code:
    if (isset($_POST["soziales"]) and !empty($_POST["soziales"])) {

            
    $x trim($_POST["soziales"]);
            
    $x preg_replace("/[^0-9]/"""$x); 
            
    "SELECT * FROM test WHERE soziales='".$x."'";
        }

        if (
    $sql != false and $abf != false) {

            if (
    $result mysqli_query($sql$abf)) {
    ...
    ... 
    erhalte ich zwar keine Fehlermeldung, aber auch kein gewünschtes sortiertes Ergebnis.
    Und dabei vergessen den Wert "SELECT * FROM test WHERE soziales='".$x."'"; der Variablen $abf zuzuweisen?

    PHP-Code:
    $abf "SELECT * FROM test WHERE soziales='".$x."'"
    Habe Deine Mail beantwortet, in der steht auch noch etwas zum Thema.

    Kommentar


    • #32
      Es geht nur ums Verständnis für die Sprache, warum, weshalb, wieso.

      Beispiel:

      PHP-Code:
      if (isset($_POST["soziales"]) and !empty($_POST["soziales"])) {

          
      $soz trim($_POST["soziales"]);
          
      $soz preg_replace("/[^0-9]/"""$soz);
          
      $abf "SELECT * FROM test WHERE soziales='".$soz."'";

      Mit Kommentaren:

      PHP-Code:
      /*
       Erste Zeile: 
       Frage ((wurde Post mit dem Parameter "soziales" übermittelt,
       befindet sich dieser als Schlüssel im Array von $_POST) 
       und (wurde dem Schlüssel "soziales" im $_POST-Array ein Wert zugeordnet?))
       Falls alles zutreffend, dann führe Code in Klammer aus.
      */
      if (isset($_POST["soziales"]) and !empty($_POST["soziales"])) {

      /*
       Zweite Zeile:
       Entferne eventuell vorhandene Leerzeichen am Anfang und Ende von "soziales" und 
       speichere den Wert von "soziales" in der Variablen $soz.
      */
          
      $soz trim($_POST["soziales"]);
      /*
       Dritte Zeile:
       Entferne alle Zeichen aus dem in $soz gespeicherten Wert, 
       welche keiner Ziffer entsprechen. 
      */        
          
      $soz preg_replace("/[^0-9]/"""$soz);
      /*
       Vierte Zeile:
       Füge den geprüften und gegebenenfalls bereinigten Wert von $soz der Abfrage hinzu
       und speichere die Abfrage in $abf. 
      */        
          
      $abf "SELECT * FROM test WHERE soziales='".$soz."'";

      Kommentar


      • #33
        Suche mit Eingabefeldern

        Wie würde denn das aussehen, wenn ich die vorgeschlagene Lösung mit and und or einbauen würde - siehe oben?

        PHP-Code:
        "SELECT * FROM test WHERE ort='".$ort."' AND plz='".$plz."'";
        "SELECT * FROM test WHERE ort='".$ort."' OR plz='".$plz."'"
        Wie kommt das in die bisherigen Abfragen
        PHP-Code:
        if (isset($_POST["ort"]) and !empty($_POST["ort"])) {

                
        $ort trim($_POST["ort"]);
                
        $ort preg_replace("/[^a-z\s-]/i"""$ort);
                
        $abf "SELECT * FROM test WHERE ort='".$ort."'";
            }
            
            if (isset(
        $_POST["plz"]) and !empty($_POST["plz"])) {

                
        $plz trim($_POST["plz"]);
                
        $plz preg_replace("/[^0-9]/i"""$plz );
                
        $abf "SELECT * FROM test WHERE plz='".$plz."'";
            }

             if (isset(
        $_POST["soziales"]) and !empty($_POST["soziales"])) {
                
        $x trim($_POST["soziales"]);
                
        $x preg_replace("/[^0-9]/"""$x); 
                
        "SELECT * FROM test WHERE soziales='".$x."'";
            } 
        bzw. wie kann ich das ersetzen? Habe leider keinen richtigen Plan. Vielleicht komme ich damit der Lösung etwas näher.

        Kommentar


        • #34
          Ja, dazu müsstest Du aber auch wissen, was mit OR und was mit AND abgefragt werden soll oder alles nur mit OR kombinieren. Nur abgefragt und geprüft was übergeben wurde, sollte auch weiterhin werden.

          Kommentar


          • #35
            Suche mit Eingabefeldern

            Mit den Eintragungen jetzt funktioniert es, wenn man im letzten Feld eine 1 eingibt.
            PHP-Code:
            if (isset($_POST["ort"]) and !empty($_POST["ort"])) {

                    
            $ort trim($_POST["ort"]);
                    
            $ort preg_replace("/[^a-z\s-]/i"""$ort);
                    
            $abf "SELECT * FROM test WHERE ort='".$ort."'";
                }
                
                if (isset(
            $_POST["plz"]) and !empty($_POST["plz"])) {

                    
            $plz trim($_POST["plz"]);
                    
            $plz preg_replace("/[^0-9]/i"""$plz );
                    
            $abf "SELECT * FROM test WHERE plz='".$plz."'";
                }

              if (isset(
            $_POST["soziales"]) and !empty($_POST["soziales"])) {

                    
            $soziales trim($_POST["soziales"]);
                    
            $soziales preg_replace("/[^0-1]/"""$soziales );
                    
            $abf "SELECT * FROM test WHERE soziales='".$soziales."'";
                } 
            Kleine Mängel jetzt noch im Gegensatz zu bisher:

            Gebe ich Im Feld ort=Weimar ein und soziales=1 erhalte ich nicht nur Ergebnisse von Weimar, sondern ungewollt auch von Berlin, Erfurt, Jena usw., allerdings jetzt richtig alle mit sozial.

            Und wie geht die angebotene obige Lösung mit „and“ und „or“? Wie kann ich das in das Script einbauen? Vielleicht die noch bessere Lösung?
            In meiner wenigen Freizeit bin ich schon fleißig dran! ;-)

            Kommentar


            • #36
              Du müsstest erst einmal einen Plan machen, wenn das noch viel länger wird, könnte man das bisherige Listing lieber noch einmal umschreiben. Könnte mir das zum Beispiel so vorstellen, dass man $abf da nicht mehr mit hinein nimmt, sondern nur noch eine Variable für true und false und je nachdem, welche true und welche false liefern, dann erst dem Ergebnis entsprechend die WHERE-Klausel mit AND oder OR zusammen setzt.

              Kommentar


              • #37
                Suche mit Eingabefeldern

                Ja! Das Projekt ist ja unter Initiativ-Network zu sehen und die Abfrage über alles dann in Datensätze aus einer Datenbank auslesen und ausgeben.
                Jetzt möchte ich die Suche anbieten, dass man zum Ort/ Gebiet suchen kann, wer sich bei Demokratie, oder Sozial oder Bildung oder Kultur Umwelt eingetragen hat, so dass sich mögliche Partner finden können.
                Dabei ist es mit der jetzigen Lösung auch blöd, dass man dafür bei dem entsprechenden Feld eine 1 eingeben muss als Suchkriterium. Lieber wäre mir eine Radiobutton-Gruppe, bei der man aus den 5 Möglichkeiten eine auswählen kann.

                Kommentar


                • #38
                  Dann sollte das in etwa so aussehen.

                  1. Suche nach Ort
                  2. Suche nach PLZ
                  3. Suche nach (Ort und Gebiet) oder nach (PLZ und Gebiet)

                  Somit wie folgt:

                  PHP-Code:
                      if (isset($_POST["ort"]) and !empty($_POST["ort"])) {

                          
                  $ort trim($_POST["ort"]);
                          
                  $ort preg_replace("/[^a-z\s-]/i"""$ort);
                          
                  $abf "SELECT * FROM test WHERE ort='".$ort."'";
                      }
                      
                      if (isset(
                  $_POST["plz"]) and !empty($_POST["plz"])) {

                          
                  $plz trim($_POST["plz"]);
                          
                  $plz preg_replace("/[^0-9]/"""$plz );
                          
                  $abf "SELECT * FROM test WHERE plz='".$plz."'";
                      }

                      if (isset(
                  $_POST["soziales"]) and !empty($_POST["soziales"])) {

                          
                  $soz trim($_POST["soziales"]);
                          
                  $soz preg_replace("/[^0-9]/"""$soz);
                          
                  $abf "SELECT * FROM test WHERE (soziales='".$soz."' AND ort='".$ort."') OR (soziales='".$soz."' AND plz='".$plz."')";
                      } 
                  Bei 3 könnte bei Gebiet über Radio-Buttons eine Auswahl getroffen werden.

                  Da von Ort und Gebiet jeweils eine leer bleiben wird, sollten beide mit einem Wert vorbelegt werden, wovon der eine überschrieben wird und der andere sich nicht störend bei der Suche nach Punkt 3 auswirkt. Müsste man mal ausprobieren, ob sich da true oder false als boolesche Werte eignen oder so etwas wie NoData besser geeignet ist.

                  Also, eventuell so, doch das habe ich auch noch nicht ausprobiert, was da am besten geeignet ist. Da ließen sich ja ein paar Tests machen. Warum stand da bei Dir im letzten Statement [^0-1] wenn es doch 5 mögliche Ziffern sind und nicht nur 0 und 1?

                  PHP-Code:
                  $limit 20;

                      if (isset(
                  $_POST["ort"]) and !empty($_POST["ort"])) {

                          
                  $ort trim($_POST["ort"]);
                          
                  $ort preg_replace("/[^a-z\s-]/i"""$ort);
                          
                  $abf "SELECT * FROM test WHERE ort='".$ort."' LIMIT 0, ".$limit;
                      }
                      else {
                  $ort "NoData"
                      }
                      
                      if (isset(
                  $_POST["plz"]) and !empty($_POST["plz"])) {

                          
                  $plz trim($_POST["plz"]);
                          
                  $plz preg_replace("/[^0-9]/"""$plz );
                          
                  $abf "SELECT * FROM test WHERE plz='".$plz."' LIMIT 0, ".$limit;
                      }
                      else {
                  $plz "NoData"
                      }    

                      if (isset(
                  $_POST["soziales"]) and !empty($_POST["soziales"])) {

                          
                  $soz trim($_POST["soziales"]);
                          
                  $soz preg_replace("/[^0-9]/"""$soz);
                          
                  $abf "SELECT * FROM test WHERE (soziales='".$soz."' AND ort='".$ort."') OR (soziales='".$soz."' AND plz='".$plz."') LIMIT 0, ".$limit;
                      } 
                  Zuletzt geändert von Melewo; 12.04.2013, 10:28.

                  Kommentar


                  • #39
                    Suche mit Eingabefeldern

                    Ja, das klappt wirklich gut, wenn ich Ort oder Plz eingebe und mit Soziales verknüpfe.
                    Und jetzt weiß ich auch, wie man das mit dem and und dem or macht.

                    Wie kann ich jetzt den Teil Demokratie, Soziales, Bildung, Umwelt usw. mit Radiobuttons abfragen?

                    Als Beispiel für die Eingabe hatte ich so was gefunden.
                    PHP-Code:
                    Radiobutton-Gruppe: <input type="radio" name="radiobuttongruppe" id="radiobuttongruppe_1" value="ja" /> Ja <input type="radio" name="radiobuttongruppe" id="radiobuttongruppe_2" value="nein" />Nein<br /> 
                    Wie bekomme ich jetzt die Abfrage zu den obigen 4 Werten in mein Script?

                    Kommentar


                    • #40
                      PHP-Code:
                      var_dump($_POST); 
                      guck dir die ausgabe an, dann kommst du schon drauf ;-)
                      Gruß
                      Uzu

                      private Homepage

                      Kommentar


                      • #41
                        Zitat von ich1d3 Beitrag anzeigen
                        Wie kann ich jetzt den Teil Demokratie, Soziales, Bildung, Umwelt usw. mit Radiobuttons abfragen?
                        Falls die unter Ziffern in der DB kategorisiert sind, zumindest habe ich Deine Aussagen bisher so verstanden, dann fügst Du die halt auch so an geeigneter Stelle ins Formular mit ein.

                        HTML-Code:
                        <form action="die_zielseite.php" method="post">
                        <input type="text" name="ort">
                        <input type="text" name="plz"><br>
                        <br>
                        <input type="radio" name="gebiet" value="1"> Soziales<br>
                        <input type="radio" name="gebiet" value="2"> Bildung<br>  
                        <input type="radio" name="gebiet" value="3"> Kultur<br>
                        <input type="radio" name="gebiet" value="4"> Umwelt<br>
                        <input type="radio" name="gebiet" value="5"> Demokratie<br>
                        <br>
                        <input type="submit" name="eintragen" value="eintragen"><br>
                        <br>
                        </form>
                        Zitat von ich1d3 Beitrag anzeigen
                        Wie bekomme ich jetzt die Abfrage zu den obigen 4 Werten in mein Script?
                        Nie und nimmer, nicht in hundert Jahren, wenn Du laufend die Elemente-Namen vom Formular und die Feldnamen von der Datenbank durcheinander würfelst und undefinierte Variablen einfach mal so platzierst, weil die da gerade gut aussehen.

                        Wenn Du hingegen name="Elemente-Name" vom Formular richtig mit $_POST["Elemente-Name"] abfragst und richtig einer Variablen zuordnest, wie bei $elem1 = $_POST["Elemente-Name-1"], auch die Feldnamen aus der DB richtig in die Where-Klausel einfügst, wie bei feldname/spaltenname = '".$elem1."', ja dann sollte das leicht und locker wie ein Kinderspiel von der Hand gehen.
                        Zuletzt geändert von Melewo; 12.04.2013, 11:31.

                        Kommentar


                        • #42
                          Suche mit Eingabefeldern

                          Jein. In der Datenbanktabelle steht jeweils nur 0 oder 1, ob das Feld Soziales angeklickt wurde oder nicht. In der Ausgabe unter Datensätze aus einer Datenbank auslesen und ausgeben kann man dann ein Ja oder ein Nein sehen.
                          In den Radio-Feldern oben habe ich jetzt aber die Ziffern 1 bis 5, die in PHP übergeben werden. OK bis hierhin.
                          Damit muss ich doch dann aber unten wieder das Script ganz anderes schreiben.

                          Das Bisherige
                          PHP-Code:
                          if (isset($_POST["eintragen"])) {

                              
                          $sql mysqli_connect($db_host$db_user$db_pass$db_name
                                     or die(
                          "Die Datenbank konnte nicht erreicht werden!");
                                     
                              

                              if (isset(
                          $_POST["ort"]) and !empty($_POST["ort"])) {

                                  
                          $ort trim($_POST["ort"]);
                                  
                          $ort preg_replace("/[^a-z\s-]/i"""$ort);
                                  
                          $abf "SELECT * FROM test WHERE ort='".$ort."'";
                              }
                              
                              if (isset(
                          $_POST["plz"]) and !empty($_POST["plz"])) {

                                  
                          $plz trim($_POST["plz"]);
                                  
                          $plz preg_replace("/[^0-9]/i"""$plz );
                                  
                          $abf "SELECT * FROM test WHERE plz='".$plz."'";
                              }

                                if (isset(
                          $_POST["soziales"]) and !empty($_POST["soziales"])) {

                                  
                          $soziales trim($_POST["soziales"]);
                                  
                          $soziales preg_replace("/[^0-1]/"""$soziales );
                                  
                          $abf "SELECT * FROM test WHERE soziales='".$soziales."'";
                              }
                               if (isset(
                          $_POST["demokratie"]) and !empty($_POST["demokratie"])) {

                                  
                          $demokratie trim($_POST["demokratie"]);
                                  
                          $demokratie preg_replace("/[^0-5]/"""$demokratie );
                                  
                          $abf "SELECT * FROM test WHERE demokratie='".$demokratie."'"
                          funktioniert da dann nicht mehr. Wie geht es also unten weiter?
                          Und in
                          PHP-Code:
                          <form action="die_zielseite.php" method="post">
                          <
                          input type="text" name="ort">
                          <
                          input type="text" name="plz"><br>
                          <
                          br>
                          <
                          input type="radio" name="gebiet" value="1"Soziales<br>
                          <
                          input type="radio" name="gebiet" value="2"Bildung<br>  
                          <
                          input type="radio" name="gebiet" value="3"Kultur<br>
                          <
                          input type="radio" name="gebiet" value="4"Umwelt<br>
                          <
                          input type="radio" name="gebiet" value="5"Demokratie<br>
                          <
                          br>
                          <
                          input type="submit" name="eintragen" value="eintragen"><br>
                          <
                          br>
                          </
                          form
                          habe ich 5 mal einen Radio-Button für die eingetragen Variable „gebiet“? Sollte da nicht
                          PHP-Code:
                          <input type="radio" name="soziales" value="1"Soziales<br
                          stehen? Mach es mir bitte nicht so schwer, sondern so, dass ich es von oben bis unten auch verstehen kann.
                          Danke!

                          Kommentar


                          • #43
                            Hallo,
                            wenn ich mich da mal mit einmischen darf!?

                            Das Suchformular würde ich so aufbauen, dass der geneigte Besucher auswählen kann nach
                            Ort ODER PLZ ODER Gebiet
                            UND (ich nenn es mal Bereich) Demokratie, Soziales,...

                            Suche nach Bereich
                            a) NUR einer? -> Radiobutton
                            b) mehrere? -> Checkboxen
                            b1) ALLE selektierten Bereiche? -> AND-Verknüpfung
                            b2) beliebige Kombination? -> OR-Verküpfung

                            kl. Beispiel:
                            PHP-Code:
                                //--array für mehrfachauswahl und entsprechender Ausdruck für SQL-Abfrage
                                $sqlbereich=array("dem"=>' `demokratie` ',
                                                  "soz"=>' `soziales` ',
                                                  "bil"=>' `bildung` '
                                                  );


                                if (isset($_POST["ort"]) and !empty($_POST["ort"])) {

                                    $ort = trim($_POST["ort"]);
                                    $ort = preg_replace("/[^a-z\s-]/i", "", $ort);
                                    $abf = "SELECT * FROM test WHERE ort='".$ort."'";
                                }

                                if (isset($_POST["plz"]) and !empty($_POST["plz"])) {

                                    $plz = trim($_POST["plz"]);
                                    $plz = preg_replace("/[^0-9]/", "", $plz );
                                    //--ist plz kleiner 5 Ziffern? dann ist es
                                    //--eine PLZ-Bereichsuche, z.B 10xxx
                                    if(strlen($plz)<5){
                                      $abf = "SELECT * FROM test WHERE plz LIKE'$plz%'";

                                    } else {
                                      $abf = "SELECT * FROM test WHERE plz='$plz'";
                                    }
                                }

                                if (isset($_POST["gebiet"]) and !empty($_POST["gebiet"])) {

                                    $gebiet = trim($_POST["gebiet"]);
                                    $gebiet = preg_replace("/[^a-z\s-]/i", "", $gebiet);
                                    $abf = "SELECT * FROM test WHERE gebiet='$gebiet'";
                                }

                                if (!empty($_POST['bereich'])) {
                                    //--temp. Array aus den selektierten Checkboxen
                                    foreach($_POST['bereich'] as $wahl)
                                    {
                                      $temp[] = $sqlbereich[$wahl];
                                    }
                                    //--temp.Array zu einem String mit 'Trenner' AND wenn ALLE Bereiche zutreffen müssen
                                    $bereichbedingung = implode(" AND ", $temp);
                                    /* wenn eine beliebige Kombination, dann 'Trenner' OR
                                     *
                                    $str = implode(" OR ", $temp);
                                    */


                                    //--SQL-String zusammenbauen
                                    //--falls vorher in den Eingabefeldern KEINE Angaben gemacht wurden
                                    //--ist $abf ein Leerstring, also basteln wir zunächst die Abfrage
                                    if (empty($abf))
                                    {
                                      $abf = "SELECT * FROM test WHERE ($bereichbedingung)";
                                    }
                                    else
                                    {
                                      $abf .= " AND ($bereichbedingung)";
                                    }
                                }

                                if (!empty($_POST['bereich1'])) {
                                    $bereichbedingung = $sqlbereich[$_POST['bereich1']];

                                    //--SQL-String zusammenbauen
                                    //--falls vorher in den Eingabefeldern KEINE Angaben gemacht wurden
                                    //--ist $abf ein Leerstring, also basteln wir zunächst die Abfrage
                                    if (empty($abf1))
                                    {
                                      $abf1 = "SELECT * FROM test WHERE ($bereichbedingung)";
                                    }
                                    else
                                    {
                                      $abf1 .= " AND ($bereichbedingung)";
                                    }
                                }

                                print $abf."<br />$abf1";

                            ?>
                            <html><body>
                            <form action="<?php echo htmlentities($_SERVER['SCRIPT_NAME']); ?>" method="POST" enctype="text/html">
                            <input type="text" name="ort"/>Ort <br />
                            <input type="text" name="plz"/>PLZ <br />
                            <input type="text" name="gebiet"/>Gebiet <br />
                            <input type="checkbox" name="bereich[]" value="dem"/>Demokratie <br />
                            <input type="checkbox" name="bereich[]" value="soz"/>Soziales <br />
                            <input type="checkbox" name="bereich[]" value="bil"/>Bildung <br /> <br />
                            <input type="radio" name="bereich1" value="dem"/>Demokratie <br />
                            <input type="radio" name="bereich1" value="soz"/>Soziales <br />
                            <input type="radio" name="bereich1" value="bil"/>Bildung <br />


                            <input type="submit" value="Auswahl" name="absenden"/>
                            </form>
                            </body></html>
                            Erklärung(en):
                            HTML-Code:
                            <input type="checkbox" name="bereich[]" value="dem"/>Demokratie <br />
                            <input type="checkbox" name="bereich[]" value="soz"/>Soziales <br />
                            <input type="checkbox" name="bereich[]" value="bil"/>Bildung <br /> <br />
                            Checkboxen zur Mehrfachauswahl eines Bereiches; da mehrere Checboxen angeklickst sein können, muss der name bereich[] als Array notiert werden!

                            Alle möglichen Bereiche bzw value-Werte dienen als Schlüssel in diesem Array:
                            PHP-Code:
                                //--array für mehrfachauswahl und entsprechender Ausdruck für SQL-Abfrage
                                
                            $sqlbereich=array("dem"=>' `demokratie` ',
                                                  
                            "soz"=>' `soziales` ',
                                                  
                            "bil"=>' `bildung` '
                                                  
                            ); 
                            welches zur Bildung des SQL-Statements für die entsprechenden Tabellenfelder benötigt wird.

                            Zusammenbau des Abfragestrings für den/die selektierten Bereich(e):
                            PHP-Code:
                                if (!empty($_POST['bereich'])) {
                                    
                            //--temp. Array aus den selektierten Checkboxen
                                    
                            foreach($_POST['bereich'] as $wahl)
                                    {
                                      
                            $temp[] = $sqlbereich[$wahl];
                                    }
                                    
                            //--temp.Array zu einem String mit 'Trenner' AND wenn ALLE Bereiche zutreffen müssen
                                    
                            $bereichbedingung implode(" AND "$temp);
                                    
                            /* wenn eine beliebige Kombination, dann 'Trenner' OR
                                     *
                                    $str = implode(" OR ", $temp);
                                    */


                                    //--SQL-String zusammenbauen
                                    //--falls vorher in den Eingabefeldern KEINE Angaben gemacht wurden
                                    //--ist $abf ein Leerstring, also basteln wir zunächst die Abfrage
                                    
                            if (empty($abf))
                                    {
                                      
                            $abf "SELECT * FROM test WHERE ($bereichbedingung)";
                                    }
                                    else
                                    {
                                      
                            $abf .= " AND ($bereichbedingung)";
                                    }
                                } 
                            Aus den im POST-Array bereich enthaltenen Checkbox-Values werden aus dem Array $sqlbereich die entsprechenden Tabellenfelder zu dem String $bereichsbedingung mit AND bzw OR zusammengefügt, z.B.:
                            Code:
                            ( `demokratie`  AND  `soziales` )
                            Ein mögliches SQL-Statement könnte dann bspw. so aussehen:
                            Code:
                            SELECT * FROM `test` WHERE `plz` LIKE '10%' AND ( `soziales`  AND  `bildung` )
                            Zur Abfragesyntax: bei MySql können 'boolsche' Felder (Typ tinInt) auf 3 Arten notiert werden:
                            ---> SELECT * FROM blubb WHERE boolfeld=true
                            ---> SELECT * FROM blubb WHERE boolfeld=1
                            ---> SELECT * FROM blubb WHERE boolfeld


                            Beispiel mit Radiobuttons, wenn NUR ein Bereich ausgewählt werden soll. Da NUR ein value möglich ist (was ja Sinn einer Radiogroup ist) muss für die POST-Variable kein Array bereitgestellt werden:
                            PHP-Code:
                            <input type="radio" name="bereich1" value="dem"/>Demokratie <br />
                            <
                            input type="radio" name="bereich1" value="soz"/>Soziales <br />
                            <
                            input type="radio" name="bereich1" value="bil"/>Bildung <br /> 
                            Tipp: für die PLZ-Suche nicht unbedingt auf Exactheit abfragen, sondern auch auf alle möglichen PLZ beginnend mit dem Suchmuster:
                            PHP-Code:
                                    //--ist plz kleiner 5 Ziffern? dann ist es
                                    //--eine PLZ-Bereichsuche, z.B 10xxx
                                    
                            if(strlen($plz)<5){
                                      
                            $abf "SELECT * FROM test WHERE plz LIKE '$plz%'";

                                    } else {
                                      
                            $abf "SELECT * FROM test WHERE plz='$plz'";
                                    } 

                            Kommentar


                            • #44
                              Zitat von raiguen Beitrag anzeigen
                              Hallo,
                              wenn ich mich da mal mit einmischen darf!?
                              Na ja, wenn sich sonst keiner "mischt" . . .
                              Hi raiguen,
                              . . . dann mach' ich das auch mal.
                              Wenn ich im Endeffekt nur eine Sache suche (PLZ oder Ort), dann würde ich auch nur ein Textfeld verwenden.
                              Zwei Textfelder könnten Benutzer verwirren, die dann glauben, man müsse auch beide Textfelder ausfüllen,
                              was natürlich Humbug ist (m.M. nach).
                              Die Auswahl, nach was jemand sucht, kann ich doch über Radio-Buttons steuern.
                              Die RBs heißen spalte, die RB-Valueparameter jeweils plz, ort.
                              Code:
                              <form action="" method="post">
                              <p>Suche nach PLZ <input type="radio" name="spalte" value="plz" /> 
                              Ort <input type="radio" name="spalte" value="ort" checked />
                              <input type="text" name="suchfeld" /></p>
                              <p><input type="submit" name="cmd" value="Suchen" />
                              Nach Senden des Form's . . .
                              PHP-Code:
                              if(isset($_POST['cmd'])){ //Wurde der Submit-Button geklickt?
                               
                               
                              $spalte=$_POST['spalte']; // $_POST['spalte'] enthält entweder "plz" oder "ort"
                               
                               
                              $query='select * from tabelle where '.$spalte.' like "'.$_POST['suchfeld'].'%"';
                               
                              . . . 
                              usw
                              Und die ganze Prüferei mit isset, empty kann ich mir auch noch sparen, in dem ich generell mit Wildcard vergleiche,
                              und dem Benutzer einfach mitteile, wie er das Formular zur Suche nutzen kann:

                              - vollen Ortsnamen eingeben, oder einen oder mehr Buchstaben
                              - volle PLZ eingeben, oder ein oder mehr Zahlen als PLZ-Bereich
                              - nichts eingeben, um die ganze Tabelle abzurufen

                              Ich finde, macht die Sache wesentlich kürzer und weniger kompliziert.

                              Gruß
                              Günni

                              Kommentar

                              Lädt...
                              X