Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Formular an PHP senden und auf HTML bleiben

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Formular an PHP senden und auf HTML bleiben

    Moin moin

    Habe folgendes Problem: Ich habe ein HTML-Formular (in einer WebGIS-Anwendung), das die eingetragenen Daten per submit an eine action-PHP sendet, welche die Daten in eine Datenbank schreibt. Das funktioniert alles einwandfrei. Allerdings wird anschließend die PHP im Browser geöffnet und es erscheint eine weiße Seite, da die PHP nichts per echo ausgibt. Das möchte ich verhindern, also meine Daten absenden und anschließend auf der selben Seite mit dem Formular bleiben. Nach Möglichkeit sollte auch durch das Klicken des Absenden-Buttons eine Javascript-Funktion aufgerufen werden, in der dann weitere Dinge mit meiner Karte geschehen sollen.
    Ich habe schon zahlreiche Foren durchkämmt, gesucht und probiert, allerdings hat keine der vorgeschlagenen Lösungen das erwünschte Resultat erbracht.

    So sieht es aus:

    Code:
    menu.setContent('<h1>Datensatz bearbeiten</h1>' +
    	'<form method="post" action="action.php">' +
    	     /* ... Formular ... */
    	     '<p> <input name="speicher_button" value="Speichern" onclick="weitermachen(); return true;" type="submit" size="30"></p>' +
    	'</form>');
    menu.show();
    In "action.php" werden meine Daten verarbeitet, in der Funktion "weitermachen()" sollen weitere JavaScript-Anweisungen ausgeführt werden.
    (Das menu.setContent() und menu.show() spielt keine Rolle, das hat was mit meiner Sidebar in der WebGIS-Anwendung zu tun.)

    Hat jemand einen Tipp, wie ich das hinbekommen könnte? Vielen Dank!

    Mafu


  • #2
    Hi,

    Möglichkeit 1: du könntest am ende der php Datei ein header location setzten, auf die Formular seite

    Möglichkeit 2: du benutzt z.b. jquerys ajax funktion und vermeidest den seiten wechsel komplett. Die Daten werden damit im Hintergrund abgesendet und du kannst entsprechende Statusmeldungen an die Seite mit dem Formular übergeben (Status: ok oder fehler ...). Das ganze lässt du starten sobald auf den absenden button geklickt wird, dann kannst du deine js funktionen ausführen und wenn die abgearbeitet sind schicks du die formular daten per ajax an die php Datei.

    So wäre auch sicher gestellt das deine js funktionen abgearbeitet sind bevor die seite auf die php Datei wechselt.

    $("#absenden").on("click",function(){
    weitermachen();
    /* Hier die ajax funktion rein */
    return false;
    });
    http://api.jquery.com/jquery.ajax/
    http://api.jquery.com/serialize/

    Kommentar


    • #3
      Schau dir mal das Affenformular (Standardverfahren) an.
      PHP-Klassen auf github

      Kommentar


      • #4
        Vielen Dank für eure Tipps!

        Ich habe jetzt folgende Zeile ans Ende der PHP geschrieben:

        header('Location: WebGIS.html');
        Logischerweise lädt er die Seite jetzt neu.. kann ich mit der header-Funktion direkt zu meiner JS-Funktion springen? Oder kann die WebGIS.html irgendwie überprüfen, von wo der Aufruf kam?

        Kommentar


        • #5
          Zitat von Mafu Beitrag anzeigen
          kann ich mit der header-Funktion direkt zu meiner JS-Funktion springen?
          Nein

          Zitat von Mafu Beitrag anzeigen
          Oder kann die WebGIS.html irgendwie überprüfen, von wo der Aufruf kam?
          Nein, da HTML.
          Zitat von nikosch
          Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

          Kommentar


          • #6
            Gibt es denn eine andere Möglichkeit, direkt zu der Funktion zu gelangen?

            Kommentar


            • #7
              onLoad?
              Zitat von nikosch
              Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

              Kommentar


              • #8
                in der dann weitere Dinge mit meiner Karte geschehen sollen.
                Würdest Du eine präzise Frage stellen, könnte man auch darauf antworten.

                Ich würde in diesem Fall auch Ajax ne Chance geben.
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  Ok, ich habe eine Datenbank, in der verschiedene Restaurants mit Informationen wie Name, Adresse, Telefonnummer etc. eingespeichert sind. In der HTML können die Restaurants auf der Karte als Marker angezeigt werden. Wenn man auf die Marker klickt, öffnen sich Popups mit den Informationen. Nun gibt es dort ein Feld "Angaben ändern", wo sich das erwähnte Formular in einer Sidebar öffnet. Nun sollen mit Klick auf den Speicher-Button die Daten in die Datenbank geschrieben werden (was auch passiert) und anschließend die Sidebar geschlossen und das Popup (mit den neuen Daten) wieder angezeigt werden, er soll also auch an der selben Stelle der Karte bleiben. Diese Dinge sollen in der JS-Funktion erledigt werden.
                  Mit der Header-Funktion wird leider die Karte neu geladen, sodass man nicht mehr auf das Restaurant gezoomt ist. Ich brauche also eine Möglichkeit, die action.php im Hintergrund auszuführen und die Karte genau an der Stelle zu lassen, wo sie war, als die Daten abgeschickt wurden.
                  Ich hoffe, mein Problem ist jetzt etwas verständlicher.
                  Von Ajax habe ich leider keine Ahnung, deshalb konnte ich mit den diesbezüglichen Tipps auch nicht viel anfangen.

                  onLoad bringt mir auch nicht viel, weil die Funktion dann ja auch beim ersten Laden der Karte aufgerufen werden würde.

                  Kommentar


                  • #10
                    Von Ajax habe ich leider keine Ahnung, deshalb konnte ich mit den diesbezüglichen Tipps auch nicht viel anfangen.
                    Dann lies dich ein. Mithilfe bestimmter JS-Frameworks wie jQuery, kann man relativ einfach mit AJAX rumhantieren.
                    Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                    Kommentar


                    • #11
                      sowas in der art, nur mit karte?
                      http://coenraets.org/blog/2011/12/ba...tting-started/

                      Kommentar


                      • #12
                        Ja, vom Prinzip her so eine Art Warenkorb... du klickst auf "In den Warenkorb legen", die Seite bleibt aber genau wie sie war und im Hintergrund wird der Warenkorb geändert.
                        Oder in meinem Beispiel: Kontaktdaten werden geändert, die Karte bleibt wo sie war und die Anzeige wird aktualisiert.
                        Ich dachte halt, dass es da eine relativ simple Lösung geben müsste, damit man die Seite so lässt und nur im Hintergrund was passiert.. aber wenn es die nicht gibt, werde ich es wohl so lassen müssen.

                        Kommentar


                        • #13
                          AJAX heißt deine lösung... wäre zumindest der einfachste und eleganteste weg, um das zu lösen...
                          Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                          Kommentar


                          • #14
                            Kannst du mir etwas genauer erklären, wie genau das aussehen müsste?

                            Kommentar


                            • #15
                              http://api.jquery.com/jquery.get/
                              http://api.jquery.com/jquery.post/
                              Ajax mit JQuery. Dazu muss man sich zumindest ein klein wenig mit JS auskennen, aber für dein Vorhaben ist das unumgänglich. Natürlich kannst du auch andere Frameworks nehmen. Angular.js...
                              Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                              Kommentar

                              Lädt...
                              X