Variabel Problem

Spontan

Erfahrenes Mitglied
Ich habe ein Forumlar in dem ich jeweils 2mal8 Werte + nochmal 2 werte eingebe. Aber wenn ich den einen Wert aufrufen will ist er plötzlich 0...
PHP:
echo $d0; //--> ergib ausgabe z.b 10
$S0 = M_PI*pow($d0,2)/4;
echo $S0; /--> ergibt 0

Ich hab irgendwo einen denkfehler, aber ich find ihn nicht...
Hier der ganze Code:
PHP:
<? ob_start();?>
<?
  function rechnung($l, $f, $l0, $S0) {
    global $deltaL;
    global $Zspann;
    global $dung;

    $p = 7;
    for($i=0; $i<=$p; $i++) {
        $deltaL[$i] = round($l[$i]-$l0,3);
        $Zspann[$i] = round($f[$i]/$S0*1000,3);
        if($deltaL[$i] == "0") {
            $dung[$i] = "0";
        }
        else {
        $dung[$i] = ($deltaL[$i]/$l0)*100;
        }
    }
    return $deltaL;
    return $Zspann;
    return $dung;

  }

?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="style.css" type="text/css">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<? if(!$go || $l0=="" || $d0=="" || $zugkraft1=="" || $zugkraft2=="" || $zugkraft3=="" || $zugkraft4=="" || $zugkraft5=="" || $zugkraft6=="" || $zugkraft7=="" || $zugkraft8=="" || $abstand1=="" || $abstand2=="" || $abstand3=="" || $abstand4=="" || $abstand5=="" || $abstand6=="" || $abstand7=="" || $abstand8=="") { ?>
<div align="center"><font size="+1"><b>Automatische Auswertung von Zugversuchen:</b></font><br>
  <br>
</div>
<form name="" method="post" action="<? echo "$PHP_SELF?go=1"; ?>">
  <table width="495" border="0" cellspacing="0" cellpadding="0" align="center">
    <tr>
      <td width="150">
        <div align="left"><b>Versuchnummer:&nbsp;&nbsp;</b></div>
      </td>
      <td width="50">
        <div align="center">1</div>
      </td>
      <td width="50">
        <div align="center">2</div>
      </td>
      <td width="50">
        <div align="center">3</div>
      </td>
      <td width="50">
        <div align="center">4</div>
      </td>
      <td width="50">
        <div align="center">5</div>
      </td>
      <td width="50">
        <div align="center">6</div>
      </td>
      <td width="50">
        <div align="center">7</div>
      </td>
      <td width="50">
        <div align="center">8</div>
      </td>
    </tr>
    <tr>
      <td colspan="9" height="13" valign="top">
        <div align="left"><b></b></div>
      </td>
    </tr>
    <tr>
      <td colspan="9" height="13" valign="top">
        <div align="left"><b></b></div>
      </td>
    </tr>
    <tr>
      <td>
        <div align="left"><b>Zugkraft in kN:&nbsp;&nbsp;</b></div>
      </td>
      <td>
        <input type="text" name="zugkraft1" size="5" VALUE="<? echo $zugkraft1 ?>">
      </td>
      <td>
        <input type="text" name="zugkraft2" size="5" VALUE="<? echo $zugkraft2 ?>">
      </td>
      <td>
        <input type="text" name="zugkraft3" size="5" VALUE="<? echo $zugkraft3 ?>">
      </td>
      <td>
        <input type="text" name="zugkraft4" size="5" VALUE="<? echo $zugkraft4 ?>">
      </td>
      <td>
        <input type="text" name="zugkraft5" size="5" VALUE="<? echo $zugkraft5 ?>">
      </td>
      <td>
        <input type="text" name="zugkraft6" size="5" VALUE="<? echo $zugkraft6 ?>">
      </td>
      <td>
        <input type="text" name="zugkraft7" size="5" VALUE="<? echo $zugkraft7 ?>">
      </td>
      <td>
        <input type="text" name="zugkraft8" size="5" VALUE="<? echo $zugkraft8 ?>">
      </td>
    </tr>
    <tr>
      <td>
        <div align="left"><b>Messmarken:<br>
          (Abstand in mm) &nbsp;</b></div>
      </td>
      <td>
        <input type="text" name="abstand1" size="5" VALUE="<? echo $abstand1 ?>">
      </td>
      <td>
        <input type="text" name="abstand2" size="5" VALUE="<? echo $abstand2 ?>">
      </td>
      <td>
        <input type="text" name="abstand3" size="5" VALUE="<? echo $abstand3 ?>">
      </td>
      <td>
        <input type="text" name="abstand4" size="5" VALUE="<? echo $abstand4 ?>">
      </td>
      <td>
        <input type="text" name="abstand5" size="5" VALUE="<? echo $abstand5 ?>">
      </td>
      <td>
        <input type="text" name="abstand6" size="5" VALUE="<? echo $abstand6 ?>">
      </td>
      <td>
        <input type="text" name="abstand7" size="5" VALUE="<? echo $abstand7 ?>">
      </td>
      <td>
        <input type="text" name="abstand8" size="5" VALUE="<? echo $abstand8 ?>">
      </td>
    </tr>
    <tr>
      <td>
        <div align="left"><b></b></div>
      </td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td height="13">
        <div align="left"><b>Anfangsdurchmesser:&nbsp;&nbsp;</b></div>
      </td>
      <td colspan="8" valign="top">
        <input type="text" name="d0" size="10" VALUE="<? echo $d0 ?>">
        in mm</td>
    </tr>
    <tr>
      <td height="13">
        <div align="left"><b>Anfangsmessl&auml;nge:</b></div>
      </td>
      <td colspan="8" valign="top">
        <input type="text" name="l0" size="10" VALUE="<? echo $l0 ?>">
        in mm</td>
    </tr>
    <tr>
      <td colspan="9" height="13" valign="top">
        <div align="left"><b></b></div>
      </td>
    </tr>
    <tr>
      <td colspan="9" height="13" valign="top">
        <div align="left"><b></b></div>
      </td>
    </tr>
    <tr>
      <td height="13">
        <div align="left"><b></b></div>
      </td>
      <td colspan="8" valign="top">
        <input type="submit" value="Auswerten">
        <input type="reset" value="L&ouml;schen">
      </td>
    </tr>
  </table></form><div align="center">Bitte geben sie die Zahlen im Format: <b>52.2</b> an(also
  mit punkt bei kommazahlen) </div>
<?}
  elseif($go == "1") {
  //----------------------------------------------------------------
  $S0 = M_PI*pow($d0,2)/4;
  $zugkraft = array($zugkraft1,$zugkraft2,$zugkraft3,$zugkraft4,$zugkraft5,$zugkraft6,$zugkraft7,$zugkraft8);
  $abstand  = array($abstand1,$abstand2,$abstand3,$abstand4,$abstand5,$abstand6,$abstand7,$abstand8);

  rechnung($abstand, $zugkraft, $l0, $S0);
  $a  = ((array_pop($abstand)-$l0)/$l0)*100;
  sort($zugkraft);
  $Rm = ((array_pop($zugkraft))*1000)/$S0;

print("<table width='500' border='0' cellspacing='0' cellpadding='0' align='center'>
    <tr>
      <td width='150'>
        <div align='left'><b>Versuchnummer:&nbsp;&nbsp;</b></div>
      </td>
      <td width='50'>
        <div align='center'>1</div>
      </td>
      <td width='50'>
        <div align='center'>2</div>
      </td>
      <td width='50'>
        <div align='center'>3</div>
      </td>
      <td width='50'>
        <div align='center'>4</div>
      </td>
      <td width='50'>
        <div align='center'>5</div>
      </td>
      <td width='50'>
        <div align='center'>6</div>
      </td>
      <td width='50'>
        <div align='center'>7</div>
      </td>
      <td width='50'>
        <div align='center'>8</div>
      </td>
    </tr>
    <tr>
      <td colspan='9' height='13' valign='top'>
        <div align='left'><b></b></div>
      </td>
    </tr>
    <tr>
      <td colspan='9' height='13' valign='top'>
        <div align='left'><b></b></div>
      </td>
    </tr>
    <tr>
      <td>
        <div align='left'><b>Detla L:&nbsp;&nbsp;</b></div>
      </td>");
      for($i=0;$i<=7;$i++) {
      echo "<td>&nbsp;".$deltaL[$i]."</td>";
      }

    print("</tr>
    <tr>
      <td>
        <div align='left'><b>Zugspannung:&nbsp;</b></div>
      </td>");
      for($i=0;$i<=7;$i++) {
      echo "<td>&nbsp;".$Zspann[$i]."</td>";
      }
   print("</tr>
    <tr>
      <td>
        <div align='left'><b>Dehnung:&nbsp;</b></div>
      </td>");
      for($i=0;$i<=7;$i++) {
      echo "<td>&nbsp;".$dung[$i]."</td>";
      }
    print("</tr>
    <tr>
      <td colspan='9' height='13' valign='top'>
        <div align='left'><b></b></div>
      </td>
    </tr>
    <tr>
      <td height='13'>
        <div align='left'><b>Bruchdehnung:</b></div>
      </td>
      <td colspan='8' valign='top'>&nbsp; $a</td>
    </tr>
    <tr>
      <td height='13'>
        <div align='left'><b>Zugfestigkeit:</b></div>
      </td>
      <td colspan='8' valign='top'>&nbsp; $Rm</td>
    </tr>
    <tr>
      <td colspan='9' height='13' valign='top'>
        <div align='left'><b></b></div>
      </td>
    </tr>
    <tr>
      <td height='13'>
        <div align='left'><b></b></div>
      </td>
      <td colspan='8' valign='top'>&nbsp;&nbsp;<a href='popup'>&raquo;&raquo;Diagramm(Popup)</a></td>
    </tr>
  </table> ");
}
</body>
</html>
<? ob_end_flush(); ?>
 
Also das hier:
PHP:
<?php
$d0 = 10;
echo $d0; //--> ergib ausgabe z.b 10
$S0 = M_PI*pow($d0,2)/4;
echo $S0; //--> ergibt 0
?>

Ergibt bei mir nur 0, wenn $d0 0 ist!


Und poste mal bitte nicht so viel Code, sondern hänge den am besten als .txt an!


<edit>Schalten wir mal das Anzeigen von Warnigs an, so entsteht dieser Fehler: Warning: Invalid argument(s) passed to pow() in D:\Webdesign\tests\variable.php on line 191



Joo ich habs:
$d0 is ein String! pow benötigt aber float odder integer. Deshalb:
PHP:
$S0 = M_PI*pow((float)$d0,2)/4;
 
Zuletzt bearbeitet von einem Moderator:
PHP:
  function rechnung($l, $f, $l0, $S0) {
    global $deltaL;
    global $Zspann;
    global $dung;

 ....

    return $deltaL;
    return $Zspann;
    return $dung;
  }

ist Quatsch. Wenn du die Variablen schon global nutzt (was ebenfalls schlecht ist)
dann brauchst du sie nicht zurückgeben, was auch nicht mit 3 mal return funktionieren kann.

mann kehrt nur einmalig aus der Funktion zurück, mehrmalig geht nicht.

auch dinge wie:
PHP:
if(!$go || $l0=="" || $d0=="" || $zugkraft1=="" || $zugkraft2=="" || $zugkraft3=="" || $zugkraft4=="" || $zugkraft5=="" || $zugkraft6=="" || $zugkraft7=="" || $zugkraft8=="" || $abstand1=="" || $abstand2=="" || $abstand3=="" || $abstand4=="" || $abstand5=="" || $abstand6=="" || $abstand7=="" || $abstand8=="") { ?>

sollten vermieden werden weil sie
unübersichtlich und schwer wartbar wirken besser ewas in der art

PHP:
$allok = true;
foreach($_POST as $key => $val) {
 if(eregi("abstand?,$key)&&($val==""))
         $allok = false;
}
if($allok) {
}
 
Zurück