Zum Inhalt springen

Schaltflächen in Formular


Sebi80

Empfohlene Beiträge

Hallo.

Stehe mal wieder vor einem Problem und hoffe auf Eure Hilfe.

Ich habe in einem Formular 3 Schaltflächen.

[Zurück][Weiter][Zurücksetzen]

Problematisch ist die Sache mit [Zurück]und[Weiter]

Wenn der Button "Weiter" gedrückt wird, soll der Benutzer auf die nächste Seite kommen und das Formular per Funktion abgeprüft werden.

Wenn der User auf "Zurück" klickt soll er auf die vorherige Seite zurück kommen und das Formular nicht abgeprüft werden.

Ich habe oben im Kopf des Formulars stehen:

<form name="Formular" action="abc.php" method="POST" onSubmit="return chkFormular()"> 

stehen.

Problem ist, dass sowohl beim "Zurück" als auch beim "Weiter"- Button natürlich dann die nächste Seite aufgerufen wird und abgeprüft wird.

Wie bekomm ich das nun so hin, dass dort unterschieden wird?

Muss ich da bei action und onsubmit eine Bedingung einbauen oder gibts da ne andere Möglichkeit oder wie kann ich das bewerkstelligen?

Vielen Dank für hilfreiche Antworten.

Gruss Sebi

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Antworten 105
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

Hallo Sebi,

Es gibt mehrere Möglichkeiten das zu lösen, wie so oft.

Frag auf dem Zieldokument ab, welcher Button gedrückt wurde, mit php z.b.

if(!isset($_POST["submit2"])){

submit2 ist der Name des betätigten Buttons, jetzt weisst du welcher Button betätigt wurde und kannst z.b in den meta eine umleitung reinlegen, hier kannst du dann auf das zieldokument umleiten. Warum das etwas unschön ist sollte klar sein. Es wird immer das Zieldokument geladen und dann umgeleitet bei weiter / bzw zurück.

Aber, du könntest mit php alle 3 Dokumente vor / zurück und absenden in das gleiche php file stecken und sie je nachdem, welcher button benutzt wurde anzeigen lassen. Aslo nur den HTML Code ändern welche angezeigt werden soll.

Eine zweite Möglichkeit wäre, die beiden Buttons vor und zurück mit java zu hinterlegen hierzu ein Link Selfhtml

Das letzte was mir einfällt, wäre die beiden Buttons vor und zurück keine Buttons sein zu lassen, sondern einfach Bilder zu hinterlegen, wo du dann einen stinknormalen Link drauf legst. Hier würde nur der visualisierte Button wegfallen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hmm also ich denke mal es ist nicht wichtig nach isset($_POST['submit2']) oder so zu fragen. die formulareingaben sollen bei "zurück" ja gar nicht geprüft, also auch nicht gespeichert werden oder?

dann könntest du einfach an das self.location.href deine variablen (wahrscheinlich geht es um die steuervariablen) anhängen und auf der php seite nicht nur nach den $_POST sondern, wenn diese nicht vorhand sind, nach $_GET abfragen


"self.location.href='meineFormular.php?formularseite=" & $formularseite & "&var1=x&var2=x'"
[/PHP]

auf der php seite dann:

[PHP]
$_POST['formularseite'] != "" ? $formularseite = $_POST['formularseite'] : $formularseite = $_POST['formularseite']

so in etwa.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Oh weh, das scheint nicht so einfach zu werden :(

Aber vielen Dank ich versuch mal ob ich das hinbekomme.

Es soll ein Onlinebewerbungsformular werden in mehrerern Schritten. Deshalb muss ich vorhandene Eingaben eigentlich schon in den Variablen speichern, sonst muss man ja alles nochmal eingeben wenn man mal zurück gegangen ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hmm also ich denke mal es ist nicht wichtig nach isset($_POST['submit2']) oder so zu fragen. die formulareingaben sollen bei "zurück" ja gar nicht geprüft, also auch nicht gespeichert werden oder? ..

Doch, genau das möchte er ja, er will die Daten welche im Formular sind auch an die Dokumente zurück und vor übergeben. Die Dokumente zurück und vor sind aber noch 2 weitere Dokumente. Deshalb kann er nicht im Formular ein und das selbe Ziel angeben.

Wenn man auf Variablen in allen php Dokumenten zugreifen möchte, macht man das wie gesagt mit Sessions.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bleibt mir eigentlich nur das Ding mit der Session oder?

Davon hab ich nämlich gar keine Ahnung.

Das heisst aber auch, dass ich ein Login brauche und somit auch eine Datenbank oder liege ich da falsch?

Hmm, nein :P naaja nicht umbedingt, Sessions sind wie Cookies, die Variablen werden gespeichert bis du sagst er soll sie verwerfen, da kann sein ( beim schließen des Browsers oder nach einer Stunde etc.) aber jeder benutzer bekommt seine eigenen session id`s er unterscheidet nach browser.id und pc und hält die Daten so lange vor wie du es vorgibst.

Was genau hast du denn vor erzähl dochmal um was es genau geht und welche mittel du zur Verfügung hast, also du arbeitest mit php und

Link zu diesem Kommentar
Auf anderen Seiten teilen

hmm dann macht die sache aber keinen sinn. denn wieso sollen dann bei klick auf "zurück" die daten nicht überprüft werden?

Weil Sie spätestens wenn man wieder nach Vorne weggeht überprüft wird.

Ich will ja nur verhindern, dass wenn man auf seite 2 ist und noch nichts eingegeben hat beim "Zurück" nicht alles erst eingeben muss nur um was auszubessern.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe ein Formular mit insgesamt 5 Schritten.

Also nicht nur ein Vor und ein Weiter.

Äääh .. da brauchst du keine Daten vorhalten, das macht der Browser selbst. Füll mal ein Formular aus, z.B hier im Forum einen Text.

Danach klickst du auf absenden und benutzt dann den browser zurück button. Die Daten sind noch vorhanden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Weil Sie spätestens wenn man wieder nach Vorne weggeht überprüft wird.

Ich will ja nur verhindern, dass wenn man auf seite 2 ist und noch nichts eingegeben hat beim "Zurück" nicht alles erst eingeben muss nur um was auszubessern.

Aso ok dann vergiß meinen letzten Post, der stimmt zwar inhaltlich aber ja, mit Sessions geht das prima du kannst die Variablen setzen und erst zum Ende alle absenden und "übersenden"

Link zu diesem Kommentar
Auf anderen Seiten teilen

OK.

Ganz von Anfang an.

Ich habe eine vorhandene (nicht von mir gestaltete) Homepage die ich um ein Onlinebewerbungsformular erweitern soll.

Da sich mein Vorgänger anscheinend keinerlei Gedanken gemacht hat, dass auf seine Seite, die von den Maßen her festgelegt ist, kein Platz ist für EIN Formular muss ich das ganze nun in ca. 5 Schritte unterteilen. Daher auch der "Zurück" und "Weiter" Button. Im Prinzip habe ich eine php seite, in der aber eigentlich mehr html ist als PHP. Ich weiss nicht was ich noch mehr erzählen könnte. Wie gesagt, mit Method=Post geht das ja ganz gut insofern man im Browser auf vor und zurück klickt. Dann werden auch die eingegebenen Daten weiterhin in den Feldern angezeigt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja es macht sinn was du möchtest und worauf du achtest und der von uns beschriebene Weg mit session_start() ist auch der Richtige.

Schau einfach mal unter php.net und dort suchst du in der function list nach "session" hier hast du dann alle relevanten Punkte dazu verlinkt.

Du fängst in deinem Dokument Seite 1 an, mit

<?
session_start();
[/PHP]

Dann fügst du Variablen an deine Session an.

Übernimmst du die Variablen aus dem Vorformular und übergibst sie wieder an die Sessionid.

Den zurück / vor Button kannst du dann getrost als Schrift und link einsetzen, die einmalig gesetzten Variablen bleiben erhalten solange die Session aktiv ist.

Wenn er Daten ändert, im Formular übergibst du sie ja wieder in die Session das hat den Vorteil das keine Daten unnötig abgesendet werden und am Ende übergibst du alle in der Session registrierten Variablen in dein Ziel. Irgenwohin sollen die Daten ja gespeichert werden nehme ich an :P

Link zu diesem Kommentar
Auf anderen Seiten teilen

Andere Frage.

Wenn ich mit einem Popup arbeite, dass sich öffnet ,wenn man den Link "Onlinebewerbung" klickt öffnet kann ich das mit den Sessions umgehen oder?

Also wenn ich das Formular auf eine Seite mache und dort alle Daten eingeben lasse.

Ja, klar ist dann von der Hp getrennt und du kannst Grenzenlos lange Formulare erstellen : )

Schön ist es zwar nicht, wenn eine Webseite sich in neue Fenster übergibt aber sicher einfacher zu gestalten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja das ist dann auch schon das nächste Problem, dass ich noch nicht angegangen bin. Die Daten sollen dann in einer Email an die Personalabteilung geschickt werden und die Session danach praktisch wieder gelöscht werden bzw. deren Daten.

Ganz zu schweigen mit dem am Ende des Formulars fälligen Dateianhang :(

Ich nehme an, die Sache mit der Session ist zeitaufwendiger als die mit dem Popup oder?

Link zu diesem Kommentar
Auf anderen Seiten teilen

ach, alles halb so wild ^^

Jau, das mit den Sessions ist aufwendiger, aber nicht allzusehr.

Die Session wird nur für den PC & Browser gehalten, wenn du das definierst, egal wieviel User gleichzeitig ein Formular ausfüllen die kommen sich nicht in die quere, deshalb ist das mit dem löschen nicht so wichtig. Man kann aber eine Session auch am Ende wenn alles übertragen ist killen, mit session_destroy();

Ein Popup ist sehr simpel, mach einfach einen Link.

<a href= "http://www.neueseite.de/xxx.html" target = "_blank" >Onlineformular</a>

Hier verknüpfst du das Dokument.

Du kannst das alles an einen Mailserver übergeben, wenn du einen zur verfügung hast. Das funktioniert auch mit php.

Dazu gibt es die Funktion mail()

Tja und Dateianhänge müsstest du vorher auf deinen Webserver hochladen lassen und sie dann in deiner eMail anhängen. Oder sie auf dem Webserver ablegen und in die eMail einen Link zu den Anhängen hinterlegen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...