myGully.com

myGully.com (https://mygully.com/index.php)
-   Entwicklung & Programmierung (https://mygully.com/forumdisplay.php?f=72)
-   -   Währungsrechner PHP, was is falsch?? (https://mygully.com/showthread.php?t=2552165)

Fooker 18.01.12 16:33

Währungsrechner PHP, was is falsch??
 
Hallöchen :)
Hab mal folgendes PHP erstellt, allerdings will das nciht laufen :dozey:
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 :eek::rolleyes::D
Danke schonmal :T


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)
{
    
$Betrag/0.88 == $BetragP;
    
    echo 
$Betrag $Waehrung entspricht $BetragP Euro!;
}

else (
$Waehrung == || D)
{
    
$Betrag/1.49 == $BetragD;
    
    echo 
$Betrag $Waehrung entspricht $BetragD Euro!;
}

else (
$Waehrung == || F)
{
    
$Betrag/269.91 == $BetragF;
    
    echo 
$Betrag $Waehrung entspricht $BetragF Euro!;
}

else (
$Waehrung == || Y)
{
    
$Betrag/132.18 == $BetragY;
    
    echo 
$Betrag $Waehrung entspricht $BetragY Euro!;
}


    echo 
Und nun sehen Sie wie viel Geld sie haben! :);
    
?>


Epeos 18.01.12 19:10

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

Fooker 18.01.12 19:29

4. und 5. is mir selbst schon aufgefallen 8);)

2. is echt nen blöder Fehler :o

1. wusst ich nciht... :T
3. auch nicht.... wobei ich meine dieses elseif schonmal bei java gehört zu haben (is schon paar jahre her das ich Java hatte :D )

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!!!! :)

kkhamburg 18.01.12 20:19

7. stimmt auch so nicht und wird so auch nicht funktionieren.

Die korrekte Form in PHP ist folgende :

echo $Betrag . ' ' . $Waehrung . ' entspricht ' . $BetragY . ' Euro!';

kkhamburg 19.01.12 04:44

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

Epeos 19.01.12 20:37

Zitat:

Zitat von kkhamburg (Beitrag 23196768)
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.

kkhamburg 19.01.12 21:30

Zitat:

Zitat von Epeos (Beitrag 23200418)
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 :T

Epeos 20.01.12 15:55

Zitat:

Zitat von kkhamburg (Beitrag 23200594)
... weil ich es als "unsauber" empfinde.

Damit gibst Du meine Meinung über PHP perfekt wieder :)

Kam0 20.01.12 16:06

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

revolerheld5 21.01.12 20:32

Mal ein kleiner Einwurf zu den ganzen If's. Wäre da nicht eine switch als bessere Alternative?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:50 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.