Avatar billede majbom Novice
30. november 2008 - 09:20 Der er 9 kommentarer og
1 løsning

Decimaler fra mysql bliver ikke påvirket af setlocale()

hej experter

er stødt ind i et problem:

jeg har nogle tabeller som indeholder decimale tal, f.eks. 10.95.
jeg har sat

setlocale(LC_NUMERIC, "danish");

ind i toppen af mit dokument, men den udskriver det bare som det står i db: 10.95.

det virker som om at den tolker tallet som en streng, for hvis tallet er f.eks. 10.00, udskriver den det også som 10.00, selvom den burde lave det om til 10

jeg har prøvet datatyper som decimal, float og double i databasen, men det er samme problem.

hvis jeg erklærer en variabel i mit dokument som 10.95 udskriver den godt nok 10,95, men ikke på tal fra db'en.

hvorfor er det at det ikke virker fra databasen?

pft
Avatar billede erikjacobsen Ekspert
30. november 2008 - 10:13 #1
Hvilken felttype anvender du ?
Avatar billede expnet Seniormester
30. november 2008 - 10:41 #2
Prøv at fjerne: -> setlocale(LC_NUMERIC, "danish");

prøv at lave dit felt til: -> varchar(255)

Derefter sætte du: -> number_format($FRA_DIN_TABLE_HER , 2, ',', '.')
Avatar billede dkfire Nybegynder
30. november 2008 - 11:25 #3
Det vil da være hul i hovedet at ændre datatypen af feltet til varchar.
Så bliver det jo netop til en streng, og man kan derefter ikke behandle feltet som normale tal.

har du prøvet at typecaste din variabel ?? Prøv med floatval().
Ellers kan du prøve at se hvilke type din variabel er med gettype().
Avatar billede erikjacobsen Ekspert
30. november 2008 - 11:42 #4
"jeg har prøvet datatyper som decimal, float og double i databasen," ok - det overså jeg i første omgang ;)

Ja, MySql afleverer i sit eget format, uafhængig af setlocale. Meningen er at man skal bruge number_format, som expnet skriver.

Du får 10.00 med de 2 decimaler, ".00", når det er datatypen decimal. Det er li'som det den er til.
Avatar billede majbom Novice
30. november 2008 - 12:15 #5
så jeg SKAL bruge number_format - det havde jeg nemlig håbet på at kunne undgå, da det jo kan være ret omfattende...

jeg prøver lige at tjekke typen på variablen...
Avatar billede majbom Novice
30. november 2008 - 12:32 #6
typen er "string"...

det tyder på at jeg skal benytte number_format, det var dalidt træls!
Avatar billede erikjacobsen Ekspert
30. november 2008 - 12:45 #7
Nej, du kan også bare lægge 0 til:    print 0+$row['whatever'];
Avatar billede majbom Novice
30. november 2008 - 13:08 #8
-> erik - ja, det virker også...

men jeg vil jo gerne have de 2 nuller på, så je tror bare jeg holder mig til number_format()

tak for hjælpen til jer, det var egentlig eriks svar mht mysql jeg ledte efter, så jeg synes at du skal have point.
Avatar billede erikjacobsen Ekspert
30. november 2008 - 13:31 #9
Jeg samler slet ikke på point, tak.
Avatar billede majbom Novice
30. november 2008 - 13:44 #10
det er rigtigt, så ryger de da bare tilbage på kontoen, til en anden go gang :)

endnu en gang tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester