Habe Problem mit nem billigen Formular. Need help

Flame

Erfahrenes Mitglied
Hallo @ll.

Ich versuche grad PHP zu lernen. Doch so einfach, wie viele es meinen ist es gar nit.

Ich möchte mit nem formula 2 Zahlen jeweils
- addieren
- subtrahieren
- multiplizieren
oder dividieren

das formula sieht wie folgt aus:

PHP:
<form name="rechnen" id="rechnen" method="post" action="rechnen.php">
  <input name="z1" />Wert 1<p>
  <input name="z2" />Wert 2
  <p> 
    <input type="radio" name="rechne" value="add" checked="checked" />
    addieren
    <br />
    <input type="radio" name="rechne" value="sub" />
    subtrahieren
    <br />
    <input type="radio" name="rechne" value="mul" />
    multiplizieren
    <br />
    <input type="radio" name="rechne" value="div" />
    dividieren<p>
    <input type="submit" name="Submit" value="Abschicken" />
    <input type="reset" name="reset" value="Zur&uuml;cksetzen" />
</form>

Der Php code in der datei rechnen.php sieht wie folgt aus:

<?php
function rechne1()
{
global $z1, $z2;
  if ($sub)
    {
    $erg=($z1-$z2);
	echo "Das Ergebnis ist: $erg";
    }
  if ($add)
    {
    $erg=($z1+$z2);
	echo "Das Ergebnis ist: $erg";
    }
}
?>
<?php
rechne1();
echo "$erg";
?>

Was mache ich falsch?
Er rechnet nix.

Danke FLAmE
 
Zuletzt bearbeitet von einem Moderator:
-

Nutze die globalen Variablen $_POST und $_GET um auf deine übergebenen Variablen zu zugreifen.

Außerdem sind $sub und $add in der Funktion nicht bekannt, somit wird keine der if-Anweisungen erfüllt.
 
erkläre mal bitte näher, wie ich $sub und $add bekannt mache.
denn im formula ist ja der "value" sub und add da.

und was ich mit dem $_get und §_post befahl machen soll, weiß ich auch noch nit.
soweit bin ich ja noch nit. ;)

wie gesagt, ich habe erst vor paar tagen damit angefangen.
das o.g. script habe ich geschrieben, weils ne aufgabe im buch ist.
nur hab ich die buch cd mit den scripten nicht mehr. das buch lag jahre im regal bei mir rum.
nun habe ich gemerkt, das ichs doch mal brauche.

:FLAmE:
 
Komisch:

Jetzt rechnet er zwar alles, aber er gibt auch alles aus. *grml*
Er soll doch bloß das jeweilige Ergebnis ausgeben.

Was mache ich bloß falsch?

Hier der Code:
PHP:
<?php
echo "Die eingegebenen Zahlen waren: $z1 $z2<br><br>";
function rechne1()
{
global $z1, $z2;

  
  if ("sub")
    {
    $erg=$z1-$z2;
	echo "Das Ergebnis ist: $erg<br>";
    }
  if ("add")
    {
    $erg=$z1+$z2;
	echo "Das Ergebnis ist: $erg<br>";
    }
  if ("div")
    {
    $erg=$z1/$z2;
	echo "Das Ergebnis ist: $erg<br>";
    }
  if ("mul")
    {
    $erg=$z1*$z2;
	echo "Das Ergebnis ist: $erg<br>";
    }



}
?>
<?php
rechne1();

?>
 
Zuletzt bearbeitet:
Das Problem ist, dass keine Variablen namens $sub und $add existieren...
Es gibt nur die Variable $rechne, die die Werte sub, add, mul und div annehmen kann. Der Variablenname folgt aus dem name-Atribut des <input>-tags, value beschreibt den Variablenwert. Es müsste also heißen:
PHP:
   if ($rechne=="sub")
    {
    $erg=($z1-$z2);
    echo "Das Ergebnis ist: $erg";
    }
  if ($rechne=="add")
    {
    $erg=($z1+$z2);
    echo "Das Ergebnis ist: $erg";
    }
Des Weiteren ist es nicht nötig, nach dem Funktionsaufruf (rechne1();) noch einmal das Ergebnis auszugeben (echo "$erg";), da dies ja bereits die Funktion erledigt.
Richtig würde das ganze so aussehen (hab es nit ausprobiert und es ist gleich halb 4 ;-)...
PHP:
<?
function rechne1($z1,$z2)
 {
  if($rechne=="sub")
    {
     $erg=$z1-$z2;
    }
  if($rechne=="add")
    {
     $erg=$z1+$z2;
    }
  if($rechne=="div")
    {
     $erg=$z1/$z2;
    }
  if($rechne=="mul")
    {
     $erg=$z1*$z2;
    }
  }
?>

<?
if(isset($z1) && isset($z2))
  {
   echo "Die eingegebenen Zahlen waren: " . $z1 . " und " . $z2;
   echo "Das Ergebnis ist: " . rechne1($z1,$z2);
  }
?>
 
danke xXx

Aber Deine Lösung funzt nur bis zur ausgabe der beiden eigegebenen Zahlen.
Das Ergebnis wird auch nicht gezeigt.

Hier die Lösung aus dem Buch:

PHP:
<?php
function add($x, $y)
{
$s = $x+$y;
return $s;
}

function sub($x, $y)
{
$s=$x-$y;
return $s;
}
function mult($x, $y)
{
$s=$x*$y;
return $s;
}

function div($x,$y)
{
$s=$x/$y;
return $s;
}
?>
<?php
if ($rechne == "+")
   $erg=add($z1,$z2);
else if ($rechne == "-")
   $erg=sub($z1,$z2);
else if ($rechne == "*")
   $erg=mult($z1,$z2);
else
   $erg=div($z1,$z2);
echo "$z1 $rechne $z2 = $erg";
?>

Sorry, aba ich wusste nit, das die Lösungen auch hinten abgedruckt sind. ;)
Hat mich jetzt auch paar Stunden gekostet. Aber es freut einen ja, wenns klappt.

Grüße FLAmE
 
Fuck, hab am Ende der Funktion
PHP:
return $erg;
vergessen, außerdem muss die Funktion noch $rechne einlesen - dann dürfte es aber klappen...
PHP:
<?
function rechne1($z1,$z2,$rechne)
 {
  if($rechne=="sub")
    {
     $erg=$z1-$z2;
    }
  if($rechne=="add")
    {
     $erg=$z1+$z2;
    }
  if($rechne=="div")
    {
     $erg=$z1/$z2;
    }
  if($rechne=="mul")
    {
     $erg=$z1*$z2;
    }
   return $erg;
  }
?>

<?
if(isset($z1) && isset($z2) && isset($rechne))
  {
   echo "Die eingegebenen Zahlen waren: " . $z1 . " und " . $z2 . "<br>";
   echo "Das Ergebnis ist: " . rechne1($z1,$z2,$rechne);
  }
?>

*Shit happens*
 
Zuletzt bearbeitet:
Zurück