Zum Inhalt springen

Schaltflächen in Formular


Sebi80

Empfohlene Beiträge

Wenigstens konnt ich der zuständigen schon mal vertickern, dass man ne Homepage mit PHP nicht in ein paar Tagen macht. Schon gar nicht wenn man selber noch nicht wirklich viel damit zu tun hatte :)

Kann ich mich wenigstens dann mal wieder in Ruhe hinsetzen und die Sache weiterlernen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Antworten 105
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

Das klappt nun aber nur wenn mit Cookies gearbeitet wird oder?

Ich seh nirgends, dass eine Session-ID übergeben wird.

Aber korregier mich wenn ich falsch liege.

Hi, also Sessions haben zum Glück nichts mit Cookies zu tun, es ist egal ob jemand im Browser Cookies aktiviert hat oder nicht, da die Daten ja Serverseitig gespeichert werden und die Sessionid wird nicht übergeben, sondern ist auch Serverseitig hinterlegt und ortientiert sich an dem Browser, mit dem die Session erzeugt wurde. Der Browser welche die Session erzeugt hat, kann auch nur auf die Sessiondaten zugreifen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jupp. Aber es muss doch die Session-ID von der einen zur anderen Seite übergeben werden. Oder täusch ich mich da. Zumindest hab ich das nun schon öfter gelesen.

Da gibts dann noch den Fall, das vom webserver her irgendwas ausgeschalten ist, globale Variablen zum Beispiel und lauter so Zeugs.

Aber ich muss mir noch mal die info.php auf dem webserver stellen und nachschauen.

Da mein Testserver heut nicht wirklich ging konnt ich mich auch leider noch nicht darum kümmern zu testen ob alles funktioniert. Werds dann heut abend mal auf meinen Server daheim stellen und ausprobieren.

Deshalb bin ich leider auch noch nicht weiter wegen der Aktualisierungsprobleme.

Werd aber nachher mal danach suchen. Bisher kann ich das auch nicht erklären anhand des Codes. Der scheint mir so ziemlich verständlich und die Ursache noch unklar.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hehe, .. also nochmal.

Du erzeugst eine Session auf dem Server was bedeutet: Beim erstem session_start(); wird auf dem Server wird nun eine physische Datei erzeugt, in welche du Variablen speichern kannst. Mit $_SESSION["Sessionvariable"] = $Variable;

Die SessionID ist nur der "Dateinamen", du musst nix auf eine andere Seite übergeben, du musst lediglich die Variablen welche du zuvor registriert hast wieder abrufen, solange sie noch aktiv ist. Dazu reicht es die session wieder aufzunehmen, mit session_start(); Jetzt schaut der Server, ob bereits eine Session für den Browser registriert wurde, die Variablen welche registriert wurden, stehen dann wieder zur Verfügung.

$Variable = $_SESSION["Sessionvariable"];

Nun ist der Vorherig gespeicherte Wert wiederhergestellt und liegt in der $Variable

Und ja :D es gibt immer viele Wege nach rom, sobald eine Programmiersprache ins Spiel kommt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Da gibts dann noch den Fall, das vom webserver her irgendwas ausgeschalten ist, globale Variablen zum Beispiel und lauter so Zeugs.

register_globals = off

Ist standard und sollte aus sicherheitsgründen auch nicht geändert werden.

Du müsstest lediglich auf alles was mit session. zu tun hat ansehen. Hierzu ein Link mit den Begriffserklärungen.

LINK

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jupp du hast natürlich recht.

Es werden ja nur noch die Ergebnisse an den Browser geliefert. Aber irgendwo, wenn auch nicht durch PHP selber muss ja eine Identifikation vorgenommen werden, damit dier User der richtigen Session zugeordent wird :)

Naja manchmal empfiehlt es sich doch nicht zuuuuu viele Tutorials zu einem Thema durchzulesen. Das verwirrt mehr als es bringt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier noch der Quelltext ohne Bug. Musste es wegen der 10.000 Zeichenbegrenzung hier im Forum auf die PHP Tags begenzen.

<?

session_start();

// Sessiondaten wiederherstellen.

$S_STELLE = $_SESSION["S_STELLE"];
$S_STANDORT = $_SESSION["S_STANDORT"];

// Sessiondaten in (A)ktive Variable hinterlegen.

$A_STELLE = $S_STELLE;
$A_STANDORT = $S_STANDORT;

// Prüfen auf Formulardaten. Sessionvariable neu-registrieren.

if ( $HTTP_POST_VARS["STELLE"] != "" ) {
// Formulardaten in (A)ktive Variable hinterlegen.
$A_STELLE = $HTTP_POST_VARS["STELLE"];
$_SESSION["S_STELLE"] = $HTTP_POST_VARS["STELLE"];
}

if ( $HTTP_POST_VARS["STANDORT"] != "" ) {
// Formulardaten in (A)ktive Variable hinterlegen.
$A_STANDORT = $HTTP_POST_VARS["STANDORT"];
$_SESSION["S_STANDORT"] = $HTTP_POST_VARS["STANDORT"];
}

print "VariableA : ".$A_STELLE."<br>";
print "VariableB : ".$A_STANDORT."<br>";

print "FormularA : ". $HTTP_POST_VARS["STELLE"]."<br>";
print "FormularB : ".$HTTP_POST_VARS["STANDORT"]."<br>";

?>
<html> ...

<?
print $A_STELLE;
?>

<?
print $A_STANDORT;
?>[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das klappt eigentlich wunderbar nun.

Jetzt hab ich da noch eine Frage zum Verständnis.

Da ich ja 5 bis 6 verschiedene Seiten habe mit Variablen, muss ich die praktisch schon von Seite 1 an alle in der Session definieren?

Und dann hab ich noch für folgende Situation ein kleines Problem.

Ich gebe auf Seite 1 Daten ein und gehe dann auf Seite 2 gebe Daten ein und gehe auf Seite 3. Von dort geh ich wieder zurück auf Seite 2 und auf Seite 1.

Die Daten sind dann alle in den Feldern eingetragen. Herrlich :)

Gebe ich aber auf Seite 1 DAten ein und gehe auf Seite 2 gebe dort Daten ein und gehe dann zurück auf 1 sind die Daten von 1 da. gehe ich wieder auf 2 sind dort keine eingetragen.

Das heisst ich muss auf jeden Fall vorwärts gehen damit sie gespeichert sind.

Mit dem Zurück Button gibts anscheinend ein kleines Problem :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das klappt eigentlich wunderbar nun.

Jetzt hab ich da noch eine Frage zum Verständnis.

Da ich ja 5 bis 6 verschiedene Seiten habe mit Variablen, muss ich die praktisch schon von Seite 1 an alle in der Session definieren?

Richtig.

Und dann hab ich noch für folgende Situation ein kleines Problem.

Ich gebe auf Seite 1 Daten ein und gehe dann auf Seite 2 gebe Daten ein und gehe auf Seite 3. Von dort geh ich wieder zurück auf Seite 2 und auf Seite 1.

Die Daten sind dann alle in den Feldern eingetragen. Herrlich :)

Gebe ich aber auf Seite 1 DAten ein und gehe auf Seite 2 gebe dort Daten ein und gehe dann zurück auf 1 sind die Daten von 1 da. gehe ich wieder auf 2 sind dort keine eingetragen.

Das heisst ich muss auf jeden Fall vorwärts gehen damit sie gespeichert sind.

Mit dem Zurück Button gibts anscheinend ein kleines Problem :)

Meinst du vorwärts und rückwärts gehen mittels Button im Browser, oder Button auf deiner Seite? Falls ersteres, wirst du das höchstens per JavaScript hinbekommen, dass die dann da wieder stehen. Dann stehen die aber nicht in der von PHP verwendeten Session, sondern in einem Cookie o.ä..

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mir ist da grad noch eine Idee gekommen.

Ich habe ja 2 Buttons in einem Formular.

Kann ich für den Button zurück nochmals im schon vorhandenen Formular ein neues Formular machen und dann dort per Submit auf die Seite vorher verlinken?

Oder gibt das einen Konflikt mit dem anderen (aussenherum liegenden) Formular?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also du könntest natürlich wie wenn du die nächste seite aufrufen würdest einfach die Variablen übergeben und auf Seite 1 prüfen, welche Variablen vorhanden sind und diese dann einfach in die Session schreiben... Dann reicht aber kein history.back() oder so, sondern musst für jede Seite das dann normal übergeben, wie wenn du es an die nächste Seite übergeben würdest...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also du könntest natürlich wie wenn du die nächste seite aufrufen würdest einfach die Variablen übergeben und auf Seite 1 prüfen, welche Variablen vorhanden sind und diese dann einfach in die Session schreiben... Dann reicht aber kein history.back() oder so, sondern musst für jede Seite das dann normal übergeben, wie wenn du es an die nächste Seite übergeben würdest...

Ich verlinke ja den "Zurück-Button" momentan mit:

<a href="bewerbung1.php"><input type="button" value="<<" name="ZURUECK">

Meinst du, ich muss das so machen oder meinst du was anderes?

Soll ich die Variablen dann vorne im Link mit übergeben?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja ich glaube du verstehst da was nicht richtig.

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.

Also:

<form action="file.php" method="post"> Durch das Formular und der Action wird bei Submit immer auf diese Seite gegangen. Und dann auch die Daten in die Session geschrieben.

Wenn ich nun aber Submit beim Zurück.Button verwende würde er auch auf diese Seite gehen und nicht auf die gewünschte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Achsooo... hmmm....

Das Problem ist also, dass du die Daten nicht einfach wo anders hin submitten kannst, da das Ziel ja oben definiert ist...

Könntest natürlich ein verstecktes Formular noch dazumachen, in das per JS die eingegebenen Daten übertragen werden und was dann als submit-Ziel ein anderes Ziel hat... :rolleyes: oder aber du gehst zuerst zurück und lässt dich dann wieder auf die Seite 1 zurückleiten, nachdem er die Daten in die Session gespeichert hat (einfach einen zusätzlichen Wert in der Session, der die Seite angibt, auf die weitergeleitet werden soll und wenn eine 0 da drin steht, soll er nicht weiterleiten...)

Also das wäre zumindest etwas, was mir so auf Anhieb dazu einfallen würde... :rolleyes:

Vielleicht kann man das Ziel aber ja auch dynamisch austauschen lassen, wenn man über die entsprechenden Buttons geht... *weitergrybl*

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jupp das ist genau mein Problem.

Und bisher komm ich auf keine Lösung.

Ich versteh auch nicht ganz wie du das mit dem versteckten Formular meinst.

Mir fällt im Moment auch nichts mehr aus was ich ausprobieren könnte.

Naja mal ne Nacht drüber schlafen und dann sollte ich wieder klarer denken können ;)

Aber danke nochmal.

P.S. für ZuViel

Ja manchmal drück ich mich net klar genug aus :) aber ich versuchs nochmal.

Ich habe ein Formular:

< form action="....php">

...

<type=submit ....> Button für vorwärts (also von Seite 2 auf 3)

<a href=.....><type=button></a> Button für zurück (also von Seite 2 auf 1)

</form>

Ich übergebe ja die Daten nun per Session von der einen auf die andere Seite.

Das klappt auch sehr gut, wenn ich den Submit (Vorwärts)-Button drücke.

Beim anderen Button (für zurück) aber übernimmt er die Daten eben nicht in die Session.

D.h. wenn ich auf Seite 1 die Daten eingeben habe und auf Seite 2 merke, dass auf Seite 1 was fehlt oder falsch war, wobei Seite 2 aber schon teilweise oder ganz ausgefüllt ist, und ich gehe dann zurück verfallen alle Daten von Seite 2.

Und das will ich irgendwie verhindern und weiss nicht genau wie.

Link zu diesem Kommentar
Auf anderen Seiten teilen

OK.Wir reden immer noch aneinander vorbei.Kleines Beispiel.

Auf Seite 1 kann man sich für eine Stelle bewerben.

Jetzt werden aber von uns 4 verschiedene Stellen ausgeschrieben und wenn der User auf Seite 2 nachdenkt ob er sich für die richtige bewirbt, geht er zurück und schaut nach.

Das kann ich durch nichts abchecken, dass liegt in Händen des Users.

Deshalb will ich ja irgendwie die Daten, die er bis dahin auf Seite 2 schon eingegeben hat gleich speichern wenn er zurück geht.

Eine Routine ob Pflichtfelder ausgefüllt wurden prüft sowas bereits beim Wechsel von Seite 1 auf 2 usw...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ;)

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