Frage von beantworter2001, 48

PHP funktioniert $_POST an zwei ähnlichen Stellen in einem Script verschieden?

Code sieht in etwa so aus

<?php SESSION_START(); if($_GET["a"] == "One"){ ?> html

<?php } $name = $_POST["nameb"];

if($_GET["a"] == "Two"){
  echo "$name aus Two";
}
if($_GET["a"] == "Three"){
  echo "$name aus Three";
}

?>

Sorry für unübersichtlichen aufschrieb. Was ich eigentlich sagen will ist, dass ich am Anfang die Eingabe eines HTML-Felds mithilfe von POST in einer Variable (hier $name) gespeichert hab. Dann hab ich zwei If-Abfragen, in der 1. geht es, in der 2. nicht, obwohl sie gleich aufgebaut sind. Vielleicht ist noch wichtig, dass in $_GET["a"] == "Two" ein Knopf ist, der a auf Three setzt, wenn ich ihn drücke, verändert sich die Seite also.

Antwort
von mastema666, 28

In welchen Zeilen ist das Problem denn / wo funktioniert es nicht? (also bei dem: http://pastebin.com/4RgD1V80)

Allgemein würde ich bei Problemen mit $_POST (bzw äquivalent GET etc) mal an den Anfang der Datei ein 

var_dump($_POST);

setzen, dann siehst du zumindest direkt, ob die Daten überhaupt übermittelt wurden oder du den Fehler wo anders suchen musst.

Kommentar von beantworter2001 ,

also in stepThree geht es, die Ausgabe von var_dump ist: array(4) {
["name_b"]=>
string(8) "testName"
["amount_b"]=>
string(0) ""
["notice_b"]=>
string(0) ""
["action_bCreate"]=>
string(0) ""
}
testName

in step Four nicht, die Ausgabe ist: array(1) {
["action_bConfirm"]=>
string(6) "submit"
}
Das Objekt wurde ausgeliehen.

Kommentar von mastema666 ,

Also heißt das ja zumindest schon mal, dass in "step Four" die Daten gar nicht erst übergeben wurden. 

Wenn ich deinen Code richtig verstehe, dann soll an der Stelle doch etwas in $_POST stehen, das in Step 3 in das Formular eingegeben wurde, und genau das scheint doch auch zu funktionieren (also 

array(1) {
["action_bConfirm"]=>
string(6) "submit"
}

ist doch das, was man in dem Formular übermitteln kann, das einzig andere wäre ja "Abbrechen", mehr hast du in dem Formular ja gar nicht. Hast du da vielleicht was vergessen, was da noch mit rein sollte?

Kommentar von beantworter2001 ,

Also ich würde gerne nicht nur das aus Step 3, sondern auch das aus Step 2 an Step 4 übergeben. Da Step 3 nur eine Kontrollfrage ist, brauch ich die Daten aus Step 2 in Step 4, nicht in Step 3. Wenn ich also beim 2. Schritt bin und auf erstellen klicke, würde ich gerne zur Kontrollfrage, die Daten aber irgendwie zwischenspeichern, falls die Kontrollfrage positiv ausfällt. Als ich jeden Step in einem einzelnen Script gemacht hatte, konnte ich das über Sessions machen

Kommentar von mastema666 ,

Kannst du doch immer noch, wenn du eine Variable oder so länger "mitschleppen" willst würde ich auch da Sessions benutzen, also wenn du in Schritt 2 z.B. eine Variable $bla hast, die du in Schritt 4 wieder brauchst, dann speicher die so lange in einer Session.

Ansonsten ist das aus Step 2 natürlich nicht mehr in $_POST wenn du bei Step 4 ankommst, also die Daten in Step 2 in einer Session speichern und in Step 4 dann nur prüfen, ob die Kontrollfrage aus Step 3 stimmt und dann mit den Daten aus der Session weiter arbeiten.

Antwort
von happyfish2, 33

Schwer zu sagen ohne den kompletten Code zu kennen.

Antwort
von LiFe0, 30

Bitte poste mal den ganzen code auf pastebin... sonst ist es zu unübersichtlich

Kommentar von beantworter2001 ,

http://pastebin.com/4RgD1V80


aus dem anderen script wurde create=stepOne und die id des eintrags übergeben

und ich weiß, dass der code nicht sehr elegant ist ;D

ich bin fast blutiger anfänger.. bis gestern hatte ich das ohne $_GET und auf 3 skripte verteilt xD

Kommentar von LiFe0 ,

versuchmal vardump($_get) und vardump($_POST) Am anfang des scripts

Kommentar von LiFe0 ,

auaerdem anstatt dem & reicht & und mach besser anstatt

Keine passende Antwort gefunden?

Fragen Sie die Community