Kom ihåg mig?
Home Menu

Menu


Decimaler i PHP

Ämnesverktyg Visningsalternativ
Oläst 2010-07-29, 17:05 #1
Andreas Andreas är inte uppkopplad
Medlem
 
Reg.datum: Nov 2003
Inlägg: 185
Andreas Andreas är inte uppkopplad
Medlem
 
Reg.datum: Nov 2003
Inlägg: 185
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
Andreas är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-07-29, 17:47 #2
vco-systemss avatar
vco-systems vco-systems är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2004
Inlägg: 774
vco-systems vco-systems är inte uppkopplad
Mycket flitig postare
vco-systemss avatar
 
Reg.datum: Dec 2004
Inlägg: 774
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.
vco-systems är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-07-30, 11:05 #3
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
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.
qson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-07-31, 12:00 #4
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
$tal = (double) str_replace(',', '.', $tal);
KarlRoos är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-07-31, 14:40 #5
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
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.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-08-01, 00:03 #6
Jines avatar
Jine Jine är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Feb 2005
Inlägg: 1 032
Jine Jine är inte uppkopplad
Har WN som tidsfördriv
Jines avatar
 
Reg.datum: Feb 2005
Inlägg: 1 032
Borde inte:
http://se2.php.net/manual/en/function.number-format.php

kunna lösa det?
Jine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-08-04, 22:53 #7
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
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,',',' ');   

qson är inte uppkopplad   Svara med citatSvara med citat
Svara


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

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 12:05.

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