Daten aus Db in selectbox anzeigen

  • Themenstarter Themenstarter Deejoy
  • Beginndatum Beginndatum
Also das script ist perfekt funktioniert alles wie es soll. Eine kleinigkeit habe ich da aber noch.

Ich prüfe ob die eingaben richtig bzw. vorhanden sind. Fehlt eine angabe wird der user zurück zum formular geleitet mit einer fehlerangabe. Alle bisherigen eingabe wie zb. name vorname etc etc sind dann aber schon in den input felder vorhanden. Bei der PLZ klappt das auch jedoch ist dann immer der Ort weg sodas der user zumindesten noch mal die letzte stelle der plz eingeben müsste.
Kann man nicht den gewählten Ort auch mit anzeigen lassen ? Das würde sonst nur wieder einen unnötigen fehler erzeugen
 
Da müsstest du das ganze beim Laden das Skript beim Laden der Seite bereits einmal aufrufen:
Code:
<body onload="show_location(document.frm.plz_in)">

frm ist dabei wieder der Name des Formulars und plz_in der des PLZ-Eingabefeldes,..musst du dann falls nötig noch anpassen.
 
Möchte nun gleiches Problem lösen nur klappt es leider nicht bei mir.
Wieso weiss ich nun bei besten Willen nicht :o(
hier meine 2 Dateien:
index.htm
HTML:
<html>
    <head>
        <script type="text/javascript">
        <!--
        function show_location(objInput){
            if(!String(objInput.value).match(/^\d{5}$/))    {
                objInput.form.loc_out.style.visibility="hidden";
            }else{
                window.dummie.location="plz.php?plz="+objInput.value;
            }
        }

        function add_option(strText){
            objList=document.frm.loc_out;
            objList.options[objList.options.length]=new Option(strText);
            objList.style.visibility='visible';
        }
            
        //-->
        </script>
    </head>
    <body>

        <iframe name="dummie">
        </iframe>

        <form method="post" action="index.htm" name="frm" id="frm">
                <input type="text" name="plz_in" maxlength="5" onkeyup="show_location(this)">
                <select name="loc_out" size="5">
                </select>
         </form>
     
     </body>
 </html>

plz.php
PHP:
<script type="text/javascript">
<!--

function get_location(){
    if(typeof parent.dummie=='object' && typeof parent.document.frm.loc_out=='object'){
        objList = parent.document.frm.loc_out;
        objList.options.length=0;
         <?php
                    
            $sql = "select ort from plz where plz='".$_GET['plz'];
            $result= mysql_query($sql) OR die(mysql_error());
            $row = mysql_fetch_array($result);   
            $location="unbekannt";
            //Wurde Parameter übergeben?
            if(isset($_GET['plz'])){ 
                include_once("zugangsdaten.php");
                $sql = "select ort from ort where plz='".$_GET['plz']." LIMIT 2"; 
                $result= mysql_query($sql) OR die(mysql_error()); 
                while($row = mysql_fetch_array($result)){ 
                    echo "\n\t parent.add_option('".$row['ort']."');";
                } 
            } 
        ?>
        }
    }
    if(self==top){
        document.location='index.htm';
    }else{
        get_location();
}

//-->
</script>

Kann mir bitte einer helfen ?
Evtl. ist es nur ein Tippfehler
 
Vieleicht sollte ich noch dazu sagen das ich die GeoDB nutze:
Sie hat folgende Struktur:
Code:
     id     int(11)                                                                                               plz     int(5)                                                                                                 ort     varchar(50)
Ich mache das genze weil ich vorher sofort die ganze Combobox mit gut 45000 Postleitzahlen gefülllt habe und das genze sehr langsam wurde.
Ich weis AJAX währe evtl. die bessere Lösung nur habe ich nach 3 Stunden suche das gefunden und es erfüllt auch sein Zweck.
 
Moin,

wie heisst denn nun die Tabelle?
ort oder plz ?:-)

Weil einmal steht dort dieses:
Code:
"select ort from plz where plz='".$_GET['plz'];

und dann jenes
Code:
"select ort from ort where plz='".$_GET['plz']

(Welchen Zweck erfüllt dabei eigentlich das 1. Query :confused: )
 
Ich habe versucht dein Beispiel nachzugehen.
Der erste Query ist die indexdatei der 2 welche die datenbank durchsucht.
So habe ich es zumindest verstanden.
Ich habe mich aber beim 2 vertippt. Sie sollte eigetlich so aussehen:
Code:
<script type="text/javascript">
<!--

function get_location(){
    if(typeof parent.dummie=='object' && typeof parent.document.frm.loc_out=='object'){
        objList = parent.document.frm.loc_out;
        objList.options.length=0;
         <?php
            $location="unbekannt";
            //Wurde Parameter übergeben?
            if(isset($_GET['plz'])){ 
                include_once("../zugangsdaten.php");
                $sql = "select ort from ort where plz='".$_GET['plz']." LIMIT 2"; 
                $result= mysql_query($sql) OR die(mysql_error()); 
                while($row = mysql_fetch_array($result)){ 
                    echo "\n\t parent.add_option('".$row['ort']."');";
                } 
            } 
        ?>
        }
    }
    if(self==top){
        document.location='index.htm';
    }else{
        get_location();
}

//-->
</script>

die tabelle ist meine SQL-Tabelle.
Die Tabelle heisst "ort" und hat die Spalten "id", "plz" und "ort".
mit
Code:
 $sql = "select ort from ort where plz='".$_GET['plz']." LIMIT 2";
sage ich doch selektier den spaltennamen ort aus der Datenbank wo die plz=$gesendeteplz ist.
So habe ich deine Beispiele verstanden.
Danke für die schnelle antwort
 
Zurück