waarden uit database in procenten

Status
Niet open voor verdere reacties.

bertkamphuis

Gebruiker
Lid geworden
17 apr 2009
Berichten
14
goedendag,

ik heb weer een probleem met het programmeren in php...
ik heb arrays in een database staan, die ik vervolgens op wil vragen met php.

het gaat om antwoorden van een enquete, die als volgt in de database staan:
id antwoorden
1 ja|leuk|slecht
2 nee|niet leuk|goed
3 ja|zeer leuk|redelijk

de id's zijn het aantal mensen die de enquete ingevuld hebben, tussen de | staan de antwoorden op de vragen.

ik weet hoe je de gegevens op moet vragen en vervolgens moet ontleden met explode, maar hoe krijg percentages uit bovenstaande gegevens? Dus zo:
vraag 1:
ja: 66 %
nee: 33%

vraag2:
leuk: 33%
niet leuk:33%
zeer leuk:33%

ik hoop dat iemand mij hierbij kan helpen....
 
Je telt je aantal rijen (COUNT), dus je hebt bijv. 15 mensen die een antwoord gegeven hebben. Vijf (5) hiervan, vonden het leuk. Dit is dus 5/15 * 100 = 33,333%. Je moet dus eerst alles optellen middels de count als totaal, en dan je aantal die een bepaald antwoord gaven delen door het totaal * 100. Met ja en nee is het dan redelijk makkelijk zou ik zeggen.
 
ok, het totaal aantal rijen tellen is geen probleem. Maar hoe kan ik het aantal tellen dat bijvoorbeeld 'ja' heeft geantwoord?
tot nu toe heb ik dit:
Code:
<?php
session_start();
include 'config.php';

$data = mysql_query("SELECT antwoord FROM antwoorden");
while( $antwoord = mysql_fetch_array( $data ) )
{

	$split=explode('|',$antwoord['antwoord']);
	echo $split[2];
	echo '<br>';

}
$aantal_mensen=mysql_num_rows(mysql_query("SELECT id FROM antwoorden WHERE antwoord='ja'));
echo $aantal_mensen;
?>
De gegevens staan dus zo in de database:
1 ja|nee|nee
2 ja|ja|ja
3 nee|nee|ja

het resultaat van bovenstaand script is nu:
nee
ja
ja
0

hoe kan ik nu de aantal ja's tellen?
 
Je kunt een simpele functie maken die over de lijst heenloopt en de waarden telt:

PHP:
function tel_voorkomen ( $array, $tel ) {
  $aantal = 0;
  foreach ( $array as $waarde ) {
    if ( $tel == $waarde ) {
      $aantal++;
    }
  }
  return $aantal;
}
 
sorry, maar ik begrijp niet echt wat je bedoeld. Volgens mij maakt het script nu voor elke rij van de database een array aan met maar één waarde (3e waarde). het aantal arrays is dus gelijk aan het aantal rijen in de database. Wat ik nu eigenlijk wil, is dat de arrays doorlopen worden en de waarden worden geteld. Stel er zijn 5 arrays:
ja
nee
ja
nee
nee
nu wil ik dus het aantal arrays tellen die de waarde ja bevatten.
Iemand enig idee?
 
Als je zo naar je data kijkt en wat je wilt bereiken zou je het volgende moeten doen

1. Pak koffie :)
2. Met count in de query kijken hoeveel rijen je hebt,
3. Met een query alle antwoorden ophalen en die antwoorden in 1 string plaatsen met de operator zoals dit $string .= $row["antwoord"];

4. Met explode die string exploden op |
5. Met een lus door de geexplode array loopen en met strpos of een regex checken of het antwoord het antwoord is wat je zocht, als het een ja is tel je ergens de variable op waarin je ja antwoorden telt. idem voor nee
6. Dan de procenten berekening zoals eerder vermeld in dit topic.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan