Avatar billede dmg Nybegynder
13. oktober 2004 - 18:24 Der er 24 kommentarer og
2 løsninger

regne i php fra mysql

Hej experts!

Jeg skal bruge hjælp til udregning af tal fra mysql database.

Jeg har lavet et tidregistrerings system, hvor jeg indtaster "antal timer" jeg har brugt og min nuværende "timeløn". De 2 tal ganger jeg så med hinanden og får et resultat. Det virker fint nok.

Problemet kommer her:

jeg kan godt sige:

4 * 450 (antal timer * timeløn)

men jeg kan ikke sige

20,25 * 450,99 (antal timer * timeløn)

I min tabel, har jeg 3 felter som jeg bruger til regnestykket:

tid (varchar) tid = antal timer
timelon (varchar) timelon = timeløn
indkomst (varchar) indkomst = rsultatet

det er som om den ikke kan regne med decimaltal? Men den skal helst kunne begge dele...

Skal jeg ændrer varchar typen til noget andet, eller er det i php man skal skrive det anderledes?

Jeg er temmelig newbie, så jeg er ikke så klog endnu ....griner :)

Håber rigtigt meget i kan hjælpe, for nu har jeg prøvet hele dagen med alt muligt og jeg kommer ikke længere :(
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 18:29 #1
Jeg synes da dine felter skal være double da det er kommatal
Avatar billede dmg Nybegynder
13. oktober 2004 - 18:34 #2
okay? double, kender jeg ik. Men den skal både kunne regne med kommatal og uden. kan det stadig lade sig gøre?
Avatar billede erikjacobsen Ekspert
13. oktober 2004 - 18:50 #3
Skal du regne med tallene i din varchar så skal de stå med punktum

  20.25 * 450.99
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 18:55 #4
double er netop kommatal, int er heltal og varchar er strenge (eller "character-variabler") :)
Avatar billede dmg Nybegynder
13. oktober 2004 - 19:01 #5
totalt fedt!!! det virkede sku :) wuhuuu nu jeg rigtig glad ;-)

Du har fortjent alle points!!!

Har dog lige et sidste spørgsmål, nu får jeg resultatet: 9132.5475 som jo også er helt rigtigt!

men er det muligt at få den til at runde op til 9133. Det ville være genialt. Måske evt hvis den kunne skrive det således ud 9.133,50.

Hvis du kan svare på det, giver jeg flere points :)
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 19:15 #6
Prøv med: $tal = money_format("[%!n]", $tal);
Avatar billede erikjacobsen Ekspert
13. oktober 2004 - 19:15 #7
Du kan med http://dk2.php.net/round

  print round(9132.5475);

Ellers kig evt på http://dk2.php.net/number_format
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 19:26 #8
$tal = 123456.78;
setlocale(LC_MONETARY, 'da_DK');
print money_format('%i', $tal);
Avatar billede dmg Nybegynder
13. oktober 2004 - 19:28 #9
hhhhmm.... legende.dk

jeg får denne fejl ved begge eksempler:

Fatal error: Call to undefined function: money_format()
Avatar billede erikjacobsen Ekspert
13. oktober 2004 - 19:32 #10
money_format findes vist ikke på Windows - derfor??
Avatar billede erikjacobsen Ekspert
13. oktober 2004 - 19:33 #11
Avatar billede dmg Nybegynder
13. oktober 2004 - 19:33 #12
Hej erikjacobsen.

Det ser ud til at virke med "print round(9132.5475);"

Men kan man få den til at skrive sådan:

9132.5475 = 9132.50 eller 9.133.00

Det ville være perfekt
Avatar billede hmortensen Nybegynder
13. oktober 2004 - 19:33 #13
$var = number_format($tal, 2, ',', '.');
echo $var;

Her kan du selv vælge decimal og 1000 seperator
Avatar billede dmg Nybegynder
13. oktober 2004 - 19:40 #14
til hindu_skp.

Ser spændende ud, men når jeg prøver følgende:

$tal '9132.5475';

$var = number_format($tal, 2, ',', '.');
echo $var;

kommer denne fejl:

Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in
Avatar billede hmortensen Nybegynder
13. oktober 2004 - 19:42 #15
$tal = '9132.5475';
du mangler et =
Avatar billede dmg Nybegynder
13. oktober 2004 - 19:44 #16
haha... dohhh..

yes nu udskriver den således: 9.132,55

men er det så muligt at få den til at runde op og ned? f.eks: 9.132,50
Avatar billede dmg Nybegynder
13. oktober 2004 - 19:47 #17
et andet spørgsmål, når jeg nu skal ligge alle de her tal sammen, så kan php jo ikke finde ud af at regne:

9.132,55 * 10
Avatar billede hmortensen Nybegynder
13. oktober 2004 - 19:49 #18
Regne først, formatere bagefter
Avatar billede dmg Nybegynder
13. oktober 2004 - 19:50 #19
Jeg tror godt jeg kan komme videre herfra! hvis i finder en løsning på ovenstående spørgsmål ville det være kanon...

Hvis i alle svare engang, så skal jeg nok dele points ud. erikjacobsen, du har scoret de 30 points ;)

og legende samt hindu_skp får 10 hver...

Håber det er ok med jer :-)
Avatar billede erikjacobsen Ekspert
13. oktober 2004 - 19:50 #20
Jeg tror nok den her afrunder til nærmeste 25-øre i en udskrift.
Test den selv, beløbet står i $a:

    number_format(floor(($a+0.125)*4)/4,2,",",".")
Avatar billede erikjacobsen Ekspert
13. oktober 2004 - 19:50 #21
Tak, men jeg samler slet ikke på point.
Avatar billede dmg Nybegynder
13. oktober 2004 - 19:52 #22
jo jacob!!! det fortjener du da :-) du kom med nogle rigtig gode goldkorn!
Avatar billede erikjacobsen Ekspert
13. oktober 2004 - 19:53 #23
Ja, selvfølgelig. Men jeg samler altså slet ikke på point.
Det er ikke noget personligt...
Avatar billede hmortensen Nybegynder
13. oktober 2004 - 19:54 #24
Lad hellere være med at presse erik, han vil hellere diskutere, end ha dine point :)
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 20:11 #25
Den var nu ellers rørende den der money_format() Selvfølgelig noget skidt at den ikke virkede der...

Men de tre linier jeg skrev giver dette resultat op mit webhotel: www.legende.dk/penge.php
Avatar billede dmg Nybegynder
14. oktober 2004 - 08:27 #26
Hehe.. jeg presser ik mere så. Men mange tak for hjælpen erik.

Jeg må prøve den money_format på et andet tidspunkt. Det lyder spændende.

Thanx for help guys!
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