Ankündigung

Einklappen
Keine Ankündigung bisher.

PLZ API in Formular einbinden

Einklappen

Neue Werbung 2019

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

  • PLZ API in Formular einbinden

    Hallo liebe PHP'ler

    ich bin neu hier. Mein Name ist Maurice. Ich bin ehrenamtlich in einem örtlichen Verein tätig und stehe vor einem "Problem"

    wir haben bei uns im Verein ein PHP Formular um uns div. Daten mitzuteilen.

    leider kommt es hier immer wieder zu falschen Eingaben (PLZ - ORT).
    Nun bin ich über google auf https://www.postleitzahlapi.de/ gestoßen.
    Hier gibt es wohl eine Datenbank die anhand der PLZ den Ort ausgibt.

    Ich habe mir den Code auch schon angeschaut, dieser wird auf der Homepage ja gezeigt.

    PHP-Code:
    <?php $curl curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://api.postleitzahlapi.de/v1/postcodes/14728/"CURLOPT_RETURNTRANSFER => trueCURLOPT_ENCODING => ""CURLOPT_MAXREDIRS => 10CURLOPT_TIMEOUT => 30CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1CURLOPT_CUSTOMREQUEST => "GET"CURLOPT_HTTPHEADER => array( "accept: application/hal+json""x-api-key: a0B1c2D34D5c6b7a8" ), )); $response curl_exec($curl); $err curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" $err; } else { echo $response; }
    Nun stellt sich mir die Frage wie ich das jetzt so einbinde, dass es in meinem Formular bei eingabe des Feldes "PLZ" das Feld "ORT" automatisch ausfüllt.

    Der Code meines Formulares sieht folgendermaßen aus:

    PHP-Code:
     <td>PLZ: <sup>*</sup></td>
      <td class="td_left"><input type="text" name="plz" tabindex="5" size="40" value="<?php echo $plz?>" pattern="[0-9]{5}" title="Bitte die 5-stellige Postleitzahl eingeben" required ></td>
     </tr>
     <tr>
      <td>Ort: <sup>*</sup></td>
      <td class="td_left"><input type="text" name="ort" tabindex="6" size="40" value="<?php echo $ort?>" required ></td>
     </tr>

    Kann hier jemand mit diesen Infos helfen oder benötigt es noch weitere Infos? ( Ich bin realtiv unbewandert in sachen PHP )

  • #2
    Wenn du das direkt bei der Eingabe prüfen willst, musst du beim verlassen des PLZ feldes einfach einen AJAX-Request an die API schicken und das Ergebnis der Response (die Stadt) dann in das Stadt-Feld eintragen.

    Da du hier jedoch einen API-Key auch noch nutzt, würde ich den AJAX-Request an ein zweites PHP script auf deinem Webhost machen, wo dann via CURL der Request an die API geschickt wird und das Result der Response zurück an dein erstes Script. Auf diese Weise bekommt der Besucher deiner Website den API-Key gar nicht erst zu sehen.

    Kommentar


    • #3
      Hallo cpcoder,
      das hört sich gut an.
      Leider bin ich trotz googeln nicht wirklich schlau draus geworden wie ich das Umgesetzt bekomme

      Kommentar


      • #4
        Du brauchst aber keine API. du kannst dir die Postleitzahlen auch als CSV hier unter zuordnung_plz_ort.csv herunterladen.
        Wenn du daraus PLZ und Ort extrahierst sind das nur 227KB, die könnte man sogar gleich mitsenden und sich AJAX sparen, wenn man will.

        Kommentar


        • #5
          Moin,
          Ich hatte halt über Die API nachgedacht, da diese immer aktuell gehalten wird.
          Da wäre ich bei der CSV Ja gehalten diese ständig zu überprüfen. Was wiederum, da es eben ein Ehrenamt ist vlt. nicht so gut wäre. Die anderen Vorstandskollegen sind nicht in der Lage das Ansatzweise zu verstehen. Es sollte möglichst Wartungsarm funktionieren, da Ja auch mal der Vorstand wechseln kann.

          Aber eben auch bei einer CSV weiß ich nicht wie ich den Request direkt in das Feld eintrage , sodass ich mir den Rest des Scripts nicht zerschieße, Es werden hinterher alle Daten des Formulars als Excel Anhang per Mail gesendet .

          Kommentar


          • #6
            Zitat von Devilor Beitrag anzeigen
            Hallo cpcoder,
            das hört sich gut an.
            Leider bin ich trotz googeln nicht wirklich schlau draus geworden wie ich das Umgesetzt bekomme
            Wenn ich bei Google "Ajax+Examples" eingebe, bekomme ich gleich auf der ersten Seite jede Menge Beispiele für AJAX Requests.

            Nicht böse sein, aber wir bieten hier keine Schritt für Schritt Lehrgänge an. Versuch das erst einmal anzupacken und wenn du dann immer noch Probleme hast, kannst du dich mit dem entsprechenden Code gerne wieder hier melden und dir wird weitergeholfen.

            Kommentar


            • #7
              es gibt auch freie Dienste...
              HTML-Code:
              <!DOCTYPE html>
              <html lang="de">
               <meta charset="utf-8">   
                <title>plz</title>
                <script>
              (async () => {
                let plz = '50858'
                const getPlzInfo = async plz => await (await fetch(`http://api.zippopotam.us/de/${plz}`)).json()
                const plzInfo = await getPlzInfo(plz)
                Object.keys(plzInfo).length && console.log(plzInfo)
              })();
              </script>

              Kommentar

              Lädt...
              X