Variablen: Nachkomma Nullen....
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
asche
ausgabe
brauch
code
datei
datenbank
datum
ergebnis
ersten post
festlegen
fragestellung
haupt
http
leute
objekt
problem
startgeld
text
wissen
zahl
-
Hi Leute,
ich bin noch ein Anfänger in PHP und hab da mal 2 Fragen:
Ich habe die Variable $startgeld = 20
Das sollen 20€ sein! Dann habe ich ein Objekt, dass 20 cent kostet! $objekt = 0.20
$startgeld - $objekt
so nun bekomme ich aber nicht 19.80 € raus, sondern 19.8 ! Wie schaffe ich es, dass er die Null nach dem Komma nicht weglässt???
2. Wenn ich jetzt ein Objekt gekauft habe, dann soll das Startgeld jetzt nicht mehr 20€ sein sondern natürlich nurnoch 19,80€! das heißt, wenn ich noch ein anderes objekt kaufe für 30 cent, dann rechnet er ja 20-0.3! Ich hoff man versteht mich^^
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
versuchs mal so:
//Problem 1 und 2 $ergebnis = round($startgeld-$objekt, 2); echo "<br /> $ergebnis <br />"; //Problem 2 (wenn ichs richtig verstanden habe^^) $startgeld = $ergebnis; // jetzt ist startgeld = 19.80 $ergebnis = round($startgeld-0.30, 2); echo "<br /> $ergebnis <br />";
Zu Problem 2:
Du musst halt das Ergebnis der Letzten Rechnung wieder als Startgeld festlegen, also iwo zwischenspeichern, weiß ja nicht ob du mit Datenbanken oder so arbeitest...
Beitrag geändert: 15.9.2008 16:15:29 von myhead -
Ähm durch round() bekommst du keine andere Ausgabe... round ändert die Zahl an sich, indem es halt rundet.
Falls du als zum Bsp. mit der Zahl 19.7354543735 rechnen möchtest, allerdings nur eine Ausgabe von 2 Nachkommastellen möchtest mußt du das mit sprintf() bzw. printf() ausgeben.
<? echo sprintf('%0.2f', $ergebnis); // oder printf('%0.2f', $ergebnis); ?>
... in der Variable steht also danach immernoch die Zahl mit all ihren Nachkommastellen
Grüßle
Edit:
Jetzt hab ich´s doch glatt vergessen zu erklären... bei sprintf() gibt das %0.2f fir Formatierung an: 0 für mind. 1 Vorkommastelle und die 2 für 2 Nachkommastellen und das f für Float-Zahl
Beitrag geändert: 15.9.2008 16:15:05 von chaosinternet -
xD jaaa stimmt...oh man das ist jetz aber peinlich
chaosinternet schrieb:
Ähm durch round() bekommst du keine andere Ausgabe... round ändert die Zahl an sich, indem es halt rundet.
-
Das hier wird jetzt nicht als Spam gewertet *hoff*
Also, ich Anfänger, Datenbank? Erklärung, bitte! Und das mit den Nachkommastellen funktioniert schonmal! Dankeschön!
Editiert: Ich weiß nicht was ich an der Fragestellung ändern soll aber oaay :)
Was brauch ich dafür für eine Datenbank? Was bringt die, wie heißt die? Mehr erklärung dazu bitte!
Editiert zum 2.
Doch das wurde es :D
Du musst halt das Ergebnis der Letzten Rechnung wieder als Startgeld festlegen, also iwo zwischenspeichern, weiß ja nicht ob du mit Datenbanken oder so arbeitest...
Beitrag geändert: 15.9.2008 17:01:34 von verbrechergame -
Das hier wird jetzt nicht als Spam gewertet *hoff*
Also, ich Anfänger, Datenbank? Erklärung, bitte! Und das mit den Nachkommastellen funktioniert schonmal! Dankeschön!
Ich Profi, Datenbank hab ich auch! Bitte Abänderung der Fragestellung!
Sorry, aber werde aus dem Kauderwelch nicht schlau... was möchtest du genau wissen? ...kannst dazu deinen Text hier drüber abändern mit den Button rechts
Ich werde danach dann diesen Text halt editieren, wenn ich weiß was du willst.
Edit:
Es hat keiner etwas von einer Datenbank erzählt Es wurde lediglich festgestellt, dass round() die Zahl an sich rundet, während printf() nur eine gewisse Anzahl an Nachkommastellen ausgibt, die Zahl an sich aber unangetastet belässt.
(Doku sprintf() http://de2.php.net/manual/de/function.sprintf.php)
Beispiel:
<?php $zahl = 20.946465364; // die Zahl an sich wird gerundet - d.h. will man später // von $gerundet 4 Nachkommastellen haben, sind diese zwangsweise Null $gerundet = round($zahl, 2); echo "Zahl gerundet: ".$gerundet."<br />"; echo sprintf('Ausgabe bei gerundeter Zahl: %0.6f <br />', $gerundet); echo sprintf('Ausgabe bei orginal Zahl: %0.6f <br />', $zahl); ?>
Zu deinem Problem 2:
Dazu am Ende der Operation halt
$startgeld = $startgeld - $object;
rechnen.
$startgeld muß dann natürlich noch dorthin gespeichert werden, wo du es hergeholt hast. Wenn dies eine Datenbank war mußt du halt ein Update der Datenbank durchführen - falls du mit Dateien arbeitest mußt du den Wert in die Datei schreiben.
Ok neuen Thread bitte sonst blickt das keiner mehr.
Beitrag geändert: 15.9.2008 17:05:33 von chaosinternet -
Das hier wird jetzt nicht als Spam gewertet *hoff*
Also, ich Anfänger, Datenbank? Erklärung, bitte! Und das mit den Nachkommastellen funktioniert schonmal! Dankeschön!
Ich Profi, Datenbank hab ich auch! Bitte Abänderung der Fragestellung!
Sorry, aber werde aus dem Kauderwelch nicht schlau... was möchtest du genau wissen? ...kannst dazu deinen Text hier drüber abändern mit den Button rechts
Ich werde danach dann diesen Text halt editieren, wenn ich weiß was du willst.
Öhm, ich habs so verstanden.
Ich bin PHP ein anfänger.
Das Script das das mit den Nachkommastellen klären sollte, hat funktioniert.
Brauche ich für dieses ganze Script auch eine Datenbank?
Hoffe das das jetzt richtig übersetzt ist.
"Erklärung bitte" - Wie denn wenn wir nicht wissen was dein ziel ist, oder willst du wissen ob man für das Komma Script ne Extra Datenbank braucht? Möchtest du erzielen das dass verbleibende Geld des Users abgespeichert wird? Wenn ja, dann geht das mit:
- Datenbank (MySQL, hab davon noch nicht viel Ahnung)
- fwrite (PHP)
Wenns fwrite sein soll, dann:
leg eine Datei an, meinetwegen "userkonto.txt"
// Datei öffnen $datei = fopen("userkonto.txt", "a+"); // In Datei schreiben fwrite($datei, $geld); // Datei schließen $fclose ($datei);
Beitrag geändert: 15.9.2008 17:03:45 von sy -
Moment, ich editier nicht noch ein drittes Mal^^
Also:
Das mit den 2 Nachkommastellen funktioniert alles! aber ich hatte ja noch ein anderes Problem! Und zwar mit dem, dass das ErgenisGeld beim nächsten Kauf wieder das Startgeld sein soll (nicht 20€ sondern nur noch 19.80€) ! Und oben wurde da was mit Datenbank erwähnt! und ich möchte jetzt wissen, was die datenbaknk bringt und die datenbank mal erklärt haben! Dankeschön!
Beitrag geändert: 15.9.2008 17:10:46 von verbrechergame -
Ok ich hab das in meinem ersten Post nicht wirklich gescheckt, dass da auch etwas mit einer Datenbank kam (Asche auf mein Haupt)
Du holst doch irgendwoher diesen "Startwert" für jeden User? Oder hast du den Startwert global für alle gesetzt? ...das geht natürlich nicht ganz, denn du willst ja später die Nutzer unterscheiden.
Aus diesem Grund verwendet man entweder eine Datenbank, in der die Restgeldbestände pro User drin stehen oder eine Datei in der pro User die Restbestände drin stehen.
Je nach Aufwand deines Projekts hat das eine vor und Nachteile.
Wenn du das ganze also nur für 3 Leute machst und das auch nur der einzigste Wert ist den du abspeichern mußt, ist evtl. eine Datei besser.
Hingegen, wenn du das für 10 Leute und mehr machst und evtl. auch noch die Leute persönlich mit Namen ansprechen willst, ist eine Datenbank besser geeignet.
Dort kannst du nämlich viele Daten zu den Nutzern speichern, die du dann auf deiner Seite verwenden kannst. Dazu wird eine Verbindung zur (MySQL-) Datenbank aufgebaut und die entsprechenden Daten durch SQL-Befehle abgerufen.
(siehe Befehle: http://de2.php.net/manual/de/book.mysql.php)
Beitrag geändert: 15.9.2008 17:26:25 von chaosinternet -
Und oben wurde da was mit Datenbank erwähnt! und ich möchte jetzt wissen, was die datenbaknk bringt und die datenbank mal erklärt haben! Dankeschön!
*Durchatme*
Was bringt die Datenbank?
Die DB ist ein mittel um Daten in ihn zu speichern. Das ganze geht auch mit fwrite.
(In einem PHP Tut hab ich mal gelesen DB wäre die "schickere" Methode ;))
Was heißt hier ich will die Datenbank erklärt haben?!
Such dir ein PHP und MySQL Tutorial und schau dann dort... tz tz tz... ;)
Eine datenbank, is wie gesagt, ein Ort an den man Daten ablegt und speichert.
Um das mal veranschaulich zu machen:
http://tut.php-q.net/mysql.html
Noch irgendwelche Fragen?.....
Ok ich hab das in meinem ersten Post nicht wirklich gescheckt, dass da auch etwas mit einer Datenbank kam (Asche auf mein Haupt)
*Auch Asche auf mein Haupt*
Beitrag geändert: 15.9.2008 17:28:41 von sy -
Also:
Mein Freund hat mich hier her geholt und gesagt ich brauch das MySQL-teil
habs mir geholt, aber ich hatte nicht gecheckt, dass das mit datenbank gemeint war! Aber danke, alles funktioniert erstmal soweit ich das haben möcht!
-
meinst du Datenbank unter Auktionen oder PHPMyAdmin
-
Erst ersteigert (auktionen), aber unter phpmyAdmin mach ich das doch oder nicht?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage