$_SESSION['erg'] aktualisieren

quidnovi

Erfahrenes Mitglied
Hi @ all,

gebe über ein Eingabefeld eine Zahl ein, die mittels der Button "del", "+1" oder "-1" berechnet und dann ausgegeben wird.
Das funktioniert, aber in dem Eingabefeld steht der alte Wert. Erst wenn ich aktualisiere, erscheint der richtige Wert.

Mit folgendem Code geht das Ganze von statten:

PHP:
echo '<table><tr><td align="center">'.
		     '<form action="'.$_SERVER['PHP_SELF'].'" action="post">'.
			 '<input type="text" name="preis" value="'.$_SESSION['erg'].'">'.
			  '<input type="image" src="../../images/gif/but_del.gif" border="0"  name="del" value="del" alt="l&ouml;schen" title="l&ouml;schen">'.
			  '<input type="image" src="../../images/gif/but_plus.gif" border="0"  name="plus"  value="+1" alt="l&ouml;schen" title="l&ouml;schen">'.
			  '<input type="image" src="../../images/gif/but_minus.gif" border="0"  name="minus"  value="-1" alt="l&ouml;schen" title="l&ouml;schen">'.
			 '</form>'.
			'</td></tr></table>';

			if ($del){
				$_SESSION['erg'] = 0;
				if (!isset($_SESSION['erg'])){
					$_SESSION['erg'] = $_POST['erg'];
				}
				echo "Egebnis: ".$_SESSION['erg'];
			}
			else if ($plus){
				$_SESSION['erg'] = $preis + 1;
				if (!isset($_SESSION['erg'])){
					$_SESSION['erg'] = $_POST['erg'];
				}
				echo "Egebnis: ".$_SESSION['erg'];
			}
			else if ($minus){
				$_SESSION['erg'] = $preis - 1;
				if (!isset($_SESSION['erg'])){
					$_SESSION['erg'] = $_POST['erg'];
				}
				echo "Egebnis: ".$_SESSION['erg'];
			}
			else{
				echo "nix";
			}
Nun meine Frage: Wie erreiche ich, dass der neue Wert sofort im Eingabefeld erscheint?

Danke im Voraus.

p.s: Habe das Ergebnis als .gif zum besseren Verständnis angehängt.
Im konkreten Fall habe ich die Zahl 9 eingegeben und mit dem Button "+1" hochgerechnet. Das Ergebnis liefert richtigerweise "10", im Array steht aber immer noch "9"
 

Anhänge

  • ergebnis.gif
    ergebnis.gif
    2,8 KB · Aufrufe: 8
Geh dein Script mal logisch durch, dann siehst du den Fehler.

Erst gibts du den HTML Code aus, mit $_SESSION['erg']. Dann berechnest du $_SESSION['erg'] neu. Der HTML Code ist aber schon ausgegeben. Wie soll sich der HTML Code nun auf den neuen Inhalt von der $_SESSION var ändern?

Führe erst die Berechnung von $_SESSION['erg'] durch und dann die Ausgabe des HTML + die Anzeige vom aktuellen Wert.
 
Hi,

danke für Deine Antwort, jetzt hole ich ein wenig weiter aus.

Der Wert der Variablen kommt von einem Script vorher. In diesem Script wird der Wert der var $_SESSION['erg'] z.B.: mit "9" belegt.
Auf dem nächsten - also in welchem der Wert verändert werden soll - steht nun dieser Wert in dem Eingabefeld.

Hier sollte man nun den Wert mit den Buttons verändert werden können und dieser aktualisierte Wert dann in dem Eingabefeld erscheinen.

Kannst Du mir da einen Weg weisen, wie ich das Ganze realisieren kann?
 
So, habe das mal ohne session gemacht, wie es aussieht, brauche ich kein JavaScript.

Wen's interessiert, hier mal der Code:
PHP:
if ($send == "plus"){
		$erg = ($preis + 1);
	}
	else if($send == "minus"){
		$erg = ($preis - 1);
	}
	else if ($send == "del"){
		echo 0;
	}
	else If($send = "neuberechnung"){
		$erg = $preis;
	}
	else{
		echo "nix";
	}

	
	echo '<table><tr><td align="center">'.
				 '<form action="'.$_SERVER['PHP_SELF'].'" action="post">'.
				 '<input type="text" name="preis" value = "'.$erg.'">'.
				  '<input type="image" src="../../images/gif/but_del.gif" border="0"  name="send" value="del" alt="l&ouml;schen" title="l&ouml;schen">'.
				  '<input type="image" src="../../images/gif/but_plus.gif" border="0"  name="send"  value="plus" alt="l&ouml;schen" title="l&ouml;schen">'.
				  '<input type="image" src="../../images/gif/but_minus.gif" border="0"  name="send"  value="minus" alt="l&ouml;schen" title="l&ouml;schen">'.
				  '<input type="submit"  name="send"  value="neuberechnung" alt="neuberechnung" title="neuberechnung">'.
				 '</form>'.
				'</td></tr></table>';

jetzt kann ich bequem auf den jeweiligen Button klicken, dann wird das Ganze ausgeführt (eigentlich recht einfach - wenn man's hat :-)).
Jetzt muss ich das "nur" noch in die session kleiden.

Solong
 
Jetzt stehe ich im Wald!!

Habe den Code ein wenig modifiziert:

PHP:
if ($preis == ''){
		$erg = 5;
	}
	else{
		if ($send == "plus"){
			$erg = ($preis + 1);
		}
		else if($send == "minus"){
			$erg = ($preis - 1);
		}
		else if ($send == "del"){
			$erg = 0;
		}
		else If($send = "neuberechnung"){
			$erg = $preis;
		}
		else{
		}
	}

	echo '<table><tr><td align="center">'.
				 '<form action="'.$_SERVER['PHP_SELF'].'" action="post">'.
				 '<input type="text" name="preis" value = "'.$erg.'">'.
				  '<input type="image" src="../../images/gif/but_del.gif" border="0"  name="send" value="del" alt="l&ouml;schen" title="l&ouml;schen">'.
				  '<input type="image" src="../../images/gif/but_plus.gif" border="0"  name="send"  value="plus" alt="l&ouml;schen" title="l&ouml;schen">'.
				  '<input type="image" src="../../images/gif/but_minus.gif" border="0"  name="send"  value="minus" alt="l&ouml;schen" title="l&ouml;schen">'.
				  '<input type="submit"  name="send"  value="neuberechnung" alt="neuberechnung" title="neuberechnung">'.
				 '</form>'.
				'</td></tr></table>';

Wenn man also auf diese Seite kommt, ist der Wert mit der Zahl 5 vorbelegt. Nun kann man diesen Wert bequem mit den Buttons hinauf - , bzw. herabzählen, oder man gibt den neuen Wert händisch ein.

Alles kein Problem mehr - IM FIREFOX!!
Wenn ich den IE von Microsoft starte, kann ich nix mehr dazu - oder wegzählen!!

Warum?
 
Zurück