Gammal 2010-07-29, 17:05   #1
Andreas
Medlem
 
Reg.datum: nov 2003
Inlägg: 171
Standard

Decimaler i PHP


Vill mata in data i ett double-fält i databasen och vill då först kolla så att det är ett giltigt tal med decimaler (komma).
Tex skall 12,50 vara ett giltigt tal.

Använder checken is_numeric för att kolla detta, men denna funktion använder sig av . som separator och funkar således ej.
Har även testat att i början av scriptet sätta:
setLocale(LC_NUMERIC,'sv');
Men inte heller det ger önskar resultat.

Någon lösning?

Tack!

Andreas
Gammal 2010-07-29, 17:47   #2
vco-systems
Mycket flitig postare
 
vco-systemss avatar
 
Reg.datum: dec 2004
Inlägg: 725
Standard

Byt ut alla ',' i strängen mot '.' innan du testar.
Fungerar ',' att använda vid lagring i databasen? Annars måste du ju i alla fall byta skiljetecken.
__________________
www.bildgravyr.se - namnbrickor fr. 16:-, undersköterskebroscher 40:-. Lasergravyr på skinn/trä/plast/metall mm.
Gammal 2010-07-30, 11:05   #3
qson
Medlem
 
Reg.datum: sep 2006
Inlägg: 275
Standard

Citat:
Ursprungligen postat av vco-systems Visa inlägg
Byt ut alla ',' i strängen mot '.' innan du testar.
Fungerar ',' att använda vid lagring i databasen? Annars måste du ju i alla fall byta skiljetecken.
Kan nästan garantera att kommatecken inte funkar som decimalseparator i databasen.
__________________
“Commenting your code is like cleaning your bathroom — you never want to do it, but it really does create a more pleasant experience for you and your guests.”
– Ryan Campbell
Gammal 2010-07-31, 12:00   #4
KarlRoos
Har WN som tidsfördriv
 
KarlRooss avatar
 
Reg.datum: jul 2007
Inlägg: 1 222
Skicka ett meddelande via ICQ till KarlRoos Skicka ett meddelande via AIM till KarlRoos Skicka ett meddelande via MSN till KarlRoos Skicka ett meddelande via Yahoo till KarlRoos Skicka ett meddelande via Skype™ till KarlRoos
Standard

$tal = (double) str_replace(',', '.', $tal);
__________________
Karl Laurentius Roos | karlroos.se | roosmedia.se
Gammal 2010-07-31, 14:40   #5
tartareandesire
Supermoderator
 
Reg.datum: jan 2004
Inlägg: 5 567
Standard

Vill du absolut använda det svenska skrivsättet även vid lagring så får du köra det som text men det är sällan en bra idé. Annars är det alltid punkt som gäller för decimalavgränsning.
__________________
www.musiknyheter.nu | www.tartareandesire.com
konsult - främst PHP / MySQL + Javascript, HTML/CSS
Gammal 2010-08-01, 00:03   #6
Jine
Mycket flitig postare
 
Jines avatar
 
Reg.datum: feb 2005
Inlägg: 593
Skicka ett meddelande via MSN till Jine
Standard

Borde inte:
http://se2.php.net/manual/en/function.number-format.php

kunna lösa det?
__________________
Webbhotell och domäner, Jine.se - Jim Nelin på LinkedIn
Gammal 2010-08-04, 22:53   #7
qson
Medlem
 
Reg.datum: sep 2006
Inlägg: 275
Standard

Citat:
Ursprungligen postat av Jine Visa inlägg
number_format används vid utskrift för att formatera som ett "tal", med tusentalsavgränsare och decimalkomma osv.
PHP och MySQL hanterar dock bara punkt som decimalavgränsare.
Alltså får man hela tiden konvertera från komma till punkt när man läser input från användaren, och från punkt till komma när man presenterar (skriver ut) till användaren.
PHP-kod:
function toInt($s) {
  return (float) 
preg_replace(array('#,#','/[^0-9.-]/'),array('.',''),$s);
}
function 
toString($i) {
  return 
number_format($i,2,',',' ');   

__________________
“Commenting your code is like cleaning your bathroom — you never want to do it, but it really does create a more pleasant experience for you and your guests.”
– Ryan Campbell
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 
Ämnesverktyg
Visningsalternativ

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 07:44.


Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson