31. marts 2004 - 16:47Der er
12 kommentarer og 3 løsninger
Beregning med decimaler i PHP
Jeg har lavet en select form hvor man kan rate fra 1-5
1) Jeg bruger en Mysql database til at gemme data, jeg har oprettet et rate felt (rate 1-5) og et polls felt(antal stemmer) hvilken felt type skal jeg vælge for at håntere decimaler?
Jeg har tænkt mig at udregne værdien når data gemmes, og runde op eller ned når data vises på skærmen.
Jeg har prøvet at lave begegningen, ved ikke om den er rigtig :)
Først henter jeg værdier $all_polls = $rows['pools']; $rate_now = $rows['rate'];
Jeg vil gå ud fra at du kan nøjes med et felt af typen DECIMAL
Jeg kan ikke lige se om din beregning er rigtig, da jeg er lidt i tvivl hvilke data de forskellige variabler indeholder, men det er vel bare et spørgsmål om at regne gennemsnittet ud (lægge stemmerne sammen, og dividere med antallet af stemmer)
Til at afrunde med har php nogle indbyggede funktioner, du har nok kun brug for round() http://dk.php.net/round
Hvis jeg var dig, vil jeg bare lægge hver enkelt vote til i dit rate felt og ligeledes lægge 1 til polls. Så du har 'rate ialt' + 'antal stemmer'. Så er det jo bare at dividere de to.
Ja, Muddi har jo ganske ret. Jeg kunne bare ikke lige huske de funktioner der skulle bruges for at gøre det i mysql, og jeg var for doven til at kigge i min manual ;)
Hvis du stadig bruger mit eksempel, mht. opbygning af tabelle, kan du helt udelade feltet id fra tabelstrukturen, og udelukkendde have feltet rate.
Jeg bruger php da jeg aligevel henter alle felter fra tabellen:
$rateresult = ($row[rate] / $row[polls]) $rateresult = round($rateresult, 2); Jeg har nu lagt data i og får 2.86 som resultat hvordan får jeg det rundet op til 3? således at jeg kan indsætte 3 små billeder til at vise resultatet.
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.