M.Dessel: übernahme PLZ in Formular

Hallo zusammen,
ich habe ein PHP-Formular (nicht erschrecken, weil PHP). In diesem
Formular sind die beiden Eingabefelder PostalCode und City. Dort kann
ich Werte entweder manuell editieren und abspeichern oder mittels
JavaScript einen Ort auswählen und diesen dann in das Feld City übernehmen. Funkioniert auch so weit, so gut.
Ich hab einfertiges Script im Internet gefunden, was mir von der Lösung her sehr gut gefällt, doch leider habe ich keine Ahnung von JavaScript.
Dieses Tool übernimmt leider immer nur in ein Feld, entweder in City oder in PostalCode.
Ist es möglich die beiden JavaScript-Functions so umzuschreiben, dass sie die gefundene Postleizahl in Postalcode und die Stadt in City übernimmt?

Ich habe nachfolgend die beiden Codefetzen mal drangehängt.
Über eine Hilfe würde ich mich sehr freuen

mfg
M.Dessel

Anhang:

<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<lib.abook.php>>>>>>> Dies ist ein Auszug aus dem PHP-Formular
<<<<<<<<<<<<<<<<<<<<<<<<<

..
..
print("        <tr>\n\t");
print("          <td width="20%" class="label">");
print("            $inputfields[4]");
print("          </td>\n");
print("          <td class="inputbox">");
print("            <input type="text" name="PostalCode" size="5" maxlength="5" value="$array[10]">");
print("            <input type="text" name="City" size="25" maxlength="25" value="$array[9]">");

?>
                   <script type="text/javascript">
                     document.write('<input type="button" value="Select ..."'
                                     + ' onclick="window.open('plz_popup_neu.php?'
                                     + 'head=City&form=sof&elem=City'
                                     + '','fpop','width=612,height=150')">'
                                   );

</script>
                 <?

print("          </td>\n");
print("        </tr>\n");

..
..

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<plz_popup_neu.php>>>>>>>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta http-equiv="Content-Script-Type" content="text/javascript">
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <title>Auswahl PLZ</title>
    <script type="text/javascript">
     function parsedSearchParams() {
       var q = location.search.substring(1).split(/[&;]/);
       for (var i=0; i<q.length; i++) {
         var a = q[i].split(/=/);
         if (a[0]) {
           var k = unescape(a[0]),
               v = a[1]? unescape(a[1]) : null;
           if (typeof this[k] != "undefined") {
             if (typeof this[k] != "object") this[k] = [ this[k] ];
             this[k][this[k].length] = v;
           }
           else this[k] = v;
         }
       }
     }

function insertValue(oSel) {
        var oOpener, oForm, oElem;
        if ((oOpener = window.opener) && !oOpener.closed && oOpener.document) {
          if ((oForm = oOpener.document.forms[oPars.form]) && (oElem = oForm.elements[oPars.elem])) {
            oElem.value = oSel.options[oSel.selectedIndex].text;
          }
          else alert("Form element in opener window not found.");
        }
        else alert("Opener window already closed.")

window.close();
      }
      var oPars = new parsedSearchParams();
      //document.write(oPars.head);

</script>
  </head>
       <?php
             require("include/config.inc.php");

$sqlQuery = "SELECT * FROM $db_Postleitzahlen";
print("      <form action=""><p>");
print("        <select name="standort" onchange="insertValue(this)">");
print("          <option value="">Bitte wählen Sie!</option>");
                   $connID = @mysql_pconnect($db_host, $db_user, $db_pass) or
                           die($errorMsg[1]."<br>ErrorNo. ".mysql_errno()."<br>MySQL said: ".mysql_error());
                   @mysql_select_db($db_db, $connID) or
                           die($errorMsg[2]."<br>ErrorNo. ".mysql_errno()."<br>MySQL said: ".mysql_error());
                   $result  = @mysql_query($sqlQuery, $connID) or die($errorMsg[3]);
                   if ($result){
                     while ($array = mysql_fetch_array($result)){
                       $id  = $array['plzID'];
                       $plz = $array['PLZ'];
                       $ort = $array['Ort'];
print("                <option value="$id">$plz $ort</option>");
                     } //endwhile
                   } //endif
print("        </select>");
print("      </p></form>");

?>
  </body>
</html>

  1. hi,

    Ist es möglich die beiden JavaScript-Functions so umzuschreiben, dass sie die gefundene Postleizahl in Postalcode und die Stadt in City übernimmt?

    ja, das sollte machbar sein.

    Ich habe nachfolgend die beiden Codefetzen mal drangehängt.
    Über eine Hilfe würde ich mich sehr freuen

    wo ist deine analyse des vorhandenen scriptes?
    was macht es, wann und warum?

    bitte zeige etwas mehr eigeninitiative, als lediglich ein "gefundenes" script hier vorzulegen, und von uns anpassung an deine wünsche zu verlangen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi wahsaga,
      Du kannst mir glauben, wenn ich mich an dieses Forum wende, dann habe ich schon einige Zeit mit dieser Sache auseinandergesetzt.
      Über eine erliche Hilfe von Euch würde ich mich aber trotzdem freuen.

      gruss
      Manfred

      1. hi,

        Du kannst mir glauben, wenn ich mich an dieses Forum wende, dann habe ich schon einige Zeit mit dieser Sache auseinandergesetzt.

        dann lass uns doch bitte an deinen gedankengängen bzgl. dieses scriptes und seiner funktionsweise teilhaben.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hi,
          was den von Dir genannten Thread angeht, da hast Du natürlich völlig recht. Dafür habe ich mich auch schon endschuldigt.
          Was Deine Art angeht, wie Du mit hilfesuchenden Fragestellern umgehst, finde ich nicht i.O.
          Ich habe mir gestern mal die Mühe gemacht und viele Deiner Antworten die Du so gibst durchzulesen.
          Die laufen meistens nach dem Schema ab oft gute Fragen runter zu putzen.
          Ich habe hier oft schon gute Hilfestellungen bekommen, diese zählt leider nicht dazu.
          Ich finde solche Antworten schden diesem Forum eher als das sie ihm nutzen.
          Ein kleiner Tip noch.
          Ich programmiere schon seit Jahren in diversen anderen Programmiersprachen und bin z.Z. gerade dabei mich in der Web-Programmierung schlau zu machen. Die ist leider nun mal etwas anders.
          Es kann nicht gleich jeder Profi sein .

          Gruss Manfred

          1. Hallo,

            Verzeihung, aber mit dem Code, den du gepostet hat, vergraulst du jeden, der dir helfen möchte. Natürlich kannst den Helfenden helfen, dir zu helfen. Beispielsweise ist der PHP-Code samt Datenbankoperationen i.d.R. vollkommen irrelevant, wenn es um ein HTML- und JavaScript-Problem geht.

            Darüber hinaus ist es hier Sitte, dass dem Fragenden geholfen wird, das Problem selbst zu lösen. Wenn du hier mit einem fremden Script, null Ahnung von JavaScript und somit null Vorarbeit ankommst, ist die Wahrscheinlichkeit besonders gering, dass dir jemand hilft. Ohne JavaScript-Kenntnisse kann dir auch niemand Tipps geben, sondern du willst, dass dir jemand die Funktion umschreibt und du sie ohne Verständnis einbaust. So läuft es hier nun einmal nicht, hier gibt es Hilfe zur Selbsthilfe, keine kostenlosen Dienstleistungen. Wenn du willst, dass dir jemand die Arbeit komplett abnimmt, dann engagiere einen Experten.

            Die Funktion parsedSearchParams extrahiert die Query-String-Parameter und speichert als Objekteigenschaften, insbesondere oPars.form und oPars.elem.
            insertValue kopiert den Text der gegenwärtigen Auswahl des select-Feldes (http://de.selfhtml.org/javascript/objekte/options.htm) in das angegebene Formularfeld im Ausgangsfenster. Gemäß print("<option value="$id">$plz $ort</option>"); ist das die Postleitzahl und der Ortsname sein. Wenn du Postleitzahl und Ortsname nach Feldern trennen willst, kannst du z.B. mit .text.substring(0, 5) die (fünfstellige) Postleitzahl und mit .text.substring(6) den Rest des Strings, also den Ortsnamen extrahieren.

            Mit opener.document.forms.sof.elements.City.value sprichst du den Wert des Formularfeldes City im Ausgangsfenster an (siehe http://de.selfhtml.org/javascript/objekte/forms.htm, http://de.selfhtml.org/javascript/objekte/elements.htm), den Wert des anderen Feldes mit opener.document.forms.sof.elements.PostalCode.value.
            So kannst du die fremden komplizierten Funktionen verwerfen (obwohl sie ihrerseits einige Vorteile haben) und eine eigene einfache Funktion insertValue schreiben, die die Postleitzahl in das PostalCode-Feld schreibt und den Ortsnamen in das City-Feld.

            Vom Prinzip her:

            function insertValue (option_element) {  
               var auswahltext = option_element.options[option_element.selectedIndex].text;  
               opener.document.forms.sof.elements.PostalCode.value = auswahltext.substring(0, 5);  
               opener.document.forms.sof.elements.City.value = auswahltext.substring(6);  
               window.close();  
            }
            

            Wenn dir das alles gar nichts sagt und du es nicht eingebaut bekommst, informiere dich bitte über die Grundlagen von JavaScript. Dieses Forum ist eine *Ergänzung* zur SELFHTML-Dokumentation.

            Mathias

            1. Hallo Mathias,
              vielen Dank für Deine Antwort.
              Es lag mir fern, eine komplette Antwort geliefert zu bekommen.
              Klar ich noch ein Anfänger. Um auf die Frage zurückzukommen, wie ich
              für meinen Teil an die Lösung herangegangen bin:

              1. Ich habe versucht einen Befehl nach dem anderen im SELFHTML-
                   Handbuch nachzuforschen.
              2. Ich habe versucht, jede Zeile mit document.write(...); zu loggen.
                   Was mir auch ein Stück weitergeholfen hat.

              Resultat: Ich habe den Ablauf ein wenig verstanden, aber ich konnte
                        irgendwie nicht feststellen, wo und wie die Parameter hin
                        und her übergeben werden.
                        Somit war ich auch nicht in der Lage den Code zu erweitern.

              Da ich nicht wusste, an welcher Stelle das Problem bei mir überhaupt begraben war habe ich die Teile des Codings mitgeliefert.
              Sonst aus keinem anderen Grunde.
              Was hätte es denn gebracht, wenn ich Euch meine geistigen Ergüsse der Problemuntersuchung auch noch mitgeliefert hätte?
              Ansonsten bin ich der gleichen Meinung wie Du.
              Ich finde es nur nicht gut, wenn man anhand einer vielleicht nicht ganz korrekt gestellten Fragestellung (eines Anfängers) das ganze durch den Kakao zu ziehen.

              Zitat: (Es gibt keine dummen Fragen, es gibt nur dumme Antworten)

              Gruss Manfred

              1. Da ich nicht wusste, an welcher Stelle das Problem bei mir überhaupt begraben war habe ich die Teile des Codings mitgeliefert.
                Sonst aus keinem anderen Grunde.

                Das war doch das Problem, wie jetzt schon mehrmals gesagt wurde, der PHP Code macht das ganze noch verwirrender und ist für eine JS Frage auch unrelevant. Du häätest nicht deinen Quellcode posten sollen, sondern wenn überhaupt den der im Browser ankommt. Ich hatte auch mal kurz versucht da durchzusteigen, aber mir war das dann zuviel.

                Was hätte es denn gebracht, wenn ich Euch meine geistigen Ergüsse der Problemuntersuchung auch noch mitgeliefert hätte?

                Das wir vielleicht schneller verstanden hätten was da passiert und passieren soll?

                Ansonsten bin ich der gleichen Meinung wie Du.
                Ich finde es nur nicht gut, wenn man anhand einer vielleicht nicht ganz korrekt gestellten Fragestellung (eines Anfängers) das ganze durch den Kakao zu ziehen.

                Wer hat was durch den Kakao gezogen?

                Ich hab nur Hinweise gelesen die, wenn du sie aufgenommen hättest, evtl. geholfen hätten das wir die helfen können.

                Struppi.

      2. P.S.:

        Du kannst mir glauben, wenn ich mich an dieses Forum wende, dann habe ich schon einige Zeit mit dieser Sache auseinandergesetzt.

        ja, ich seh's ...

        scnr,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }