Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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...

Geschrieben


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

Geschrieben
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

Geschrieben

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

post-31331-1443044727417_thumb.jpg

Geschrieben
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).

Geschrieben

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.

Geschrieben

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 :D 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 ;)

Geschrieben

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*

Geschrieben

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 :D

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 ;)

Geschrieben

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^^

Geschrieben

@ 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.

Geschrieben
@ 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 ;)

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...