ZahlenAGruppieren

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

  • ZahlenAGruppieren

    Hallo,

    ich benötige eine Select-Anweisung zum Auslesen und Zusammenfassen von Postleitzahlen aus einer Datenbank.

    Bsp:

    ich habe folgende Postleitzahlen in meiner Datenbank:

    05896
    29966
    31000
    59666
    65000
    95632

    Hier ich eine Formular mit einem Select-Feld, in dem ich die PLZ in Gruppen Darstellen möchte!

    <Select Name=PLZ>
    <option value=05896-29966>
    <option value=31000-59666>
    <option value=65000-95632></Select>


    Klicke ich jetzt auf 31000-59666, sollen alle Daten die eine PLZ zwischen 31000-59666 haben gelistet werden.

    Wie sieht das in der ersten? wie in der zweiten Select-Anweisung aus?
    Zuletzt geändert von stumpy666; 26.08.2003, 14:37.

  • #2
    aehm ist es schwer ....

    also das waere meine loesung so wie ich die verstanden habe
    PHP-Code:
    <?

    $val = explode("-",$_POST["PLZ"]);

    $sql = "SELECT * FROM MEINETABELLE WHERE PLZ  >= $val[0] AND PLZ <= $val[1]";

    // blabla der kram mit der whileschleife und so ...

    ?>
    gruss
    iglo

    Kommentar


    • #3
      kannst du mir evtl. kurz die Zeile mit dem Befehl: explode erläutern?

      Kommentar


      • #4
        wärs nicht einfacher, ins manual zu schauen?
        http://de2.php.net/manual/de/function.explode.php
        Kissolino.com

        Kommentar


        • #5
          Gut... das wäre verstanden... Da könnte man dann glaub ich auch den Befehl BETWEEN $var[0] and $var[1] benutzen

          Aber zu der ersten Problematik:

          ich habe jeden Menge PLZ die ich Gruppiert in einerm Select-Feld auf mehrere <option> darstellen möchte (siehe oben). Benutzt man da Group by?

          Kommentar


          • #6
            Original geschrieben von stumpy666
            ich habe jeden Menge PLZ die ich Gruppiert in einerm Select-Feld auf mehrere <option> darstellen möchte (siehe oben). Benutzt man da Group by?
            Ähmmm....
            wie GROUP BY????? Ich glaube Du solltest Deine Frage präzisieren. Egal.

            Zunächst mal HTML...

            <select name="PLZ" size="3">
            <option>05896-29966</option>
            <option>31000-59666</option>
            <option>65000-95632</option>
            </select>

            Dann, wenn das Formular verarbeitet wird genau wie iglo es gesagt hat:

            PHP-Code:
            $val explode("-",$_POST["PLZ"]);
            $query "SELECT * FROM MEINETABELLE WHERE PLZ  >= $val[0] AND PLZ <= $val[1]";
            $result mysql_query($query); 
            usw...

            Wenn Du die Auswahlliste <select name="PL..... nur mit Werten füllen willst, die auch tatsächlich in der DB vorkommen, dann habe ich Dich falsch verstanden.

            cu
            Christoph
            Ich denke, also bin ich.
            Manche sind trotzdem!

            Kommentar


            • #7
              eben zur frage wegen dem BETWEEN ... jepp ist wohl eleganter ...
              aber an den befehl hat ich in dem moment meines posts nicht gedacht ...

              wuerd aber wohl auch das betweenb bevorzugen ...

              gruss
              iglo


              nachtrag :

              was meinst du mit dem group ???
              willste das auswahlfled dynamish erstellen ???
              das musste nochmal nen bissel erklaeren ...
              Zuletzt geändert von kapitaeniglo; 26.08.2003, 23:04.

              Kommentar


              • #8
                genau... die Daten im Auswahlfeld sind dynamisch und werden bisher alle einzeln gelistet:

                <SELECT NAME="state">
                <OPTION VALUE="">Wählen Sie eine PLZ</OPTION>

                <?php
                include("my_database.php");

                // Erstellt Verbindung zu Datenbank her
                $db = @MYSQL_CONNECT($db_server,$db_user,$db_passwort);
                mysql_select_db($db_name,$db);

                // Befehl an die Datenbank
                $query = "SELECT DISTINCT plz FROM tabelle ORDER BY Plz ASC";

                // Datenbank wird ausgelesen
                $result = mysql_query($query,$db);

                // Daten werden wiedergegeben
                $num = mysql_numrows($result);
                for ($i = 0; $i < $num; $i++) {
                $row = mysql_fetch_array($result);

                echo "<OPTION VALUE='$row[PLZ]'>$row[PLZ]\n";
                }
                </SELECT>

                hier wiederholt sich das Optionsfeld bis alle PLZ ausgelesen sind.

                Ich hab hier also nur die Möglichkeit auf eine einzelne Postleitzahl zu klicken um mir dann auf der nächsten Seite die Adressen zu der Postleitzahl anzeigen zu lassen.

                Diesen Auzug möchte ich daher zusammen fassen!

                1. die Datenbank nach PLZ durchsuchen.
                2. alle gefundenen Daten nach der Anfangszahl 0-3, 4-6 und 7-9 gruppieren:
                Beispiel:
                01825-36586
                40058-68963
                71586-98756

                Jetzt würde ich hier die Auswahl auf einen bestimmten Postleitzahlenbereich zusammenfassen können. Ich lasse mir dann beispielsweise alle Adressen der PLZ zw. 01825-36586 auf der nächsten Seite anzeigen.

                ich hoffe ich hab das hier so einigermaßen erklären können?

                Kommentar


                • #9
                  hatt da denn niemand einen Tip?

                  Kommentar


                  • #10
                    dir geht's um welchen der drei punkte?
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      wie ich den Auszug der Postleizahlen aus der Datenbank nach dem Auslesen gruppiere und in max. 3-4 Optionsfeldern darstelle

                      Kommentar


                      • #12
                        du schaust ob du postleitzahlen zwischen 0 und 3, 4 und 6, 7 und 9 hast und gibst dann nen eintrag in deiner selectbox aus

                        das SELECT dazu steht doch schon oben
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          genau .. du suchst dir den kleinsten ziwschen 0 und sowei den groessten raus ... und nimmst die .. ebenso bei den anderen ...

                          aber warum erzeugste das dynamisch ???

                          kannst da nicht thoeretisch einfach
                          also felder 00001-39999
                          40000-69999
                          und 70000-99999

                          nehmen ???
                          oder wuerd das so nen unterschied machen ?

                          Kommentar

                          Lädt...
                          X