HTML Formular unterschiedliche Ereignisse

Koyote

Volt-Modder(in)
Hallo,

um es kurz und ehrlich zu sagen: Ich muss etwas mit HTML und PHP auf die Beine stellen und habe dazu wenig Lust.
Habe mich nur quer eingelesen und eigentlich ist auch alles easy aber da ich sonst eher in Java/C#/VB.net programmiere fällt es mir schwer mit der Scriptsprache zurecht zu kommen, wenn es um Variablen und Formulare geht. Solang ich nicht direkt ins geschehen eingreifen will ist alles in Ordnung, aber wenn ich eben sozusagen wie mit einem ActionListener in Java mir Ereignisse abfangen will um darauf zu reagieren geht es den Bach runter. Mein Problem hört sich für mich von aussen einfach zu lösen an aber komme mit den Sprachen nicht weiter.

Mir ist klar, dass ich ein Formular erst nach dem Senden auswerten kann.
Habe nun aber folgendes Problem:

Ich habe ein Formular mit mehreren Textboxen und 2 Listboxen.
Abgesendet wird das durch einen Button.
Nun möchte ich folgendes erreichen:
Füllen der Textboxen mit Einträgen aus mysql Datenbank und select eines default Werts ausgewählt durch einen Wert aus der mysql in Abhängigkeit von Elementauswahl auf vorheriger Seite.(Klappt)
Ohne Änderung der (1.) Listbox ganz normaler Scriptablauf und am ende auf senden klicken, ich komme auf meine php Seite, verwerte das ganze und es ist gegessen (das klappt, ist ja auch nicht weiter schwer).
Nun möchte ich jedoch bei Veränderung der (1.) Listbox die Seite mit einem URL Parameter erneut aufrufen, jedoch MIT Übergabe der Werte in den Textboxen & Listboxen um für diese Auswahl die Seite anzupassen.

Also dachte ich mir:
Ok, ich mache mir eine if Abfrage:
webseite.php?seite=1

if seite = 1
Mir den Elementname von der vorherigen Seite rausholen und dann für die Listboxen die Werte aus der mysql lesen, in Variablen speichern und dann in die Listboxen schreiben.(funktioniert)

if seite = 2
Hole ich mir mit GET alles aus der URL


Also habe ich versucht beim onchange event mich auf die Seite zu navigieren mit allen Werten der Textboxen in der URL als Übergabe heißt also webseite.php?seite=2&wert1=wert1&wert2=wert2...

Ja und da habe ich dann gemerkt.... Moment mal, das kann ja so garnicht gehen. Ich darf ja nicht einfach die Werte aus nem Forumular auslesen, dass ich garnicht abgeschickt habe, ich will es ja eigentlich abschicken aber eben nicht auf die Seite, die bei der Form in action steht sondern eben auf mich selbst und dann mit den Werten in der URL. Ich weiß, dass ich auch bei onchange die post methode aufrufen kann aber dann habe ich ja die Falsche datei in action = falschewebseite.php

Kann ich also irgendwie
- so etwas wie 2 actions initialisieren, heißt wenn ich auf den Button klicke schickt er mich auf seite1.php und wenn ich über den onchange Befehl gehe ruft er mir seite2.php bzw. sich selbst auf? Dann würde eine if abfrage am Anfang ja funktionieren, wenn ich per Parameter überprüfe, ob ich jetzt alle Daten mit POST einlesen kann, oder ob ich dann im leeren suche. Also im Prinzip nicht per URL sondern per POST und mit abschicken des Formulars aber eben mit 2 Adressen, einmal die Zielseite ohne Veränderung der Listbox und einmal mit Veränderung der Listbox auf die eigene Seite mit den bereits eingegebenen Werten.
- die Daten per JavaScript z.b. doch direkt aus dem unabgeschickten Formular aufrufen und in einem eigenen Script mir die URL aus den Daten basteln?

Programmieren macht mir ja echt Spaß, bin auch kein Idiot aber html und php raubt mir gerade den letzten Nerv, vor allem weil ich keine Lust habe das zu schreiben. Ist zwar nur 0,0001% vom Gesamtvorhaben und wenn es nicht klappt ist es kein Beinbruch aber eben unschön und deshalb möchte ich es hinbekommen.

Würde mich über Hilfe freuen.

Gruß Koyote
 
Das klingt zwar ziemlich wirr. Aber ich vermute mal, das es hier um ein mehrseitiges Formular. Die gängigsten Vorgehensweisen sind in solchen Fällen entweder das wechseln des Formulares über Javascript mit Speichern der Daten in Variablen oder besser noch in einem Array oder über PHP mit z.B Session. Du nimmst also deine PHP-Datei und lieferst das erste Formular, sendest es ab und speicherst die Infos in einer Session. Dann lieferst du das zweite Formular mit der Action auf Seite 2. Bei liefern des Formulares kannst du auch direkt bereits gesendete Daten in das Formular einarbeiten.

Aber wenn es wirklich erst 0,00001% aller Aufgaben ist, solltest du dir überlegen, dich mit den Websprachen wirklich auseinander zusetzen oder das Projekt abzugeben. Aber ich sage dir gleich. Es lohnt sich. Denn der Browser wird immer wichtiger. Es gibt mittlerweile unfassbar viele RIA Lösungen und es hat sehr viele Vorteile gegenüber nativen Anwendungen. Umsonst wäre das lernen also definitiv nicht ;)
 
Ich finde die Websprachen eben extrem umstandlich. Warum gibt es nicht einfach 2 actions die man definieren kann :nene:

Habe mich eben mal in das Thema Sessions eingelesen und soweit ich das verstanden habe kann ich wohl ein Formular absenden, die Daten in Session Variablen speichern um dann später wieder darauf zuzugreifen.
Muss ich morgen mal testen.
Das erste was mir jetzt in den Kopf kommt ist, dass ich dann trotzdem das Problem nicht lösen kann, weil ich eben nur auf die eine Seite navigieren kann.

Habe dazu aber auch noch etwas mit Buttons gefunden: Formulare mit mehreren Submit-Buttons - Webkompetenz
Vielleicht kann ich durch unsichtbare Buttons und einen manuellen eventaufruf beim change des Listboxitems das ganze realisieren. Muss ich mir morgen mal nach der Sessions geschichte ansehen, vielleicht komme ich auch auf noch eine andere Idee.

Danke schonmal für den Denkanstoß.


Naja, das Projekt ist zu 85% fertig und habe noch ein paar Monate zeit. Allgemein fällt mir der Umgang mit php und html auch nicht schwer aber die Formulare nerven teilweise ein wenig.


EDIT:
Habe jetzt nachdem ich mich etwas weiter eingelesen habe dazu entschlossen auf Papier einen logischen Plan zu machen, wie ich alle Daten mit Formularen so übergeben kann, dass sie am ende dort langen, wo ich sie haben möchte und diesen strikt nachprogrammiert. Hat nun auch geklappt.
Habe nun einen Button, der direkt zur Zielwebseite führt mit einer 1 in der url und ein onchange event mit einer 2 in der url. Die 2 nimmt dann die mitgebrachten Daten auf und sendet sie wieder zurück und die 1 lässt einen entsprechend weiter verfahren.


Super Denkanstoß aber von Dir :daumen: Und bin bisschen motiviert mich mehr einzulesen ;)
 
Zuletzt bearbeitet:
Achsooo jetzt habe ich aber auch verstanden, was du willst :lol:

Das hätte ich mit Onchange auch gelöst. Allerdings ist die Sache mit dem versteckten Button totaler Blödsinn. Man kann das action-Attribut auch per JS direkt bearbeiten. Das ist mit Abstand die eleganteste Lösung. Schließlich kann Javascript den kompletten DOM manipulieren. ;)
 
Habe auch keine verstecken Buttons nun. Ich habe wie gesagt einmal das normale action-attribut der form, welches ich mit JV onchange auslöse und dann das andere auf einem Button, welchen der User klickt:daumen:

Über die macht von JS muss ich mich auch noch etwas informieren, wollte eigentlich ohne arbeiten, falls jmd JS deaktiviert hat aber kommt man wohl nicht drum herum.
 
Wenn du es so dynamisch willst, dann nicht. Du kannst höchstens mit einem Aktualisierungsbutton arbeiten.
 
Zurück