[PHP/MySQL] Verwerking van database records *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • naartem
  • Registratie: September 2005
  • Laatst online: 23-03 12:45
<title> [PHP/MySQL] Verwerking van database records </title>

Ik heb een scriptje waar ik 12 vragen stel met meerkeuze vragen (radio buttons). Mensen kunnen dmv hun naam meedoen en de vragen beantwoorden. De resultaten worden per naam in de database opgeslagen op de volgende manier:
Naam, vraag1, vraag2, vraag3, etc..

In de kolommen vraag1,vraag2,etc.. komt het nummer te staan van het antwoord en er zijn veel antwoorden mogelijk per vraag (zo'n 20..jaja :P ) Dus deze nummers varieren van 1 tot 20.

Een voorbeeld van zo'n record is: "piet", "5", "12", "4", etc..

Nu wil een script maken die dit kan verwerken en waarbij ik bij elke vraag de top 5 gekozen antwoorden zie. Maar ik kom er niet meer uit hoe ik dit het makkelijkst kan doen, weet iemand misschien hoe ik dit het makkelijks uit de database kan halen en de berekeningen kan maken? Ik kom er niet uit hoe ik dit het makkelijkst kan doen...

Alvast heel erg bedankt!

[ Voor 8% gewijzigd door naartem op 04-01-2006 12:10 ]


Acties:
  • 0 Henk 'm!

  • Draakje078
  • Registratie: Juni 2004
  • Laatst online: 31-03-2024
Je kan de waarde uit de database halen en deze in een array zetten.
Als deze hierin staan kan je gaan rekenen.

(voor een tut. kijk op: http://www.jacqieline.com/tutorials.php

edit: Typo's

[ Voor 10% gewijzigd door Draakje078 op 04-01-2006 12:12 ]

C2D 6750, 8GB DDR667, Asus P5K-SE


Acties:
  • 0 Henk 'm!

Anoniem: 124320

Als je alle resultaten in procenten wilt laten zien, kan je zoiets al hieronder gebruiken. Dit script laat alle opties zien, maar je kunt natuurlijk ook eerst filteren op alleen de vijf hoogste.

PHP:
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$vragen = array(
    "vraag1",
    "vraag2",
    "ect");
$i = 1;
$result = @mysql_query("SELECT COUNT(*) FROM onderzoek");
$aantal = mysql_result($result, 0);
echo("<table>");
foreach($vragen as $vraag){
    echo("<tr><td style=\"text-align: left;\">$vraag:</td>");
    for($t=1; $t<=20; $t++){
        $result = @mysql_query("SELECT COUNT(*) FROM onderzoek WHERE vraag$i=$t");
        $procent = round((mysql_result($result, 0) / $aantal) * 100);
        $pixels = round($procent / 2);
        $padding = 50 - $pixels;
            echo("<td>[img]\"rood.gif\"[/img]<br>$procent</td>");
    }
    echo("</tr>");
    $i++;
}
echo("</table>");


fouten in de code voorbehouden ;-)

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12:04
Als je de databasestructuur wat verder normaliseerd wordt dit al een stuk eenvoudiger met een simpele join.

Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 15-06 13:03
Ik zou eens goed kijken naar COUNT(DISTINCT expr) in dit geval.

Zo kun je volgens mij in ieder geval in 1x kijken hoe vaak het meest gebruikte antwoord gegeven is met
PHP:
1
2
3
4
foreach ($vraag as $vraagnummer) {
  $query   = "SELECT MAX( COUNT( DISTINCT $vraagnummer)))";
  $aantal  = mysql_result($vraagnummer);
}

[ Site ] [ twitch ] [ jijbuis ]