SubZeroX6 Geschrieben 7. Dezember 2005 Geschrieben 7. Dezember 2005 Da ich ein totaler php neuling bin und auch außerdem so gut wie kein Erfahrungen mit irgendwelchen andrern programmiersprachen habe bitte ich euch um ein bisschen hilfe zur lösung einer Aufgabe in der schule, sie ist eigentlich total einfach doch ich komme nicht auf den lösungsweg. Alos wir sollen ein durch die eingabe von körpergröße und gewicht mit einem php script berechnen lassen was das idealgewicht ist.....nach der eingabe in das formular, sollen die berechnungsergebnisse ausgegeben werden und außerdem dass formular damit man gleich neue werte zur berechnung eingeben kann. ich zeige euch einfach mal die Aufgabenstellung von unseren lerher und mein php kram Aufgabe von Lehrer: Aufgabe 4 : Selbstverweis Nachdem der Benutzer das Formular abgeschickt hat, soll das Formular oberhalb der Berechnungs- ergebnisse erneut angeboten werden. Die neue Anforderungsdefinition : - Formulareingabe der Körpergröße in cm - Auswahl des Geschlechts mittels Radio-Buttons - Berechnung des Normalgewichts mit der Broca-Formel - Berechnung des Idealgewichts mit der Broca-Formel - Ausgabe des berechneten Normal- und Idealgewichts mit erneutem Aufbau des Formulars Lösungshinweise: In der von PHP bereitgestellten Variablen $_SERVER ist unter dem Array-Key PHP_SELF der Name des eigenen Scripts abgespeichert. <?php echo ("<h1>Broca Formel - Brechnungsergebnisse</h1>"); $groesse = $_POST["groesse"]; $gewicht = $groesse -100; $idealgewicht_Mann = $gewicht -10/100 *$gewicht; $idealgewicht_Frau = $gewicht -15/100 *$gewicht; $Mann = $_POST["geschlecht"]; if ($Mann == "maennlich") { echo ("Geschlecht = maennlich"); echo ("<br><br>Idealgewicht Mann in kg = $idealgewicht_Mann"); } else { echo ("Geschlecht = weiblich"); echo ("<br><br>Idealgewicht Frau in kg = $idealgewicht_Frau"); } echo ("<br><br>Körpergroeße in cm = $groesse"); echo ("<br><br>Normalgewicht in kg = $gewicht"); ?> Ich weiß es ist ganz einfach aber da ich von diesen ganzen sachen so gut wie kein ahnung habe wollte ich nur mal nen kleine denkanstoß haben... Zitieren
geloescht_JesterDay Geschrieben 7. Dezember 2005 Geschrieben 7. Dezember 2005 Da fehlt dir ja nur noch, dass du das Formular ausgibst, dass wieder auf sich selbst verweisst (action). Zitieren
baba007 Geschrieben 7. Dezember 2005 Geschrieben 7. Dezember 2005 Formular: methode post action: sich selbst Gewicht : input type=text Groesse : input type=text Männlich input type=radio name=x wert=1 Weiblich input type=radio name=x wert=0 buttons = senden;löschen sende an sich selbst darstellung formular wenn post[gewicht] && post[groesse] && post[x] dann berechne laut formel [/PHP] deine hausaufgaben mache ich nicht schau mal php.net und selfhtml.org Zitieren
SubZeroX6 Geschrieben 8. Dezember 2005 Autor Geschrieben 8. Dezember 2005 Ich bin einfach zu blöd...ich weiß jetzt ehrlichgesagt nicht, wo ich was reinschreiben soll Zitieren
geloescht_JesterDay Geschrieben 8. Dezember 2005 Geschrieben 8. Dezember 2005 Ich bin einfach zu blöd...ich weiß jetzt ehrlichgesagt nicht, wo ich was reinschreiben soll Hat baba doch schon geschrieben... hier noch mal offensichtlicher HTML Formular: methode post action: sich selbst Gewicht : input type=text Groesse : input type=text Männlich input type=radio name=x wert=1 Weiblich input type=radio name=x wert=0 buttons = senden;löschen /HTML PHP wenn post[gewicht] && post[groesse] && post[x] dann berechne laut formel Mit Ausgabe des Ergebnisses /PHP Zitieren
SubZeroX6 Geschrieben 8. Dezember 2005 Autor Geschrieben 8. Dezember 2005 Ich schicke euch nochmal mein html datei ich kann mir nicht so recht vorstellen das das funktioniert was ihr mir da gesagt habt <html> <head> <title>New Document</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> </head> <body> <h1>Broca Formel - Eingabeformular</h1> <form action="Aufgabe_3.php" method="POST"> <br>Körpergröße: <input type="text" name="groesse">cm <br><br> <input type="radio" name="geschlecht" value="maennlich"> maennlich <br/> <input type="radio" name="geschlecht" value ="weiblich"> weiblich <br/> <input type="submit" value="Berechnen"> </form> </body> </html> hier ist nochmal ein bild wie es dann mal aussehen soll....is allerdings von lehrer http://forum.fachinformatiker.de/attachment.php?attachmentid=438&stc=1&d=1134051671 Zitieren
baba007 Geschrieben 9. Dezember 2005 Geschrieben 9. Dezember 2005 abgesehen jetzt noch vom aussehen ist es schon mal was. jetzt brauchst du nur noch in der Aufgabe_3.php Datei, die berechnung und ausgabe. das ist so ein mix aus php und html dann ... Zitieren
geloescht_JesterDay Geschrieben 9. Dezember 2005 Geschrieben 9. Dezember 2005 Ich schicke euch nochmal mein html datei ich kann mir nicht so recht vorstellen das das funktioniert was ihr mir da gesagt habt Du musst dir nicht vorstellen, dass das funktioniert, du musst uns das nur glauben Nochmal zu PHP und dem Webserver: Der Webserver hat irgendwo in der Config stehen, dass er Dateien mit der endung php als PHP-Dateien interpretieren soll und dass das heisst, sie nicht einfach an den Client zu senden, sondern vor dem Senden erstmal durch den PHP-Interpreter zu jagen. Der Interpreter nimmt die (Text-)Datei und geht sie von vorne nach hinten durch. Dabei sucht er nach PHP-Code im Text. PHP-Code beginnt mit einem <?php (Verkürzt kann es auch <? sein, das kann aber abgeschalten werden und man sollte an den 3 Buchstaben nicht sparen) und endet mit ?>. Alles, was zwischen diesen Markierungen steht, wird vom Interpreter als PHP-Code angesehen. Alles, was nicht PHP-Code ist, wird einfach wieder genauso wie es ist, an den Server zurückgegeben. Der PHP-Code selber wird nicht wieder mit ausgegeben, aber evtl. Ausgaben im PHP-Code. Das Dokument, was der Interpreter an den Webserver zurückgibt, liefert der an den Client aus. Beispiel: Eine PHP-Datei <?php $a=1; $b=2; $c=$a+$b; ?> [/php] Wird beim Aufruf nur eine leere Seite zurückliefern (der Browser fügt dann u.U. zu Fehlerkorrektur noch das fehlende <html></html> o.ä. ein), da der Code ausgeführt wird und für die Ausgabe entfernt. Die Datei: [php] <?php $a=1; $b=2; $c=$a+$b; echo $c; ?> liefert hingegen eine Ausgabe, nämlich das Ergebnis der Berechnung (3). Die Datei <html> <head> <title>Test</title> </head> <body> <h1>Dies ist ein Test</h1> </body> </html> [/php] als php-Datei gespeichert, liefert genau das zurück, was du erwartest, nämlich eine Seite, mit einem Text als Überschrift deklariert. Was lernen wir daraus? HTML im einer PHP-Datei wird einfach vom PHP-Interpreter ignoriert und das, was nach der Behandlung im Interpreter zurückkommt ist nicht anderes, als eine Datei ohne PHP-Code (nur mit gewissen Teilen des Inhalts durch PHP erst berechnet und eingetragen). Zitieren
~Hawkeye~ Geschrieben 13. Dezember 2005 Geschrieben 13. Dezember 2005 Als Ergänzung noch. Es können ausser php- Dateien auch html- Dateien geparsed werden, wenn dies in der Config vom Webserver eingestellt ist. Im Übrigen wird bei einer Mischung aus php und html nie nur eine Datei an den Client übertragen. Hierfür verantwortlich ist das sog. response buffering. Der Webserver sendet eine Datei an den php- Interpreter, er parsed die Datei. Findet er nun einen block mit html, php und html Inhalt vor, so wird erst den html inhalt an den Webserver zurückschicken, das php verarbeiten und an den Webserver schicken und dann das restliche html an den Webserver schicken. Statt mit html kann das Beispiel natürlich auch mit reinem Text betrieben werden. Was anderes ist html für den php- Interpreter nicht. Dass zu wissen wird wichtig sobald Du mit Sessions arbeiten solltest. Zudem macht es Sinn auch im Unterricht schon die ungarische Notation zu üben. Kürzel vor Variablennamen machen einfach Sinn um zuerkennen was für einen Typ die Variable nun hat und zusätzlich darf man auch ruhig Groß- Kleinschreibung verwenden, wenn man bedenkt, dass Unix case sensitiv ist und deshalb das durchgehend so machen sollte. Kommentare machen dazu das leben einfacher. Ich selbst habe mir dazu noch angewöhnt selbst html mit an den php- Interpreter zu übergeben. Dadurch wird der Quellcode einfach lesbarer und für den Interpreter ist das innerhalb eines echos eh nur ein Text. Und man sollte sich überlegen wieso man den Inhalt aus der sicheren super globalen Variablen $_POST in eine Variable schreibt und nicht gleich auf den Wert im post zugreift. Dafür ist diese Variable da. // Wenn ein Login erfolgen soll if (isset($_POST['btnLogin'])) { $arrPflichtfelder = array($_POST['anzAccount'], $_POST['anzPasswort']); $intFehler = Validate_Pflichtfelder($arrPflichtfelder); // Ueberpruefen der Pflichtfelder // Wenn nicht alle Pflichtfelder gefuellt sind if ($intFehler == 0) { $strMeldung = Exception_Handling(1); } else // if ($intFehler == 0) { $intFehler = Validate_Login($_POST['anzAccount'], $_POST['anzPasswort']); // Ueberpruefen des Logins // Wenn der Login nicht gueltig ist if ($intFehler == 0) { $strMeldung = Exception_Handling(2); } else // if ($intFehler == 0) { Login($_POST['anzAccount'], $_POST['anzPasswort']); } // Ende von else von if ($intFehler == 0) } // Ende von else von if ($intFehler == 0) } // if (isset($_POST['btnLogin'])) // Wenn kein Login erfolgt ist oder ein Fehler aufgetreten ist if (!isset($_POST['btnLogin']) || $intFehler == 0) { echo " <form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\" name=\"frmLogin\"> <table border=\"0\"> <tr> <td class=\"Login\"> Kennung </td> <td class=\"Login\"> <input type=\"text\" name=\"anzUser\" class=\"Login\" value=\"\" /> </td> </tr> <tr> <td class=\"Login\"> Passwort </td> <td class=\"Login\"> <input type=\"password\" name=\"anzPasswort\" class=\"Login\" /> </td> </tr> </table> <br /> <input type=\"submit\" value=\"Login\" name=\"btnLogin\" class=\"Button\" /> <input type=\"submit\" value=\"Registrieren\" name=\"btnRegistrieren\" class=\"Button\" /> </form> <br /> <br />"; if (isset($strMeldung)) { echo $strMeldung; } // if (isset($strMeldung)) } // if (!isset($_POST['btnLogin']) || $intFehler == 0) [/PHP] Wenn Du das in ein if - else umwandelst, hast Du übrigens schon Deine Lösung. Zitieren
geloescht_JesterDay Geschrieben 15. Dezember 2005 Geschrieben 15. Dezember 2005 Ich selbst habe mir dazu noch angewöhnt selbst html mit an den php- Interpreter zu übergeben. Dadurch wird der Quellcode einfach lesbarer und für den Interpreter ist das innerhalb eines echos eh nur ein Text. Ich hab mir angewöhnt, das gerade nicht so zu machen Eben weil dann alles (php bzw. der HTML-Teil) lesbarer ist Eine php-Datei mit HTML-Ausgabe sieht bei mir ung. so aus: <?php echo "<?xml version=\"1.0\"?>"; Irgendwelcher Code; Der immer gebraucht wird; Zur Initialisierung o.ä.; function GibIrgendwasAus() { TuWas(); return $Irgendwas; } function GibNochMehrAus() { TuWasAnderes(); return $IrgendwasAnderes; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title> </title> </head> <body> <h1>Überschrift</h1> <div> Irgendwas </div> <?php echo GibIrgendwasAus(); ?> <div> <?php echo GibNochMehrAus(); ?> </div> </body> </html> So ist HTML so ziemlich vollständig und zusammen und PHP auch nur der wirklich notwendige Teil und das zusammen. Irgendwelche Änderungen/Korrekturen oder Fehlersuchen sind so IMHO um einiges leichter zu handhaben. EDIT: Ein komplettes Gemisch aus HTML und PHP ist aber nicht wirklich lesbar, denke das meintest du. Also HTML, dann zwischendurch immer wieder viele Zeilen PHP-Code, dann wieder HTML etc. Deine Version ist aber ansich ja dasselbe, nur andersrum eben Zitieren
~Hawkeye~ Geschrieben 15. Dezember 2005 Geschrieben 15. Dezember 2005 Naja ist halt eine Ansichtssache. Zudem kommt dazu, dass solche Formulare bei mir nie direkt im Code stehen sondern dieses hier zum Beispiel in der Datei frmLogin.inc.php und dann in den Code nur über include eingebunden wird. Nu in den Formulardateien bringe ich meist auch noch Abfragen ein um die Formularfelder eventuell nach einem Abschicken wieder zu füllen (register_globals ist bei mir meist ausgeschaltet). Deine Variante ist zwar weniger Arbeit für den php- Interpreter aber ich denke sobald da noch Javascript oder ähnliches dazu kommt wird dies auch unübersichtlich. Abgesehen davon hatte ich dann Probleme mit der Lesbarkeit, wenn ich HTML- Ausgaben von einer php- Bedingung abhängig mache. <?php echo "<?xml version=\"1.0\"?>"; Irgendwelcher Code; Der immer gebraucht wird; Zur Initialisierung o.ä.; function GibIrgendwasAus() { TuWas(); return $Irgendwas; } function GibNochMehrAus() { TuWasAnderes(); return $IrgendwasAnderes; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title> </title> </head> <body> <?php if ($foo == "bar") { ?> <h1>Überschrift</h1> <?php } ?> <div> Irgendwas </div> <?php echo GibIrgendwasAus(); ?> <div> <?php echo GibNochMehrAus(); ?> </div> </body> </html> Das schaut dann gar nicht mehr so gut aus finde ich. Den Doctype könntest Du übrigens auch mit in den Header, zu der XML- Deklaration, packen. *g* Zitieren
geloescht_JesterDay Geschrieben 16. Dezember 2005 Geschrieben 16. Dezember 2005 Das schaut dann gar nicht mehr so gut aus finde ich. Den Doctype könntest Du übrigens auch mit in den Header, zu der XML- Deklaration, packen. *g* Dann könntest du ja wieder ne AusgabeUeberschrift() - Funktion machen, und wenn die Bedingung nicht erfüllt ist, gibt die Funktion einen leeren String zurück Und die XML-Angabe im PHP-Header steht da nur, weil es sonst auf einem Server mit ShortOpenTag = On zu einem Fehler kommt Die kann auch woanders stehen (also am Ende vom PHP-Teil), nur muss sie eben im PHP-Teil stehen. Oder als extra Zeile <?php ... ?> am Anfang vom HTML. Deine Variante ist zwar weniger Arbeit für den php- Interpreter aber ich denke sobald da noch Javascript oder ähnliches dazu kommt wird dies auch unübersichtlich. Weniger Arbeit für mich auf jeden Fall, der Interpreter interessiert mich dabei nicht Und wenn da noch Javascript o.ö. mit drin steht, ist es nicht unübersichtlicher, als dieselbe Seite ohne PHP. Und ausserdem kann man Javascript auch in eine externe Datei auslagern, dann kommt nur eine Zeile (bzw. 2) dazu. EDIT: Ein großer Vorteil ist aber IMHO, dass die Seite auch ohne PHP "vollständig" ist und mit einem entspr. Editor gut bearbeitet oder eine Vorschau angezeigt werden kann. Im Dreamweaver z.B. siehst du schon wie die Seite aussehen wird, und da wo PHP ist, steht ein kleines php-Bildchen. Auf die Art des Codens bin ich (denk ich mal) vorallem durch CMS gekommen (Typo3 z.B.). Die Vorlage, die du dort erstellst ist auch eine ganz normale HTML Seite, die auch jede Menge Unsinn enthalten kann (als Test-Inhalt) und beim Anzeigen im CMS wird dann alles mit echtem Inhalt ersetzt. Ausserdem ist es ja irgendwie eine kleine Variante einer Template-Engine, die ja auch nicht so viel anders ist. Nur war mir so eine Engine dann doch zu aufwendig Zitieren
SubZeroX6 Geschrieben 16. Dezember 2005 Autor Geschrieben 16. Dezember 2005 Ich habe jetzt einfach mal den html code in die php datei kopiert und jetzt sieht es so naus wie in meiner aufgabern beschriebn. aber das kann ja nicht das ergebnis sein, zumal unser lehrer uns ja noch weitere aufgaben gegeben hat die darauf aufbauen sollen und dann haut das doch alles nicht mehr hin.....hmm ich bin einfach zu dumm für diese welt^^ Zitieren
~Hawkeye~ Geschrieben 16. Dezember 2005 Geschrieben 16. Dezember 2005 @ Jesterday OK Du hast recht damit, dass die Seite dann auch im dreamweaver etc. angezeigt werden kann. Nur da ich nur ungern mit solchen Oberflächen Arbeite ist mir das Schnuppe. Der Weaverslave reicht mir voll und ganz. Lassen wir besser die beiden Meinungen so im Raum stehen *g* @SubZeroX6 Du musst das Beispiel auch schon umändern. Deine Hausaufgaben wird Dir hier wohl sicherlich keiner machen. Es sei denn es hat jemand fürchterlich Langeweile. Du kannst hier im Thread den Programmablauf nachlesen und Dir wurde hier 2 Mal gezeigt wie das programmiertechnisch realisert werden kann. Im Grund ist das fast nur noch copy n' paste an die richtigen Stellen in Deinem Programm mit einer kleinen Feinkorrektur. Zitieren
geloescht_JesterDay Geschrieben 19. Dezember 2005 Geschrieben 19. Dezember 2005 @ Jesterday OK Du hast recht damit, dass die Seite dann auch im dreamweaver etc. angezeigt werden kann. Nur da ich nur ungern mit solchen Oberflächen Arbeite ist mir das Schnuppe. Der Weaverslave reicht mir voll und ganz. Lassen wir besser die beiden Meinungen so im Raum stehen *g* DAchte ich bis jetzt auch immer und in Sachen "Suche" ist der Weaverslave Dreamweaver immernoch überlegen IMHO. Aber bei HTML ist die Vorschau im gleichen Fenster ganz praktisch und Weaverslave kann man genauso als reinen Texteditor nutzen, wie Weaverslave (mit dem Vorteil der Codevervollständigung). Ausserdem hat Weaversalve bei mir Probleme mit XHTML, da zeigt er keine Vorschau an. Hab da aber auch nur eine 30-Tage Testversion und muss erstmal sehen, ob wir uns den beschaffen Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.