72036
Goto Top

Problem bei PHP Verzweigung

Hallo, ich habe ein Problem mit der PHP-Programierung.
Ich mache momentan ne Ausbildung zur IT-System Elektronikerin und nun steht die PHP Programierung an.
Nun habe ich ein Problem.
Ich habe zu Hause ein bissl gelernt und dann habe ich folgende html und folgende php geschrieben:

das ist die html:
<html>
<body>

<form action="Mwst berechnung.php" method="post">  

Bitte wählen Sie einen Artikel aus

<select name="$artTyp" size=1">  
	<option> CD-Rom </option>
	<option> Buch </option>
	<option> Sonstige </option>
</select><p>
	<input type="submit">  
	<input type ="reset">  

</form>

</body>
</html>
und hier die php:
/* Programm zur MwSt-Berechnung */

<html>
<body>
<?php
  $netto = 1000;
  $artTyp = "B"; // Artikeltyp, B: Buch, C: CD-ROM  
 
  if ("B" == $artTyp)  
  {
   $uSt = $netto*0.07;
   echo "Der Artikel ist ein Buch";  
  }
  else {
   $uSt = $netto*0.16;
   echo "Der Artikel ist eine CD-ROM";  
  }
  $brutto = $netto+$uSt;
  echo "Der Artikelpreis: $brutto";  

?>
</body>
</hmtl>
diese beiden habe ich miteinander verzweigt, wie ihr sehen könnt.
Nun habe ich mir natürlich auch xampp heruntergeladen und es gestartet....dann noch alle Dateien in den Ordner htdocs gespeichert und alles.

All diese Sachen helfen bei mir aber nicht. Die html Seite wird fehlerfrei angezeigt, aber sobald ich auf absenden klicke, wird in dem erscheinendem Fenster nur mein php dokument dargestellt und nicht die auswertung....

kann mir mit meinem problem jemand helfen??

Danke schon im vorraus


lg Sunny

Content-Key: 109019

Url: https://administrator.de/contentid/109019

Printed on: April 20, 2024 at 09:04 o'clock

Member: nxclass
nxclass Feb 14, 2009 at 17:46:30 (UTC)
Goto Top
rufst du die HTML auch über http://localhost/... auf und nicht über file:// ... !?

(ich nutze JanaServer2, PHP mit Sqlite und 'Active' Perl)

$uSt = $netto*0.16;
echo "Der Artikel ist eine CD-ROM";  
nur 16% Steuer? - wo wohnst du?
Member: kaiand1
kaiand1 Feb 14, 2009 at 17:51:37 (UTC)
Goto Top
Lass mich raten du hast die PHP Datei .htm benannt anstelle .php ?!
16% MWST? Ist bestimmt eine ältere Vorlage oder? Hab letztens in ein Buch ne € Betrag stehen sehen aber als Bild DM Münzen :D
Mitglied: 72036
72036 Feb 14, 2009 at 19:27:58 (UTC)
Goto Top
Zitat von @kaiand1:
Lass mich raten du hast die PHP Datei .htm benannt anstelle .php ?!
16% MWST? Ist bestimmt eine ältere Vorlage oder? Hab letztens in
ein Buch ne € Betrag stehen sehen aber als Bild DM Münzen :D


Nein ich habe die php natürlich .php genannt.....und ja das mit der MWST ist eine ältere Vorlage aus der Schule....


Dann zu nxclass:
Ich kann nicht auf den localhost zugreifen...das ist ja eines meiner Probleme, die ich habe.
Member: kaiand1
kaiand1 Feb 14, 2009 at 19:50:50 (UTC)
Goto Top
Wenn du Xampp entpackt hast hast du im Xampp dir auch die setup_xampp.bat vorher ausgeführt damit der die Pfadangaben anpassen kann gemacht?.
Mit xampp-control.exe kannst du den Status sehen. Im Logfile evtl gucken wenn der nicht startet warum der nicht will
Mitglied: 72036
72036 Feb 14, 2009 at 21:49:09 (UTC)
Goto Top
so das klappt jetzt alles soweit und ich kann in den localhost reinschauen und die einzelnen Dateien auch öffnen....nun habe ich aber ein neues Problem:

Meine PHP löst die HTML falsch auf....könnt ihr mir helfen??


Das ist meine .html Datei......diese wird ohne Probleme richtig angezeigt:

<html>
<body>

<form action="mwst.php" method="post">

Bitte wählen Sie einen Artikel aus

<select name="$artTyp" size=1">
<option> Buch </option>
<option> CD-ROM </option>
<option> Sonstiges </option>
</select><p>
<input type="submit">
<input type ="reset">

</form>

</body>
</html>


So und jetzt die PHP, die diese auswerten soll:

<html>
<body>
<?php
$netto = 1000;
$artTyp = "Buch"; Artikeltyp, B: Buch
$artTyp = "CD-ROM";
Artikeltyp, C: CD-ROM
$artTyp = "Sonstiges"; // Artikeltyp, S: Sonstiges

if ($artTyp = "Buch")
{
$uSt = $netto * 0.07;
echo "Der Artikel ist ein Buch";
}

else
{
if ($artTyp = "CD-ROM")
{

$uSt = $netto * 0.16;
echo "Der Artikel ist eine CD-Rom";
}
}

$brutto = $netto+$uSt;
echo "Der Artikelpreis: $brutto";

?>
</body>
</hmtl>

Die Auswertung, die ich von der PHP erhalte ist immer unabhängig davon, welchen Artikel ich auswähle:

Der Artikel ist ein BuchDer Artikelpreis: 1070


Danke im Vorraus

Sunny
Member: Guenni
Guenni Feb 15, 2009 at 10:21:27 (UTC)
Goto Top
Hi Sunny,

<select name="$artTyp" size=1">

ist schonmal falsch, hier gehört . . .

<select name="artTyp" size=1">

. . . hin, ohne Dollarzeichen.

Um die Select-Box im PHP-Script auszuwerten, würde ich

in dieser die Options um den Parameter value erweitern:

<select name="$artTyp" size=1">  
<option value="1"> CD-Rom </option>  
<option value="2"> Buch </option>  
<option value="3"> Sonstige </option>  
</select>

Gesendet wird dann 1,2 oder 3, je nach Auswahl.

Gesendete Formulardaten werden, wenn die gewählte Methode post

ist, im $_POST-Array gespeichert. Die Auswahl wird also mit $_POST['artTyp']

abgefragt.

Die if-else-Konstruktion würde ich durch switch abkürzen:

<?php>

switch($_POST['artTyp']){  
  case 1:$MwSt=0.16;break;
  case 2:$MwSt=0.07;break;
  case 3:$MwSt=0.16;
 }

?>

Die Artikeltypen würde ich in einem Array ablegen. Der Index wird dann

mit $_POST['artTyp'] angesprochen, welcher ja 1,2 oder 3 enthält:

<?php>

$artikel=array("1" => "CD-Rom","2" => "Buch","3" => "Sonstiges");  

?>

Je nachdem, welche Zahl gesendet wird, gibt . . .

echo "Sie haben Artikeltyp ".$artikel[$_POST['artTyp']]." gewählt.";

. . . den entsprechenden Artikeltyp aus.

Vollständig würde das dann so aussehen:


<?php>

 $netto=100;
 $artikel=array("1" => "CD-Rom","2" => "Buch","3" => "Sonstiges");  
 switch($_POST['artTyp']){  
  case 1:$MwSt=0.16;break;
  case 2:$MwSt=0.07;break;
  case 3:$MwSt=0.16;
 }
 echo "Sie haben Artikeltyp ".$artikel[$_POST['artTyp']]." gewählt.<br>";  
 echo "Nettopreis ".$netto."<br>";  
 echo "MwSt ".$MwSt * $netto."<br>";  
 $brutto=$netto + $MwSt*$netto;
 echo "Bruttopreis ".$brutto;  

?>

Gruß
Günni
Member: nxclass
nxclass Feb 15, 2009 at 11:31:15 (UTC)
Goto Top
.. jetzt über schwemmt Sunny6 nicht mit eurem Code.

http://www.php.net/manual/de/ und http://de.selfhtml.org/ muss man kennen.

Mein Senf dazu:
Was wenn jemand ein 'artTyp' = 4 absendet - dann hat er keine MWSt. - weil da jemend den
switch () {
..
    default:
        ...!!!...
}
vergessen hat. face-wink
Member: Guenni
Guenni Feb 15, 2009 at 12:22:48 (UTC)
Goto Top
Hi nxclass,


aus Versehen artTyp=4 abzusenden ist für OttoNormal eigentlich nicht möglich,

da er seine Auswahl aus der Select-Liste vornimmt, und da sind die Werte vorgegeben.


Ein gewiefter Freak kann das Formular natürlich manipulieren und andere Werte unterschieben,

aber darum ging es in diesem Thread doch nicht. Es ging sich hier erstmal um die Frage, wie

kann ich Daten übertragen und auswerten.


Die Frage, wie kann ich Manipulationen verhindern, gehört in eine ganz andere Kategorie, die

man angehen kann, wenn alles andere funktioniert.


Und wie du schon richtig bemerktest:

Wir wollen Sunny doch nicht überfordern face-smile


Gruß
Günni
Mitglied: 72036
72036 Feb 15, 2009 at 14:09:02 (UTC)
Goto Top
Hallo Günni, danke schonmal für deine Antwort, aber ich steige da nicht so ganz durch.
Wo berechnet er denn jetzt den Bruttowert und wo die Märchensteuer??

Ich fände es super, wenn du oder jemand anders, mir meine Verfassung eventuell korrigieren könnte.
Wir lernen das in der Art auch in der Schule.


Vielen Dank auch an nxclass.....die Seiten habe ich direkt gespeichert!
Alina
Mitglied: 72036
72036 Feb 15, 2009 at 16:54:26 (UTC)
Goto Top
ein super Genie hat mir geholfen und wir haben es geschafft über das ICQ meine Version so zu ändern, dass jetzt alles läuft und ich bin sooooo glücklich darüber *megafreu*

habe sogar alles verstanden hehe.

Aber danke nochmal an alle hier face-wink

lg Sunny
Member: masterG
masterG Feb 23, 2009 at 09:07:28 (UTC)
Goto Top
Somit Thread closed

masterG(Moderator)