Gegevens uit een database halen.
Ik heb een database gemaakt met een aantal vragen. De velden heten vraag1, vraag2, vraag3 etc.
Volgens mij is de opzet van de database niet goed, want voor iedere vraag moet ik opnieuw een mysql query uitvoeren. Dat moet simpeler kunnen.
Kan iemand mij advies geven hoe het beter kan?
O ja, je kan het zien op http://stef.no-ip.org/test/test.php
<html>
<head></head>
<body>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
echo "tekst om te laten zien dat de php code goed gaat<br>";
// de tabel vragen bevat vraag1, vraag2, vraag3 etc tm vraag40
// met een radiobutton kunnen de antwoorden
// 1 - helemaal oneens
// 2 - oneens
// 3 - geen mening
// 4 - eens
// 5 - helemaal eens
// 0 - geen antwoord aangeklikt
// gegeven worden
$db = mysql_connect ("localhost","root");
if (!$db){
echo "<br>no connection to database";
}
if (! @mysql_select_db("enquete",$db)){
die('<p>kan de enquete database niet vinden</p>');
}else{
//echo "<p> verbonden met enquete database</p>";
}
$sql = "select vraag1,count(*) from vragen group by vraag1";
if (!$result=mysql_query($sql,$db)) {
echo "<center><h4>query mislukt</center></h4>/n";
}
// dit is het resultaat op de mysql command line
//+--------+----------+
//| vraag1 | count(*) |
//+--------+----------+
//| 0 | 1 | 1 maal niet beantwoord
//| 4 | 4 | 4 maal antwoord 'eens'
//+--------+----------+
// als resultaat wil ik graag kolommen met een percentage
// helemaal oneens oneens geen mening eens helemaal eens geen antwoord
// 80% 20%
if ($myrow = mysql_fetch_row($result)) {
$resultaatid = $myrow["id"];
//echo '<div id="table3">';
echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">';
do {
$resultaatid = $myrow[id];
printf("<tr><td>%s</td><td>%s</td></tr></a><br>\n", $myrow[0], $myrow[1] );
} while ($myrow = mysql_fetch_array($result));
echo '</table>';
}else{
die('mysql_fetch_array mislukt');
}
echo "tekst om te laten zien dat er in ieder geval iets gebeurt";
// je kan het gemiddelde antwoord uit mysql halen met
//mysql> select (avg(vraag1)-1)*25 from vragen where vraag1>0;
//+--------------------+
//| (avg(vraag1)-1)*25 |
//+--------------------+
//| 75.0000 |
//+--------------------+
$sql = "select (avg(vraag1)-1)*25 from vragen where vraag1>0";
$result = mysql_query($sql);
$myrow = mysql_fetch_row($result);
echo $myrow[1].'<br><br>';
do {
$resultaatid = $myrow[id];
printf("<tr><td>%s</td><td>%s</td></tr></a><br>\n", $myrow[0], $myrow[1] );
} while ($myrow = mysql_fetch_array($result));
?>
echo "tekst om te laten zien dat de php code goed gaat<br>";
// de tabel vragen bevat vraag1, vraag2, vraag3 etc tm vraag40
// met een radiobutton kunnen de antwoorden
// 1 - helemaal oneens
// 2 - oneens
// 3 - geen mening
// 4 - eens
// 5 - helemaal eens
// 0 - geen antwoord aangeklikt
// gegeven worden
$db = mysql_connect ("localhost","root");
if (!$db){
echo "<br>no connection to database";
}
if (! @mysql_select_db("enquete",$db)){
die('<p>kan de enquete database niet vinden</p>');
}else{
//echo "<p> verbonden met enquete database</p>";
}
$sql = "select vraag1,count(*) from vragen group by vraag1";
if (!$result=mysql_query($sql,$db)) {
echo "<center><h4>query mislukt</center></h4>/n";
}
// dit is het resultaat op de mysql command line
//+--------+----------+
//| vraag1 | count(*) |
//+--------+----------+
//| 0 | 1 | 1 maal niet beantwoord
//| 4 | 4 | 4 maal antwoord 'eens'
//+--------+----------+
// als resultaat wil ik graag kolommen met een percentage
// helemaal oneens oneens geen mening eens helemaal eens geen antwoord
// 80% 20%
if ($myrow = mysql_fetch_row($result)) {
$resultaatid = $myrow["id"];
//echo '<div id="table3">';
echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">';
do {
$resultaatid = $myrow[id];
printf("<tr><td>%s</td><td>%s</td></tr></a><br>\n", $myrow[0], $myrow[1] );
} while ($myrow = mysql_fetch_array($result));
echo '</table>';
}else{
die('mysql_fetch_array mislukt');
}
echo "tekst om te laten zien dat er in ieder geval iets gebeurt";
// je kan het gemiddelde antwoord uit mysql halen met
//mysql> select (avg(vraag1)-1)*25 from vragen where vraag1>0;
//+--------------------+
//| (avg(vraag1)-1)*25 |
//+--------------------+
//| 75.0000 |
//+--------------------+
$sql = "select (avg(vraag1)-1)*25 from vragen where vraag1>0";
$result = mysql_query($sql);
$myrow = mysql_fetch_row($result);
echo $myrow[1].'<br><br>';
do {
$resultaatid = $myrow[id];
printf("<tr><td>%s</td><td>%s</td></tr></a><br>\n", $myrow[0], $myrow[1] );
} while ($myrow = mysql_fetch_array($result));
?>
</body>
</html>
Gewijzigd op 01/01/1970 01:00:00 door Hein
Bump
dan maak je daar de batabase
variables in..
Ik weet het niet zeker hoor ben net nieuw
in php wereld :P
Dus ik DENk dit maar wil je graag helpen ;)
We kunnen dus nog veel leren.
Weet je, ik kan die variabelen wel opvragen, maar dan krijg je in mijn concept dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
$sql = "select (avg(vraag1)-1)*25 from vragen where vraag1>0";
$result = mysql_query($sql);
$myrow = mysql_fetch_row($result);
echo $myrow[1].'<br><br>';
do {
$resultaatid = $myrow[id];
printf("<tr><td>%s</td><td>%s</td></tr></a><br>\n", $myrow[0], $myrow[1] );
} while ($myrow = mysql_fetch_array($result));
$sql = "select (avg(vraag2)-1)*25 from vragen where vraag2>0";
$result = mysql_query($sql);
$myrow = mysql_fetch_row($result);
echo $myrow[1].'<br><br>';
do {
$resultaatid = $myrow[id];
printf("<tr><td>%s</td><td>%s</td></tr></a><br>\n", $myrow[0], $myrow[1] );
} while ($myrow = mysql_fetch_array($result));
$sql = "select (avg(vraag1)-1)*25 from vragen where vraag1>0";
$result = mysql_query($sql);
$myrow = mysql_fetch_row($result);
echo $myrow[1].'<br><br>';
do {
$resultaatid = $myrow[id];
printf("<tr><td>%s</td><td>%s</td></tr></a><br>\n", $myrow[0], $myrow[1] );
} while ($myrow = mysql_fetch_array($result));
$sql = "select (avg(vraag3)-1)*25 from vragen where vraag3>0";
$result = mysql_query($sql);
$myrow = mysql_fetch_row($result);
echo $myrow[1].'<br><br>';
do {
$resultaatid = $myrow[id];
printf("<tr><td>%s</td><td>%s</td></tr></a><br>\n", $myrow[0], $myrow[1] );
} while ($myrow = mysql_fetch_array($result));
$sql = "select (avg(vraag4)-1)*25 from vragen where vraag4>0";
$result = mysql_query($sql);
$myrow = mysql_fetch_row($result);
echo $myrow[1].'<br><br>';
do {
$resultaatid = $myrow[id];
printf("<tr><td>%s</td><td>%s</td></tr></a><br>\n", $myrow[0], $myrow[1] );
} while ($myrow = mysql_fetch_array($result));
$sql = "select (avg(vraagX)-1)*25 from vragen where vraagX>0";
$result = mysql_query($sql);
$myrow = mysql_fetch_row($result);
echo $myrow[1].'<br><br>';
do {
$resultaatid = $myrow[id];
printf("<tr><td>%s</td><td>%s</td></tr></a><br>\n", $myrow[0], $myrow[1] );
} while ($myrow = mysql_fetch_array($result));
?>
$sql = "select (avg(vraag1)-1)*25 from vragen where vraag1>0";
$result = mysql_query($sql);
$myrow = mysql_fetch_row($result);
echo $myrow[1].'<br><br>';
do {
$resultaatid = $myrow[id];
printf("<tr><td>%s</td><td>%s</td></tr></a><br>\n", $myrow[0], $myrow[1] );
} while ($myrow = mysql_fetch_array($result));
$sql = "select (avg(vraag2)-1)*25 from vragen where vraag2>0";
$result = mysql_query($sql);
$myrow = mysql_fetch_row($result);
echo $myrow[1].'<br><br>';
do {
$resultaatid = $myrow[id];
printf("<tr><td>%s</td><td>%s</td></tr></a><br>\n", $myrow[0], $myrow[1] );
} while ($myrow = mysql_fetch_array($result));
$sql = "select (avg(vraag1)-1)*25 from vragen where vraag1>0";
$result = mysql_query($sql);
$myrow = mysql_fetch_row($result);
echo $myrow[1].'<br><br>';
do {
$resultaatid = $myrow[id];
printf("<tr><td>%s</td><td>%s</td></tr></a><br>\n", $myrow[0], $myrow[1] );
} while ($myrow = mysql_fetch_array($result));
$sql = "select (avg(vraag3)-1)*25 from vragen where vraag3>0";
$result = mysql_query($sql);
$myrow = mysql_fetch_row($result);
echo $myrow[1].'<br><br>';
do {
$resultaatid = $myrow[id];
printf("<tr><td>%s</td><td>%s</td></tr></a><br>\n", $myrow[0], $myrow[1] );
} while ($myrow = mysql_fetch_array($result));
$sql = "select (avg(vraag4)-1)*25 from vragen where vraag4>0";
$result = mysql_query($sql);
$myrow = mysql_fetch_row($result);
echo $myrow[1].'<br><br>';
do {
$resultaatid = $myrow[id];
printf("<tr><td>%s</td><td>%s</td></tr></a><br>\n", $myrow[0], $myrow[1] );
} while ($myrow = mysql_fetch_array($result));
$sql = "select (avg(vraagX)-1)*25 from vragen where vraagX>0";
$result = mysql_query($sql);
$myrow = mysql_fetch_row($result);
echo $myrow[1].'<br><br>';
do {
$resultaatid = $myrow[id];
printf("<tr><td>%s</td><td>%s</td></tr></a><br>\n", $myrow[0], $myrow[1] );
} while ($myrow = mysql_fetch_array($result));
?>
enz. enz.
En als je de database slim opzet dan loop je met een loop door alle vragen heen en mis je een hele hoop code.
Waar ik zelf aan dacht is macrosubstitutie.
zoiets als
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
vraagnr vraag antwoord
1 vraag 3
2 vraag 5
3 vraag 0
4 vraag 3
$query = "SELECT `vraagnr`, `vraag`, count(*) FROM `vragen` GROUP BY `antwoord`";
?>
vraagnr vraag antwoord
1 vraag 3
2 vraag 5
3 vraag 0
4 vraag 3
$query = "SELECT `vraagnr`, `vraag`, count(*) FROM `vragen` GROUP BY `antwoord`";
?>
zoiets?
Gewijzigd op 01/01/1970 01:00:00 door arie
http://strampke.mine.nu/tabel-vragen.jpg waar je ziet dat 7 mensen de vragen hebben beantwoord.
Hoe krijg ik dat nou weer mooi op een scherm?
Je weet: garbage in, garbage out en volgens mij moet de opzet van de tabel beter kunnen.
Hein
De tabel kan je inzien op Hoe krijg ik dat nou weer mooi op een scherm?
Je weet: garbage in, garbage out en volgens mij moet de opzet van de tabel beter kunnen.
Hein
@Arie: Gebruik nooit en te nimmer backtics ` in je queries. Die leveren uiteindelijk meer problemen dan oplossingen op. Weghalen die zooi!