myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Webmaster Talk > Entwicklung & Programmierung
Seite neu laden

Währungsrechner PHP, was is falsch??

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 18.01.12, 16:33   #1
Fooker
Anfänger
 
Registriert seit: Jan 2010
Beiträge: 18
Bedankt: 8
Fooker ist noch neu hier! | 0 Respekt Punkte
Standard 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)
{
    
$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! :);
    
?>
Fooker ist offline   Mit Zitat antworten
Ungelesen 18.01.12, 19:10   #2
Epeos
Ist öfter hier
 
Benutzerbild von Epeos
 
Registriert seit: Nov 2010
Beiträge: 198
Bedankt: 96
Epeos ist noch neu hier! | 0 Respekt Punkte
Standard

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)
Epeos ist offline   Mit Zitat antworten
Ungelesen 18.01.12, 19:29   #3
Fooker
Anfänger
 
Registriert seit: Jan 2010
Beiträge: 18
Bedankt: 8
Fooker ist noch neu hier! | 0 Respekt Punkte
Standard

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!!!!
Fooker ist offline   Mit Zitat antworten
Ungelesen 18.01.12, 20:19   #4
kkhamburg
Profi
 
Benutzerbild von kkhamburg
 
Registriert seit: May 2009
Ort: riding the roos
Beiträge: 1.468
Bedankt: 1.057
kkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punkte
Standard

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

Die korrekte Form in PHP ist folgende :

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

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]


kkhamburg ist offline   Mit Zitat antworten
Ungelesen 19.01.12, 04:44   #5
kkhamburg
Profi
 
Benutzerbild von kkhamburg
 
Registriert seit: May 2009
Ort: riding the roos
Beiträge: 1.468
Bedankt: 1.057
kkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punkte
Standard

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
__________________

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]


kkhamburg ist offline   Mit Zitat antworten
Ungelesen 19.01.12, 20:37   #6
Epeos
Ist öfter hier
 
Benutzerbild von Epeos
 
Registriert seit: Nov 2010
Beiträge: 198
Bedankt: 96
Epeos ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von kkhamburg Beitrag anzeigen
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)
Epeos ist offline   Mit Zitat antworten
Ungelesen 19.01.12, 21:30   #7
kkhamburg
Profi
 
Benutzerbild von kkhamburg
 
Registriert seit: May 2009
Ort: riding the roos
Beiträge: 1.468
Bedankt: 1.057
kkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punkte
Standard

Zitat:
Zitat von Epeos Beitrag anzeigen
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
__________________

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]


kkhamburg ist offline   Mit Zitat antworten
Ungelesen 20.01.12, 15:55   #8
Epeos
Ist öfter hier
 
Benutzerbild von Epeos
 
Registriert seit: Nov 2010
Beiträge: 198
Bedankt: 96
Epeos ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von kkhamburg Beitrag anzeigen
... 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)
Epeos ist offline   Mit Zitat antworten
Ungelesen 20.01.12, 16:06   #9
Kam0
Anfänger
 
Registriert seit: Nov 2011
Beiträge: 13
Bedankt: 6
Kam0 ist noch neu hier! | 0 Respekt Punkte
Standard

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
Kam0 ist offline   Mit Zitat antworten
Ungelesen 21.01.12, 20:32   #10
revolerheld5
Newbie
 
Benutzerbild von revolerheld5
 
Registriert seit: Dec 2011
Beiträge: 60
Bedankt: 19
revolerheld5 ist noch neu hier! | 0 Respekt Punkte
Standard

Mal ein kleiner Einwurf zu den ganzen If's. Wäre da nicht eine switch als bessere Alternative?
revolerheld5 ist offline   Mit Zitat antworten
Antwort


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

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 Uhr.


Sitemap

().