Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
18.01.12, 16:33
|
#1
|
Anfänger
Registriert seit: Jan 2010
Beiträge: 18
Bedankt: 8
|
Währungsrechner PHP, was is falsch??
Hallöchen 
Hab mal folgendes PHP erstellt, allerdings will das nciht laufen 
Kann mir jemand sagen wo der/die Fehler sind?
Bei manchen Dingen bin ich mir sehr unsicher, da ich das aus nem bissel Wissen von php, c, und java zusammengeschmissen habe bzw öfter mal was durcheinander haue   
Danke schonmal
PHP-Code:
<html>
<head>
<title>Fremdwährung-in-€-Rechner, prog. by ......</title>
</head>
<body>
<H1>Was ist ihr Geld wert?</H1> <br/>
<H4> Fremdwährung-in-€-Rechner, prog. by blablabla </H4> <br/>
<form action = "Waehrungsrechner.php" method = "post">
Bitte geben Sie den gewünschten Betrag und die Fremdwährung ein, um den Betrag in Euro ausgeben zu lassen: <br />
Betrag: <input type="text" name="TxtBetrag" > <br />
Währung: <input type="text" name="TxtWaehrung" > <br />
<input type ="submit" name = "BtnOK" > <br/><br/>
zulässige Währungskürzel: <br/>
P --> Britische Pfund <br/>
D --> US-Dollar <br/>
F --> Ungarische Forint <br/>
Y --> Japan Yen <br/>
</form>
</body>
</html>
<?php
$Betrag = $_POST["TxtBetrag"];
$Waehrung = $_POST["TxtWaehrung"];
if ($Waehrung == p || P)
{
$Betrag/0.88 == $BetragP;
echo $Betrag $Waehrung entspricht $BetragP Euro!;
}
else ($Waehrung == d || D)
{
$Betrag/1.49 == $BetragD;
echo $Betrag $Waehrung entspricht $BetragD Euro!;
}
else ($Waehrung == f || F)
{
$Betrag/269.91 == $BetragF;
echo $Betrag $Waehrung entspricht $BetragF Euro!;
}
else ($Waehrung == y || Y)
{
$Betrag/132.18 == $BetragY;
echo $Betrag $Waehrung entspricht $BetragY Euro!;
}
echo Und nun sehen Sie wie viel Geld sie haben! :);
?>
|
|
|
18.01.12, 19:10
|
#2
|
Ist öfter hier
Registriert seit: Nov 2010
Beiträge: 198
Bedankt: 96
|
Da stimmt nicht viel.
1. Die Abfragen im if ergeben keinen Sinn. Ich vermute mal, du möchtest abfragen, ob $Waehrung p oder P ist, das geht nur getrennt: if (($Waehrung== p) || ($Waehrung == P))
2. Setzt man Zeichenketten in ' oder ", also if (($Waehrung== "p") || ($Waehrung == "P"))
3. Hinter die else gehört wieder ein if, also elseif (ein Wort)
4. Zuweisungen macht man nur mit einem =, also $Betrag/0.88=$BetragP
5. Auf der linken Seite der Zuweisung darf man nicht rechnen, also $BetragP = $Betrag/0.88
6. Auch in den echos setzt man Zeichenketten in ' oder ", also echo "$Betrag $Waehrung entspricht $BetragP Euro!"
7. Die Aussage hinter dem echo ist eine Aussage und kein Befehl, also "$Betrag $Waehrung entspricht $BetragP Euro."
Das gilt übrigens alles sinngemäß auch für Java, C und C#
Ich empfehle Dir, Dich mal mit den Sprachgrundlagen zu beschäftigen
__________________
On a long enough timeline, the survival rate for everyone drops to zero. (Fight Club)
|
|
|
18.01.12, 19:29
|
#3
|
Anfänger
Registriert seit: Jan 2010
Beiträge: 18
Bedankt: 8
|
4. und 5. is mir selbst schon aufgefallen 
2. is echt nen blöder Fehler
1. wusst ich nciht... 
3. auch nicht.... wobei ich meine dieses elseif schonmal bei java gehört zu haben (is schon paar jahre her das ich Java hatte  )
zu 6.
das hinter dem echo muss nicht unbedingt in "" kommen.... zumindest funzte das bisher immer so bei mir....
Ist halt die Frage ob nur mit "" die $Zuweisungen funzen.... ich werds demnach auf jeden fall mal rein tun...
Schonmal großes Danke!!!!
|
|
|
18.01.12, 20:19
|
#4
|
Profi
Registriert seit: May 2009
Ort: riding the roos
Beiträge: 1.468
Bedankt: 1.057
|
7. stimmt auch so nicht und wird so auch nicht funktionieren.
Die korrekte Form in PHP ist folgende :
echo $Betrag . ' ' . $Waehrung . ' entspricht ' . $BetragY . ' Euro!';
|
|
|
19.01.12, 04:44
|
#5
|
Profi
Registriert seit: May 2009
Ort: riding the roos
Beiträge: 1.468
Bedankt: 1.057
|
mal auf die Schnelle :
Code:
<?php
$Betrag = (isset($_POST["TxtBetrag"])) ? $_POST["TxtBetrag"] : 0;
$Waehrung = (isset($_POST["TxtWaehrung"])) ? $_POST["TxtWaehrung"] : '';
if ($Betrag <= 0 || $Waehrung == '') {
exit;
}
if ($Waehrung == 'p' || $Waehrung == 'P') {
$div_betrag = 0.88;
$cur_txt = ' Britische Pfund';
} elseif ($Waehrung == 'd' || $Waehrung == 'D'){
$div_betrag = 1.49;
$cur_txt = ' US Dollar';
} elseif ($Waehrung == 'f' || $Waehrung == 'F'){
$div_betrag = 269.91;
$cur_txt = ' Ungarische Forint';
} elseif ($Waehrung == 'y' || $Waehrung == 'Y'){
$div_betrag = 132.18;
$cur_txt = ' Japanische Yen';
}
echo $Betrag . $cur_txt . ' entsprechen ' . bc_div($Betrag,$div_betrag,2) . ' Euro!<br />';
echo 'Und nun sehen Sie wie viel Geld sie haben!';
?>
Wobei ich das zu aufwendig gelöst finde.
Du solltest in der From mit einem Select arbeiten, dann kannst du dir den ganzen Quatsch mit den Oder-Abfragen schonmal sparen und wenn du dann auch noch die Währung als Text abfragst ( evtl. als Währungskürzel) wird es noch übersichtlicher.
Beachte auch das du die $_POST keinesfalls so ungeprüft in eine Datenbank übernehmen dürftest.
Für den Befehl bc_div muss in PHP bc_math aktiv sein, das sollte aber heute Standard sein.
Und das Ganze hat natürlich auch nur rudimentäre Fehlerprüfung
|
|
|
19.01.12, 20:37
|
#6
|
Ist öfter hier
Registriert seit: Nov 2010
Beiträge: 198
Bedankt: 96
|
Zitat:
Zitat von kkhamburg
7. stimmt auch so nicht und wird so auch nicht funktionieren.
|
Doch. Mit "" interpretiert PHP Variablen im Ausgabetext, mit '' nicht, dann musst Du mit . arbeiten.
__________________
On a long enough timeline, the survival rate for everyone drops to zero. (Fight Club)
|
|
|
19.01.12, 21:30
|
#7
|
Profi
Registriert seit: May 2009
Ort: riding the roos
Beiträge: 1.468
Bedankt: 1.057
|
Zitat:
Zitat von Epeos
Doch. Mit "" interpretiert PHP Variablen im Ausgabetext, mit '' nicht, dann musst Du mit . arbeiten.
|
Stimmt, habe ich für mich persönlich ausgeklammert weil ich es als "unsauber" empfinde.
Aber du hast natürlich Recht
|
|
|
20.01.12, 15:55
|
#8
|
Ist öfter hier
Registriert seit: Nov 2010
Beiträge: 198
Bedankt: 96
|
Zitat:
Zitat von kkhamburg
... weil ich es als "unsauber" empfinde.
|
Damit gibst Du meine Meinung über PHP perfekt wieder
__________________
On a long enough timeline, the survival rate for everyone drops to zero. (Fight Club)
|
|
|
20.01.12, 16:06
|
#9
|
Anfänger
Registriert seit: Nov 2011
Beiträge: 13
Bedankt: 6
|
Er kann auch einfach mehrere input felder machen, die dann mit
Code:
<input type="test" name="NAME" value="echo ($_POST['NAME']) ? $_POST['NAME'] : '' ">
sich automatisch auf die richtigen werte stellen.. musst natürlich kkhamburgs code verwenden bzw den Umrechner ne 
aber finde das etwas leichter als Select..
nicht vergessen dass du überprüfen muss das maximal 1 der inputfelder gefüllt ist, damit ein Wert rausgepickt werden kann
Zitat:
Zitat:
Zitat:
Zitat von Epeos
Doch. Mit "" interpretiert PHP Variablen im Ausgabetext, mit '' nicht, dann musst Du mit . arbeiten.
|
Stimmt, habe ich für mich persönlich ausgeklammert weil ich es als "unsauber" empfinde.
Aber du hast natürlich Recht
|
Epeos, es natrürlich Programmiere abhängig, jedoch ist die die '. $var .' Methode oft beliebert, da man sie Variablen schöner aus dem Code erkennen kann und es damit eindeutig als SAUBERER gilt.
Man muss schileßlich auch nicht einrücken jedoch ist es empfelenswert
|
|
|
21.01.12, 20:32
|
#10
|
Newbie
Registriert seit: Dec 2011
Beiträge: 60
Bedankt: 19
|
Mal ein kleiner Einwurf zu den ganzen If's. Wäre da nicht eine switch als bessere Alternative?
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 Uhr.
().
|