Merkwürdige Fehlermeldung

Vertigo21

Erfahrenes Mitglied
Immer wenn ich meine Testseite aufrufe bekomme ich diese Meldungen:

"Notice: Undefined index: wert1 in C:\php\008.php on line 9"

"Notice: Undefined index: wert2 in C:\php\008.php on line 10"

Hat man aber einmal eine Berechnung durchgeführt und die Felder wieder gelöscht, tauchen die Meldungen nicht mehr auf. Ich benutze ein Windows 2003 Server OS mit IIS Version 5.2

Code:
    <form method="post">
    	Wert 1: <input name="wert1" size="5">
    	Wert 2: <input name="wert2" size="5"><p>
    	<input type="submit" value="Anzeigen">
    	<input type="submit" value="Eingaben löschen"><p>
      </form>
      
      <?
    	$wert1=$HTTP_POST_VARS["wert1"];
    	$wert2=$HTTP_POST_VARS["wert2"];
    
    if ($wert1!="" or $wert2!="")
       {
    
    	echo "Sie haben ",$wert1," und ",$wert2," eingegeben.<p>";
    	echo $wert1," + ",$wert2," ergibt ",$wert1+$wert2,"<br>";
    	echo $wert1," - ",$wert2," ergibt ",$wert1-$wert2,"<br>";
    	echo $wert1," * ",$wert2," ergibt ",$wert1*$wert2,"<br>";
    	
    	if($wert2==0)
    	 {echo $wert1," / ",$wert2," kann leider nicht berechnet werden.<br><br>";
    	  echo $wert1," % ",$wert2," kann leider nicht berechnet werden.";
    	 }
    	else
    	 {echo $wert1," / ",$wert2," ergibt ",$wert1/$wert2,"<br><br>";
    	  echo $wert1," durch ",$wert2," geteilt ergibt einen Rest von ",$wert1%$wert2;
    	 }
       }
      ?>
 
Ich denke mal dass
$wert1=$HTTP_POST_VARS["wert1"];
$wert2=$HTTP_POST_VARS["wert2"];
Hier das Problem liegt. Anscheinend kennt er diese Variablen nicht. Mach mall anstat dem, dasss:
$_REQUEST["wert1"];
$_REQUEST["wert2"];

$HTTP_POST_VARS ist veraltet. Wenn das auch nicht geht Teste mal noch mit $isset davor ob die Variablen (bessergesagt der Index) initalisiert wurde...

MFG
redX
 
Vertigo21 hat gesagt.:
Hat man aber einmal eine Berechnung durchgeführt und die Felder wieder gelöscht, tauchen die Meldungen nicht mehr auf.
...ist doch logisch.
Diese Variablen existieren nur, wenn du das Formular sendest. Rufst du diese Seite auf anderem Wege auf>kein Formular gesendet>keine Variablen vorhanden.
 
Jetzt habe ich das nochmal mit ISSET ausprobiert- funktioniert auch blendend. Allerdings habe ich jetzt eine neue Fehlermeldung, die immer nach der einer Berechnung auftaucht:

Notice: Use of undefined constant wert1 - assumed 'wert1' in C:\php\008.php on line 12

Notice: Use of undefined constant wert2 - assumed 'wert2' in C:\php\008.php on line 15

Code:
<form method="post">
    	Wert 1: <input name="wert1" size="5">
    	Wert 2: <input name="wert2" size="5"><p>
    	<input type="submit" value="Anzeigen">
    	<input type="submit" value="Eingaben löschen"><p>
      </form>
      
      <?
    
    if (isset($_POST["wert1"])) {$wert1=$_POST[wert1];}
    else {$wert1=0;}
    
    if (isset($_POST["wert2"])) {$wert2=$_POST[wert2];}
    else {$wert2=0;}
    
     if ($wert1!="" or $wert2!="")
      {
    	echo "Sie haben ",$wert1," und ",$wert2," eingegeben.<p>";
    	echo $wert1," + ",$wert2," ergibt ",$wert1+$wert2,"<br>";
    	echo $wert1," - ",$wert2," ergibt ",$wert1-$wert2,"<br>";
    	echo $wert1," * ",$wert2," ergibt ",$wert1*$wert2,"<br>";
    	
    	if($wert2==0)
    	 {echo $wert1," / ",$wert2," kann leider nicht berechnet werden.<br><br>";
    	  echo $wert1," % ",$wert2," kann leider nicht berechnet werden.";
    	 }
    	else
    	 {echo $wert1," / ",$wert2," ergibt ",$wert1/$wert2,"<br><br>";
    	  echo $wert1," durch ",$wert2," geteilt ergibt einen Rest von ",$wert1%$wert2;
    	 }
       }
    
      ?>
 
Jawohl. Super.

Bin endlich dazu gekommen es auszuprobieren... :rolleyes:

Habe meinen Code jetzt in

HTML:
 if (isset($_POST["wert1"])) {$wert1=$_POST["wert1"];}
 else {$wert1=0;}
 
 if (isset($_POST["wert2"])) {$wert2=$_POST["wert2"];}
 else {$wert2=0;}
geändert und nun funktioniert alles ohne Fehler. DANKE!
 
Es wäre auch eine etwas kürzere Version mithilfe des ternären Operators möglich:
PHP:
<?php

	$wert1 = ( isset($_POST['wert1']) )
		? $_POST['wert1']
		: 0;
	$wert2 = ( isset($_POST['wert2']) )
		? $_POST['wert2']
		: 0;

?>
 
Zurück