Zum Inhalt springen

Schaltflächen in Formular


Sebi80

Empfohlene Beiträge

Ich würde mit nur einer Php Seite und jeweils zwei Includes pro Formularseite arbeiten.

Im Hintergrund hast Du ja noch deine Steuervariable von welcher Seite du kommst.

Beim aufrufen der (ich nenne sie mal) main.php machst Du folgendes:

- Includieren der form[X]_SAVE.inc.php

- wobei [X] hier der Wert deiner Steuervariable für die Seite ist

- Und die Include Datei einfach die Daten der zuletzt "gesehenen" Formularseite in der Datenbank speichert.

hier kannst Du dann auch übersichtliche Abfragen und Fehlerbehandlungen einbauen.

- Überprüfen ob ich über einen "Weiter" oder einen "Zurückbutton" gekommen bin. Entspricht, wie schonmal gepostet,


if(isset($_POST['btnWeiter'))
...
else
...
[/PHP]

- Bei Weiter die Steuervariable für die aktuelle Formularseite um 1 erhöhen, bei Zurück um 1 verringern.

- Includieren der form[X].inc.php

- wobei [X] hier der Wert deiner Steuervariable für die Seite ist

- Und die Include Datei einfach das Formular der aktuellen Seite ausgibt

Zu guter letzt musst Du noch ein paar Dinge überprüfen wie

- Ist überhaupt die Steuervariable gesetzt? Wenn nicht dann zeige Seite 1 an und ein Speichern ist gar nicht nötig

- Bin ich auf der letzten Seite?

- etc...

Im Grunde würde ich, und ich hab das damals so gemacht, aber ich möchte Dir nicht nochmal was Neues aufs Auge drücken, das ganze völlig dynamisch über ein System komplett ohne "physikalische Formularseiten" machen, sondern alles komplett in einer Datenbank ablegen. Aber ist ein bisschen viel Aufwand das jetzt nochmal umzuschreiben.

Viel Erfolg. Evtl. hilfts was ;)

Ich kann die Vorteile dieser Variante nachvollziehen aber ich bin mir nicht sicher wie ich das mit dieser dämlichen Seite umsetzen kann.

An sich bin ich eh der Meinung die Seite ist total unfelxibel, allein schon durch die ganzen Tabellen.

Ist eh in Planung die Seite so in zwei oder drei Jahren neu zu machen, aber bis dahin muss eine funktionelle Lösung her. :)

Aber danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Antworten 105
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

J

Das klappt nur wenn ich einen Submit Button drücke, dann werden die Daten in die Session gespeichert,

da der Zurück Button aber kein "Submit" ist scheint er da nix zu speichern.

Generell zu deiner Aussage, das ist falsch. Du hast ja aus jedem Formular egal ob du per Submit oder einfach so auf die Seite gehst, die Daten zu verfügung entweder aus der Session, da bereits vorher registriert oder aus dem vorherigem Formular. Es handelt sich bei deinem Problem nur um eine nicht durchgeplante Sache du musst dir vorher überlegen, was wie laufen soll und dann anfangen es so zu gestalten.

Die Aussage von Crash ist einfach falsch, Session Variablen kannst du zu jedem Zeitpunkt in deinen Scripten definieren, muß nicht auf die erste Seite alles sein.

session_unset("STANDORT") würde die Sessionvariable STANDORT löschen.

Es hat nix mit dem Button zu tun ob Session_Variablen gesetzt werden, es gibt eine If Schleife in deinem Script, die schaut ob Daten vom Formularfeld gesetzt werden. Wenn Daten aus Formula, schreibt er in Sessionvariable.

Du hast doch nur 2 Variablen im Formular 1, diese setzte du dann beim absenden in Formular 2. !! Wenn du zurück gehst, fragst du die beiden Variablen aus Formular 2 natürlich auch in 1 ab und wenn du vor gehst, dann fragst du sie in Formular 3 ab. Ist doch ganz simpel :o

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dann frage ich mich echt langsam wieso das nicht gespeichert wird bei mir.

Die Daten aus Seite 1 sind gespeichert aber die von Seite 2 eben nicht insofern ich zurückgehe.

Die sind nur gespeichert wenn ich noch auf Seite 3 gehe und dann zurück auf 2.

Aber vielleicht hab ich da wieder irgendwas nicht richtig gemacht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

[...]Die Aussage von Crash ist einfach falsch, Session Variablen kannst du zu jedem Zeitpunkt in deinen Scripten definieren, muß nicht auf die erste Seite alles sein.[...]
Ich habe nirgendwo behauptet, dass man das nicht KANN...

[...]muss ich die praktisch schon von Seite 1 an alle in der Session definieren?[...]
Das war einzig und alleine darauf bezogen, dass man alle Variablen da drin speichern muss, wenn man mit Sessions arbeiten will - nicht wann das geschieht... Hätte da gestanden "schon auf seite 1", wäre es falsch gewesen... so nicht.

Dann frage ich mich echt langsam wieso das nicht gespeichert wird bei mir.[...]
Gehst du mittels history.back()-Funktion zurück? Falls ja, dann musst du das wie schon von mir erwähnt mittels JavaScript (das ist was anderes als Java!) erledigen. Mit reinem PHP hast du da dann keine chance - da müsstest du dann die Daten irgendwohin übergeben, was bei der history.back()-Funktion nicht automatisch passiert...

P.S.:

JavaScript sollte man so wenig wie möglich benutzen, denn JavaScript wird Clientseitig ausgeführt und kann ausserdem vom User abgeschaltet werden. Und was bringt es dir, wenn der User das deaktiviert hat und es dann nicht funktioniert, obwohl es anders programmiert auch dann noch gehen würde.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe nirgendwo behauptet, dass man das nicht KANN...

Das war einzig und alleine darauf bezogen, dass man alle Variablen da drin speichern muss, wenn man mit Sessions arbeiten will - nicht wann das geschieht... Hätte da gestanden "schon auf seite 1", wäre es falsch gewesen... so nicht.

Hauptsache du weisst was du meinst :cool:

Gehst du mittels history.back()-Funktion zurück? Falls ja, dann musst du das wie schon von mir erwähnt mittels JavaScript (das ist was anderes als Java!) erledigen. Mit reinem PHP hast du da dann keine chance - da müsstest du dann die Daten irgendwohin übergeben, was bei der history.back()-Funktion nicht automatisch passiert...

P.S.:

JavaScript sollte man so wenig wie möglich benutzen, denn JavaScript wird Clientseitig ausgeführt und kann ausserdem vom User abgeschaltet werden. Und was bringt es dir, wenn der User das deaktiviert hat und es dann nicht funktioniert, obwohl es anders programmiert auch dann noch gehen würde.

Er geht nicht über history.back() zurück .. er geht zurück in dem er einen ganz normalen link benutzt und da fängt das Problem an. Wenn es kein Submitbutton ist, werden die ausgefüllten Daten aus dem Formular auch nicht übergeben beim zurück gehen ! Die Formulardaten werden erst ans Ziel gesendet, wenn du den Submit Button betätigst.

<form action="Zieldatei.php" Hier gibst du das Ziel an, wo die Daten dann abgefangen werden.

Bedeutet, wenn der Benutzer auf Seite 2 ist und zurück geht, dann sind die noch nicht abgesendeten Daten von Seite 2 weg, und ?? das doch völlig wurscht, er geht auf Seite 1 checkt was er eingegeben hat und geht wieder auf 2 dann gehts weiter. Sobald 2 abgesendet wurde, stehen die Daten auch zur Verfügung. Du kannst ja eine Nachricht machen, wenn er auf den Zurück - Link geht, das er die eingegebenen Daten verliert, dazu müsstest du allerdings php und java kombinieren, indem du die fragliche Session Variable auf Inhalt abfragst. isset() wenn variable gesetzt, dann keine nachricht, ansonsten nachricht zeigen, bei ja zurück bei nein nichts machen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jupp m3rry, ich denke darum werd ich nicht kommen.

Hauptsache die Daten werden beim vorwärtsgehen übernommen.

Das mit der Nachricht ist eine gute Idee.

Dank dir.

Nachdem die mir gesagt haben, dass vom Aussehen etwas noch nicht passt und das alles ja Tabellen sind werd ich mich jetzt sowieso wieder ne zeitlang damit beschäftigen die Tabellenstruktur zu verändern :)

Gruss Sebi

P.S. wär halt schöner gewesen wenn die Daten nicht verloren gehen. Aber egal.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nachdem die mir gesagt haben, dass vom Aussehen etwas noch nicht passt und das alles ja Tabellen sind werd ich mich jetzt sowieso wieder ne zeitlang damit beschäftigen die Tabellenstruktur zu verändern :)

Gut! Dann schmeiss die Tabelle gleich komplett raus und nimm <div> bzw. <ul><li> etc.

Das macht das ganze gleich mal sehr viel schlanker und übersichtlicher ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gut! Dann schmeiss die Tabelle gleich komplett raus und nimm <div> bzw. <ul><li> etc.

Das macht das ganze gleich mal sehr viel schlanker und übersichtlicher ;)

Würdest du das auch machen, wenn du weisst, dass die Seite beizeiten sowieso komplett neu gemacht wird?

Ich eher nicht.

Was ist <ul><li> ????

Link zu diesem Kommentar
Auf anderen Seiten teilen

Würdest du das auch machen, wenn du weisst, dass die Seite beizeiten sowieso komplett neu gemacht wird?

Ich eher nicht.

Was ist <ul><li> ????

Mit <ul><li> meinte ich Listen. Die sind manchmal auch sehr gut für wenig Code und viel Effekt ;)

Ansonsten sag ich mal ganz klar ja!

Denn wenn Du das ganze auf <div> aufbaust, sollte das Redesign danch keine große Mühe mehr bereiten, da ja dann Inhalt und Design getrennt sind.

Wenn Du jetzt hergehst und die Tabellen wieder komplett umbaust, musst Du das Ganze dann nochmal beim Redesign machen.

Mit <div> musst Du beim Redesign nur minimal eingreifen und nur die Stylesheets ändern.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hm. Ich hatte kurz auch schon den Versuch gestartet, dies zu tun.

Die Seite hat aber eine feste Größe und schwebt ab einer bestimmten Auflösung mittig auf grauem Hintergrund. Das hat dann irgendwie nicht vernünftig funktioniert, weil die Sachen per CSS immer am Browserrand orientiert waren und ich es nicht geschafft habe Sie an irgendwas in der Seite auszurichten.

Der Effekt war, dass ich ab einer bestimmten Auflösung den Text ausserhalb der Seite hatte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

[...]Du kannst ja eine Nachricht machen, wenn er auf den Zurück - Link geht, das er die eingegebenen Daten verliert, dazu müsstest du allerdings php und java kombinieren, indem du die fragliche Session Variable auf Inhalt abfragst. isset() wenn variable gesetzt, dann keine nachricht, ansonsten nachricht zeigen, bei ja zurück bei nein nichts machen.
Nicht Java, sondern JavaScript. Gut, es ginge auch mit Java, aber dafür müssen ja noch ein paar Voraussetzungen mehr vorhanden sein auf dem Server und dann könnte man das auch direkt komplett mit Servlets und Applets machen...

[...]Wenn du per Button auf der Seite meinst, dann musst du beim zurückbutton entweder ein fenster aufpoppen lassen, was fragt, ob die gerade eingegebenen Daten verworfen oder gespeichert werden sollen (und dann entweder einfach nur zurück zur vorherigen Seite gehen, oder aber das erst speichern und dann auf die vorherige Seite zurückgehen).

*mal hoch deut und nichts dazu sag*

Ich würde, nachdem ich mir das alles nochmal durchgelesen habe, eine Seite machen, die dann die entsprechenden Formulare includet je nachdem was in der Session steht, welche Seite aufgerufen werden soll... So hast du zwei Fliegen mit einer Klappe geschlagen.

1.) beim "Zurück gehen" wirds auch gespeichert (du gehst ja nicht mehr wirklich zurück, sondern eigentlich vor und rufst nur die entsprechende seite nochmal auf)

2.) es ist übersichtlicher und einfacher zu lesen, da Code und Inhalt getrennt sind

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich hab da nun ein etwas anderes Problemchen :)

Bei meinen Sessions werden alle Textfelder gespeichert. Leider beinhaltet das Formular auch noch eine Gruppe Radio Buttons sowie Text-Areas und Checkboxen.

Wollte mich nur mal vergewissern, was diese Elemente für Werte zurückgeben.

Ich denke, dass Radio Buttons (2 Stück an der Zahl) den Wert "true" oder "false" zurückgeben und die Checkbox ebenfalls oder?

Ums genauer zu sagen, ich habe für die Auswahl der Anrede zwei Radio Buttons für Herr und Frau

OHerr OFrau

value="m" und value="w"

Und weiss jemand wieso der Inhalt der Text-Areas nicht in der Session gespeichert wird? Muss ich da eine andere Methode verwenden als bei normalen Textfeldern?

Danke für Antworten

Gruss Sebi

Link zu diesem Kommentar
Auf anderen Seiten teilen

Und weiss jemand wieso der Inhalt der Text-Areas nicht in der Session gespeichert wird?

Gruss Sebi

Nein, eine TextArea bedeutet ja nur das die Eingabe über mehrere Zeilen funktioniert. Die Formularübergabe und das speichern der Variable bleibt identisch. Ich tippe auf einen Fehler im Quelltext.

Bei Checkboxen hast du immer das Problem, das du hart-verdrahtet die Checkbox auch wieder abfragen musst, checkbox = true then Variable = Mann ansonsten Frau.

Um das ikm Nachhinein zu ändern, musst du dir den Quelltext ansehen.

Schöner ist hier ein Listenfeld.

<select name="anrede">

    <option value="Männlich">Männlich</option>

    <option value="Weiblich">Weiblich</option>

  </select>

Hier werden die Variableninhalte mit dem Listenfeld übergeben, eine zweite Abfrage auf den Inhalt inkl umwandeln ist nicht notwendig.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sry, aber das mag jetzt etwas schroff klingen...

Wir sind nun bei 90 (!) Antworten auf ein Thema, das eigentlich mit einem einzigen Satz nämlich, wie schonmal geäussert, "Mach ein Session/Form Tutorial durch", erledigt sein müsste.

Ich bin ja auch immer stolz wenn ich auf Fragen sinnvolle Antworten geben kann, aber das hier verfehlt irgendwie den Sinn dieses Forums.

Wir machen hier mit Dir eine Schritt für Schritt Schulung.

Finde doch mal selbst die kleinen Dinge raus.

Der Anfang ist immer ein schönes Tutorial. Man lernt immer nur durch eigenes Rumprobieren, Scheitern, Debuggen, Heulen, Lachen und dann evtl. anderen helfen.

Glaub mir. So schön das ist wenn sich 100 Leute einklinken und einem die Probleme für den Moment lösen, so schlecht ist es für deine zukünftige Technik an Probleme ranzugehen ud sie zu lösen.

Denn morgen ist das Forum down (Gott bewahre! ;)) und dann??

Viel Erfolg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich kann dich ja verstehen. Man hat mir sogar schon angeboten, dass mir jemand die komplette Arbeit abnimmt, was ich aber nicht wollte.

Das ich momentan so ausführliche Hilfe gut finde liegt einzig daran, dass mir die Zeit fehlt, um so schnell die Grundlagen aufzuholen welche mir für einige Sachen fehlen.

Glaub mir ich bin eigentlich nur noch am PHP Tutorials lesen und versuche auch Lösungen selber zu finden. Eigentlich sollte man aber am Anfang anfangen und nicht irgendwo in der Mitte. Wenn mein Formular abgeschlossen ist werde ich mich auch postwendend wieder den Grundlagen widmen, was ich im Moment auch mache in der Zeit, die mir bleibt.

Ich bin dankbar für jede Hilfe und dass ein Beitrag über 90 Beiträge hat liegt auch etwas daran, dass ich nicht für ein neues Problem ein neuen aufmachen möchte, es hat ja eh was mit dem Formular zu tun.

Denke aber nicht, dass ich mich hier rechtfertigen muss für Sachen die ich tue. Dir steht frei mir zu helfen wie jedem anderem auch. Ich bin dir auch sehr dankbar für deine Hilfe (wie bei jedem anderem auch) aber ich nehm dir schon gar nicht übel wenn du dich aus der Diskussion ausklinkst.

Grüsse

Sebi

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eigentlich habe ich nur eine Frage, ob etwas geht oder nicht.

Und zwar will ich ja die Daten dann per E-Mail verschicken mit Dateianhang.

In den Tutorials werden die Anhänge als Datei auf dem Webserver gespeichert.

Gibt es eine Möglichkeit diesen Traffic zu verhindern und die Daten vom Rechner des Nutzers direkt anhängen?

Da drei Dokumente mit jeweils bis zu 1 MB doch etwas viel ist wäre das zwecks Traffic nämlich sehr vorteilhaft.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich hab mir grad ein Tutorial zu Email-Versand angeschaut und verstehe folgenden Code nicht ganz.

Was passiert dort?

$dateienname=array();
foreach($datei_name as $himbeere)
{
array_push($dateienname,$himbeere);
}[/PHP]

Ich verstehe nicht wofür die Variable $himbeere steht.

Die Variable kommt nur in dieser Textpassage vor.

Kann dazu jemand was sagen oder braucht man da noch mehr infos?

Wenn ich nämlich den Quellcode so übernehme um zu testen gibt er mir eine Fehlermeldung an mit dieser Zeile:

[PHP]
foreach($datei_name as $himbeere)

Warning: Invalid argument supplied foreach() in xxx.php on line 3.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mit array_push() werden neue Einträge ans Array angehängt.

Wenn ich das richtig sehe, dann wäre $datei_name ein Array, das du dem Array $dateienname hinzufügst und dessen jeweiliger grad bearbeiteter Inhalt in dem "foreach-Bereich" temporär als Variable $himbeere auftaucht. Du gehst quasi das Array durch und hängst jeden Eintrag ans Array $dateienname an.

Sollte $datei_name kein Array sein, so sollte es direkt mittels

array_push($dateienname,$datei_name);

funktionieren. Dann brauchst du ja den foreach-Bereich nicht...

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...