Dreiecksberechnungen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfang
array
berechnen
berechnung
division
dreieck
eingabe
eingegebenen zeichen
falsche eingabe
fehlermeldung
feld
formular
genau drei
genau zwei
http
kommentar
null
output
text
umfang
-
Hi Leute,
ich komme von der Realschule Extertal. Dort sollten wir im Infounterricht Dreiecksberechnungen mit PHP machen. Hier habt ihr meine Dateien:
Das Formular:
------------------------------------------------------------ -----
<html>
<head>
<title>Dreiecksberechnungen</title>
<meta name="author" content="Johannes Nazarov">
<link rel="stylesheet" type="text/css" href="css/website.css">
</head>
<body text="#000000" bgcolor="#FFFFFF" >
<h1>Berechnung eines Dreiecks</h1>
<form action="dreieck.php" method="get">
<fieldset>
<legend>Fl?chenberechnung</legend>
<table border="0" cellspacing="5" width="70%">
<tr>
<td colspan="4">Bitte geben Sie die gew?nschten Werte in das Formular ein. <b>Lassen Sie
das Feld frei, dessen Wert Sie berechnen m?chten</b>!<br>
</td>
</tr>
<tr>
<td>Fl?che (A):</td>
<td><input name="wert[]" size="10" type="text">cm?</input></td>
<td rowspan="4"><img src="flachdrei.jpg"></td>
</tr>
<tr>
<td>Grundseite (g):</td>
<td><input name="wert[]" type="text" size="10">cm</input></td>
</tr>
<tr>
<td>H?he (h):</td>
<td><input name="wert[]" type="text" size="10">cm</input></td>
</tr>
</table>
</fieldset>
<!--Ein anderes Formular-->
<fieldset>
<legend>Umfangsberechnung</legend>
<table cellspacing="5" width="70%">
<tr>
<td colspan="4">Bitte geben Sie die gew?nschten Werte in das Formular ein. <b>Lassen Sie
das Feld frei, dessen Wert Sie berechnen m?chten</b>!<br></td>
</tr>
<tr>
<td>Umfang (U):</td>
<td><input name="wert[]" size="10" type="text">cm?</input></td>
<td rowspan="4"><img src="umdrei.jpg"></td>
</tr>
<tr>
<td>Seite a:</td>
<td><input name="wert[]" type="text" size="10">cm</input></td>
</tr>
<tr>
<td>Seite b:</td>
<td><input name="wert[]" type="text" size="10">cm</input></td>
</tr>
<tr>
<td>Seite c:</td>
<td><input name="wert[]" type="text" size="10">cm</input></td>
</tr>
</table>
</fieldset>
<input type="submit" value="Berechnen"></input>
</form>
</body>
</html>
------------------------------------------------------------ -----
Das Script (noch auskommentiert):
------------------------------------------------------------ -----
<?php
/*********************************************************** ********************
BITTE kopiert dieses Script nicht einfach in euren Ordner.
Das waere ganz gemein. Fuer dieses Script habe ich um die drei Stunden gesessen und moechte nicht, dass das jetzt einfach so publiziert wird.
DANKESCHOEN!
Vor jedem Block habe ich Kommentare geschrieben, die durchnummeriert sind. Hinter einigen Zeilen des Programms sind als einzeilige Kommentare Nummern angegeben. Wenn ihr die Kommentare liest, dann schaut zu der jeweils angegebenen Nummer, um den Text zu verstehen.
Euer Johannes Nazarov ************************************************************ ********************/
/* Anfang des Scriptes: Kontrolle der Eingaben
01 = Eine Variable mit einem Text wird definiert. Spaeter muss man nur den Namen
der Variablen eingeben und nicht den ganzen Text.
02 = Die Ueberschrift wird ausgegeben
03 = WENN der Wert (ich habe zur Uebung Arrays verwendet, die Variable kann ja auch
anders heissen) ungleich NICHTS ist,
04 = DANN wird Variable $i0 auf TRUE (wahr) gesetzt.
05 = siehe NR 03 nur mit anderen Werten
06 = siehe NR 04 nur mit anderen Werten
usw. Es iwrd fuer alle Eingaben eine Variable definiert. HINWEIS: Normalerweise sind alle
Variablen auf FALSE gesetzt.
*/
$Satzteil = "Das Ergebnis f?r die Berechnung "; //01
echo ("<h1>Berechnung eines Dreiecks</h1>"); //02
if ($wert[0] != "") //03
$i0 = true; //04
if ($wert[1] != "") //05
$i1 = true; //06
if ($wert[2] != "")
$i2 = true;
if ($wert[3] != "")
$i3 = true;
if ($wert[4] != "")
$i4 = true;
if ($wert[5] != "")
$i5 = true;
if ($wert[6] != "")
$i6 = true;
/* Anfang der Berechnung fuer die Flaeche
07 = Ueberschrift wird ausgegeben
08 = Bedingung1: WENN entweder ($i0 UND $i1) wahr sind, ODER ($i0 UND $i2) ODER ($i1 UND $i2)
es wird also kontrolliert, ob nur jeweils ZWEI Eingaben vorhanden sind. Wenn es
naemlich nur eine oder keine Eingaben gibt, kann ja kein Wert berechnet werden!
WENN es also nur zwei Angaben gibt, DANN folgt Bedingung2
09 = DANN Bedingung2: WENN die Laenge der Eingegebenen Zeichen fuer $wert[0] kleiner oder
gleich 0 ist,
10 = DANN wird der Variable $aflach der berechnete Wert zugewiesen und
11 = der Satzteil von NR 01 zusammen mit weiterem Text ausgegeben und
12 = und der Inhalt der Variable $aflach formatiert ausgegeben
13 = SONST folgt Bedingung3
14 = Bedingung3: WENN die Laenge der Eingegebenen Zeichen fuer $wert[1] kleiner oder
gleich 0 ist,
15 = DANN genauso wie bei NR 10, nur mit einer anderen Formel
usw. den Rest braucht man nicht zu erklaeren.
16 = Bedingung4: usw.
17 = Bedingung4 wird geschlossen
18 = Bedingung3 wird geschlossen
19 = Bedingung2 wird geschlossen
20 = Bedingung1 wird geschlossen und SONST, wenn also NICHT NR 08 zutrifft
21 = Fehlermeldung ausgeben.
22 = Ausserdem: WENN alle drei Felder ausgefuellt sind,
23 = auch Fehlermeldung
24 = Ausgabe, um den Text richtig formatiert erscheinen zu lassen
*/
echo ("<h2>Fl?che</h2>"); //07
if (($i0 AND $i1) OR ($i0 AND $i2)OR ($i1 And $i2)) { //08
if (strlen($wert[0]) <= 0){ //09
$aflach = ($wert[1]*$wert[2])/2; //10
print ($Satzteil."der <b>Fl?che</b> lautet: <b>"); //11
printf ("%05.3f",$aflach); //12
} else { //13
if (strlen($wert[1]) <= 0) { //14
$agrund = (2*$wert[0])/$wert[2]; //15
print ($Satzteil."der <b>Grundseite</b> lautet: <b>");
printf ("%05.3f", $agrund);
} else {
if (strlen($wert[2]) <= 0) { //16
$ahoch =(2*$wert[0])/$wert[1];
print ($Satzteil."der <b>H?he</b> lautet; <b>");
printf ("%05.3f",$ahoch);
} //17
} //18
} //19
} else { //20
print ("<br>Ihre Eingabe ist nicht eindeutig. Bitte geben Sie genau <b>zwei</b> Werte ein!"); //21
}
if ($i0 AND $i1 AND $i2) { //22
echo ("Ihre Eingabe ist nicht eindeutig. Bitte geben Sie genau <b>zwei</b> Werte ein!"); //23
}
echo ("</b>"); //24
/* Anfang der Berechnung fuer den Umfang
Hiermuss nichts mehr erklaert werden. Es wird fuer den Umfang genauso verfahren wie oben
ab NR 07, nurr wird jeweils ein Wert mehr kontrolliert. Anhand des obigen Beispiels ist es
nun ein Leichtes, die Funktionsweise des unteren Abschnitts nach zu vollziehen.
Viel Glueck!
*/
echo ("<h2>Umfang</h2>");
if (($i3 AND $i4 AND $i5) OR ($i3 AND $i5 AND $i6)OR ($i3 AND $i4 AND $i6) OR ($i4 AND $i5 AND $i6)) {
if (strlen($wert[6]) <= 0){
$ac = $wert[3]-($wert[4]+$wert[5]);
print ($Satzteil."der Seite <b>c</b> lautet: <b>");
printf ("%05.3f",$ac);
}else {
if (strlen($wert[3]) <= 0){
$aumfang = $wert[4]+$wert[5]+$wert[6];
print ($Satzteil."des <b>Umfangs</b> lautet: <b>");
printf ("%05.3f",$aumfang);
} else {
if (strlen($wert[4]) <= 0){
$aa = $wert[3]-($wert[5]+$wert[6]);
print ($Satzteil."der Seite <b>a</b> lautet: <b>");
printf ("%05.3f",$aa);
}else {
if (strlen($wert[5]) <= 0){
$ab = $wert[3]-($wert[4]+$wert[6]);
print ($Satzteil."der Seite <b>b</b> lautet: <b>");
printf ("%05.3f",$ab);
}
}
}
}
}else {
print ("Ihre Eingabe ist nicht eindeutig. Bitte geben Sie genau <b>drei</b> Werte ein!");
}
if ($i3 AND $i4 AND $i5 AND $i6) {
echo ("Ihre Eingabe ist nicht eindeutig. Bitte geben Sie genau <b>drei</b> Werte ein!");
}
echo ("</b><br><br><a href=\"dreieck.html\">Neue Berechnung</a>"); //Schlussausgabe, mit einem Link, um zurueck zu kommen
?>
------------------------------------------------------------ -----
Ich bin kein Profi und m?chte bitten, dass ihr mir sagt, wie man eine Division durch 0 unterbindet und ganz wichtig: wie kann ich Anhand von weniger Eingaben Fl?che und umfang berechnen. Geht es nicht, dass man ein paar Eingaben wegl?sst?
Vielen Dank im voraus -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo profihome!
Eine Division durch Null unterbindest du, indem du jede Variable, die als Divisor in Frage kommt, (vor der Division) daraufhin ?berp?fst, ob sie gr??er als Null ist. Am besten machst du das gleich bei der Parameter-Eingabe. Dann sollte das PHP-Skript einfach eine Fehlermeldung ausgeben und einen Verweis auf die Formularseite setzen, damit man die Eingaben wiederholen kann. Willst du das ganze f?r den Benutzer komfortabler gestalten, brauchst du ein so genanntes Affenformular: Ein PHP-Skript, das das HTML-Formular ausgibt und sich im Fehlerfall selbst wieder aufruft.
MfG
alopex -
leg die einzelnen formulare in einzelne Arrays
= Umfang -> ...name="umfang[]"
/* Nur zur information was die einzelnen Arrays enthalten $flaeche[0] = Fl?che $flaeche[1] = Grundkante $flaeche[2] = H?he $umfang[0] = a $umfang[1] = b $umfang[2] = c $umfang[3] = Umfang */ function flaeche($grundkante = 0, $hoehe = 0, $flaeche = 0){ if (($grundkante != 0) &&($hoehe != 0)){ $output = ( $grundkante * $hoehe ) / 3; }else if(($grundkante != 0) && ($flaeche != 0)){ $output = ( 3 * $flaeche ) / $grundkante; }else if(($hoehe != 0) && ($flaeche != 0)){ $output = ( 3 * $flaeche ) / $hoehe; }else{ $output = "Falsche Eingabe [Fl?che]"; } return $output; } function umfang($a = 0, $b = 0, $c = 0, $umfang = 0){ if (($a != 0) &&($b != 0) && $c != 0){ $output = $a + $b + $c; }else if(($umfang != 0) && ($a != 0) && ($b != 0)){ $output = $umfang - ( $a + $b ); }else if(($umfang != 0) && ($a != 0) && ($c != 0)){ $output = $umfang - ( $a + $c ); }else if(($umfang != 0) && ($b != 0) && ($c != 0)){ $output = $umfang - ( $b + $c ); }else{ $output = "Falsche Eingabe [Umfang]"; } return $output; } /*Von $_GET[] abrufen -> Array $umfang && Array $flaeche*/ if (isset($umfang)){ echo umfang($umfang[0], $umfang[1], $umfang[2], $umfang[3]) } if (isset($flaeche)){ echo flaeche($flaeche[0], $flaeche[1], $flaeche[2], $flaeche[3]) }
-
Ich verstehe nicht ganz, was du mit Affenformular meinst. Ist das das, was ich im Tutorial unter "Formular und PHP in einer Datei" beschrieben habe?
-
Hallo profihome!
Keine Ahnung, aber unter
http://www.lima-city.de/tutorials?m=show&id=1167
habe ich das Wort "Affe" nicht gefunden (Es ist ganz einfach grausam, PHP-Quelltexte zu lesen, die hier in den Boards oder in den Tutorials ver?ffentlich werden, weil die Formatierung meist verlorengegangen ist).
Aber hier:
http://www.php-faq.de/q/q-formular-verarbeitung.html
Und da wird sch?n beschrieben, wie man Formulare neu sendet, um fehlerhafte Eingaben zu korrigieren, ohne schon gemachte (richtige) Eingaben zu zerst?ren.
MfG
alopex -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage