Seite 1 von 2

Vault Mod: keine Nachkommastellen?

Verfasst: 23.08.2008 18:34
von Dungeonwatcher
Hi! 8)

Nachdem der Cash Mod nun endlich korrekt rechnet und anzeigt habe ich das gleiche Problem beim aktuellen Vault Mod. Standardmäßig kann er mit Nachkommastellen wohl nichts anfangen. Mittels number_format lässt sich zumindest schonmal die Anzeige des Geldes mit Nachkommastellen bewerkstelligen. Anschließend habe ich analog zum Cash Mod in der Tabelle phpbb_vault_users bei account_sum den Typ von INT auf Decimal 11,2 gesetzt. Trotzdem ignoriert der Vault Mod beim berechnen die Nachkommastellen.

Woran liegt's?

Bye

Re: Vault Mod 1.0.0 - keine Nachkommastellen?

Verfasst: 31.08.2008 21:55
von Dungeonwatcher
'n Abend große Meister der PHP Künste! 8)

Hat wirklich Niemand eine Idee? :roll:

Bye

Verfasst: 01.09.2008 03:28
von Teamkiller
Na ja bin zwar nicht der große PHP Meister sondern auch ehr Anfänger aber vielleicht läßt sich da was finden.

Zunächst einmal wann ignoriert der Vault Mod beim berechnen die Nachkommastellen ?

Bei der Verzinsung , beim Aktienkauf ???

oder wo fällt es dir auf ?

Ein bisschen mehr Infos währen schon nicht schlecht

Verfasst: 01.09.2008 08:23
von Dungeonwatcher
Moin! 8)
Teamkiller hat geschrieben:Na ja bin zwar nicht der große PHP Meister sondern auch ehr Anfänger aber vielleicht läßt sich da was finden.
Super. :)
Zunächst einmal wann ignoriert der Vault Mod beim berechnen die Nachkommastellen ?

Bei der Verzinsung , beim Aktienkauf ???
Bei jeder Aktion. Es lässt sich keine Aktie mit einem Wert anlegen wo es Nachkommastellen gibt. Aus 5,55 wird 5.

Wenn ich Aktien kaufe und einen Geldbetrag mit Nachkommastellen eingebe, dann wird letzteres ignoriert. Das ist daran zu sehen, das bei einem Guthaben von z.B. 100,55 und einem Kaufpreis von 5,55, anschließend noch 95,55 als Guthaben übrig sind.

Verfasst: 01.09.2008 18:18
von Teamkiller
Dann mal ein Versuch. :)

Ersetze in den Dateien

admin_vault_general.php
admin_vault_exchange.php
admin_vault_users.php
vault.php

jedes Vorkommen von intval durch doubleval.

Dann sollten deine Kommazahlen nicht mehr abgeschnitten werden.

Weiterhin muß du in der Datenbank in den Tabellen

vault_exchange + vault_exchange_users

alle Felder mit *price* auf das Format 11,2 umstellen.

Verfasst: 02.09.2008 07:28
von Dungeonwatcher
Moin, moin Meister! 8)
Teamkiller hat geschrieben:Dann mal ein Versuch. :)
Das ist schon mal nicht schlecht. Es lassen sich jetzt Aktienwerte mit Nachkommastellen anlegen und kaufen/verkaufen. :)

Nun geht's aber mit der Bank weiter. Dort lassen sich noch keine Beträge mit Nachkommastellen einzahlen/abbuchen. Ich habe mal die in der Tabelle phpbb_vault_users die Felder account_sum und loan_sum entsprechend geändert. Nun stehen auch dort die entsprechenden Kontoeinträge mit Nachkommastellen. Aber beim Einzahlen/Auszahlen werden diese weiterhin ignoriert. Es muss also wohl auch in den PHP Dateien etwas geändert werden, nur was? :roll:

Bye

Verfasst: 02.09.2008 19:04
von Teamkiller
Mahlzeit :)

Zuständig fürs Ein und Auszahlen ist die vault.php.
Hast du die Änderungen wie oben geschrieben da auch gemacht ?

Es geht um die Zeilen 63,64 & 66

$deposit_sum = intval($HTTP_POST_VARS['deposit_sum']);
$withdraw_sum = intval($HTTP_POST_VARS['withdraw_sum']);
$loan_sum = intval($HTTP_POST_VARS['loan_sum']);

intval durch doubleval ersetzen

$deposit_sum übermittelt den Einzahlungsbetrag
$withdraw_sum das was du abheben möchtest
$loan_sum den Kreditbetrag

Ein und Auszahlungen werden in der Tabelle vault_users im Feld account_sum gespeichert.

Wenn du alle Änderungen so gemacht hast sollte es eigendlich funktionieren.

Verfasst: 02.09.2008 23:41
von Dungeonwatcher
'n Abend! 8)

Perfekt, nun funktioniert auch die Ein- bzw. Auszahlung mit Nachkommastellen. THNX :)

Blieben jetzt (imho) noch 2 Stellen im Mod anzupassen. Da währe zuerst im ACP die Eingabe von Min und Max Bereich der Kursschwankungen. In der betreffenden admin_vault_exchange.php habe ich alles angepasst. Wenn ich nicht ganz falsch liege, muss ich in der Tabelle phpbb_vault_general im Feld config_value die Zellen stock_min_change und stock_max_change von INT auf decimal(11,2) umstellen. Nur wie bekomme ich das per PHPMyAdmin hin? Wenn ich diese Zellen bearbeiten will, kann ich den Typ nicht ändern?

Bye

Verfasst: 03.09.2008 06:55
von Teamkiller
Moin :)

Die Tabelle vault_general ist ein wenig anders aufgebaut als die bisher bearbeiteten Tabellen, in der Tabelle sieht du auch nur 2 Spalten, wenn du sie mal mit den anderen vergleichst siehst du auch die Unterschiede.

Lange Rede, kurzer Sinn, jede Spalte hat nur eine Definition die für alle nachfolgenden Reihen gültig ist, d.h. du mußt im den Fall die Spaltendefinition ändern, also in PHPMyAdmin die Tabelle vault_general anklicken, dann solltest du in der Struktur sein, falls nicht oben auf Struktur klicken.
Ausschlaggebend ist dann das Feld config_value, dieses änderst du dann auf diesmal auf Decimal 15,2 da es vorher schon mit der Größe 15 vordefiniert war.

Falls du so nicht damit klar kommst hier noch mal die entsprechende SQL Anweisung :

Code: Alles auswählen

ALTER TABLE `php_vault_general` CHANGE `config_value` `config_value` DECIMAL( 15, 2 ) NOT NULL DEFAULT '0.00'      
So dann viel Glück und Fun mit dem Vault Mod.

Verfasst: 03.09.2008 08:30
von Dungeonwatcher
Moin, moin mein PHP Genie! 8)

Auch das funktionierte bestens. :P

Nun muss ich halt mal beobachten ob die Verzinsung auch tatsächlich mit den Nachkommastellen arbeitet, bzw. ob die Aktienkurse diese auch berücksichtigen. :)

Nachdem ich nun noch diverse Male mit number_format die Anzeige der Werte im Forum angepasst habe, bleibt nur noch ein einziger "Schönheitsfehler" übrig. Dieser betrifft die Eingabe der Beträge. Standardmäßig werden diese im Amerikanischen Format mit dem Punkt als Trennungszeichen zu den Nachkommastellen eingegeben und stehen so natürlich auch in der Datenbank. Gibt es eine einfache Möglichkeit dieses Eingabeformat zum Komma ändern?

Bye