Udtrække værdier fra MySql og lave beregninger på dem!

Tags:    php mysql

Jeg har følgende kode:

Fold kodeboks ind/udPHP kode 


Generelt har jeg brug for hjælp til at "fange" de data jeg trækker ud af databasen for at lave beregninger på dem!

Den konkrete problemstilling:
Jeg har "fanget" antallet af besvarelser med værdien 1 og 2. Hvordan udregner jeg (og skriver resultatet i min tabel) hvor stor en procentdel udgør besvarelserne med værdierne 1 og 2 af det samlede antal besvarelser.

Procentudregningen jeg har brug for:
$resultat1 / totalt antal besvarelser *100
$resultat2 / totalt antal besvarelser *100

Håber jeg har forklaret mig tydligt nok :-)









10 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 7 karma
Sorter efter stemmer Sorter efter dato
Hvis vi skal holde koden i nogenlunde samme stil, så kunne dette gøre det:
(ikke testet)
Fold kodeboks ind/udPHP kode 


edit:

Du kunne lave dit udtræk som:
select q1val, count(*) from bsu group by q1val

Det skulle give sådan en tabel:

Fold kodeboks ind/udSQL kode 




Indlæg senest redigeret d. 07.09.2011 11:56 af Bruger #955

Kan man enkelt udvide din kode så jeg kan lave denne udregning og opstilling for de mulige værdier (1 til 5)?


Fold kodeboks ind/udPHP kode 





Hej Stefan

Dit eksempel fungerer ikke helt!

Disse to linier kode returnerer begge værdien 1 - og det stemmer ikke overens mine data i MySql:

<td class="numbers"><?php echo $svar1_antal;?></td>
<td class="numbers"><?php echo $svar2_antal;?></td>

Disse to liner returnerer begge værdien 50 (procent):

<td class="numbers"><?php echo $svar1_procent;?></td>
<td class="numbers"><?php echo $svar2_procent;?></td>

Procentudregningen virker altså korrekt, men resultatet bliver forkert da udregningen bygger på forkerte værdier i $svar1_antal og $svar2_antal.

Jeg kan desværre ikke regne ud hvor det går galt ....



Indlæg senest redigeret d. 07.09.2011 16:14 af Bruger #16770
Hej Stefan

Dit eksempel fungerer ikke helt!

Disse to linier kode returnerer begge værdien 1 - og det stemmer ikke overens mine data i MySql...


Jep, jeg har lavet en fejl i koden. Det skyldes at jeg beder mysql, om at tælle alle rækker (count) og returnere antallet i en række. Derefter tæller jeg antallet af rækker, som selvfølgelig kun er 1.

Så er fejlen forklaret, jeg kan komme med en rettelse senere - hvis der ikke er andre der har hjulpet dig inden da.

Edit:

Denne kode er testet:
Fold kodeboks ind/udPHP kode 


Udtræk fra phpmyadmin:
Fold kodeboks ind/udSQL kode 




Indlæg senest redigeret d. 07.09.2011 17:03 af Bruger #955
Eller:
Fold kodeboks ind/udKode 




Hej Stefan

Dit eksempel fungerer ikke helt!

Disse to linier kode returnerer begge værdien 1 - og det stemmer ikke overens mine data i MySql...


Jep, jeg har lavet en fejl i koden. Det skyldes at jeg beder mysql, om at tælle alle rækker (count) og returnere antallet i en række. Derefter tæller jeg antallet af rækker, som selvfølgelig kun er 1.

Så er fejlen forklaret, jeg kan komme med en rettelse senere - hvis der ikke er andre der har hjulpet dig inden da.

Edit:

Denne kode er testet:
Fold kodeboks ind/udPHP kode 


Udtræk fra phpmyadmin:
Fold kodeboks ind/udSQL kode 


Hej igen

Jeg kan få din kode til at virke på mine data - mange tak!

Mit problem er dog ikke helt løst, da min problemstilling ikke løses 100% med din kode - men det er min egen fejl, da jeg har været upræcis i de forudsætninger jeg har givet. I min uvidenhed troede jeg at mit eksempel var beskrivende nok til at finde en løsning.

Når jeg kører sql-koden "SELECT q1val, count(*) FROM bsu GROUP BY q1val" i MySql får jeg følgende resultat:

q1val / count(*)
1 / 3
3 / 13
5 / 3

I min "q1val-kolonne" kan der optræde værdier fra 1 til 5 (måske endnu højere værdier i fremtiden). Som det ses af udtrækket fra min db, er der ingen poster med værdierne 2 og 4.
Med din kode, hvor jeg fanger værdi 0 og 1 får jeg altså antallet af værdier for 1 og 3. Jeg har brug for at kunne opstille en tabel med "antal" og "procent" for værdierne 1,2,3,4 og 5.

Kan man enkelt udvide din kode så jeg kan lave denne udregning og opstilling for de mulige værdier (1 til 5)?





og dette gør du selvfølgelig ikke sådan, men med en forløkke :=)



og dette gør du selvfølgelig ikke sådan, men med en forløkke :=)


Et skridt ad gangen.



true;




Kan man enkelt udvide din kode så jeg kan lave denne udregning og opstilling for de mulige værdier (1 til 5)?


Fold kodeboks ind/udPHP kode 



Hej Stefan
Det her er perfekt - jeg forstår koden og det virker. Jeg takker mange gange for din store hjælp. Håber at jeg en dag kan hjælpe tilbage ... (skal lige øve mig lidt)

Mange hilsner
Kristian



t