Hoe te normaliseren
Hierboven een afbeelding van wat ik graag wil bereiken.
De rubriek naam lukt wel met daaronder de websites.
Maar achter iedere website moeten vinkjes komen te staan.
Ik heb 3 tabellen aangemaakt:
- software_rubriek
- software_naam
- software
In "software" heb ik de website namen staan en een kolom met "software_naam_id" waar ik een cijfer inzet die verband houd met de tabel "software_naam". (1,2,3,4 na gelang deze website deze software aanbied)
Ook staat in deze tabel een kolom "software_rubriek_id" zodat je kunt aangeven in welke rubriek deze link moet komen te staan.
In de tabel "software" zet ik dus de websites in.
Voor iedere software dat ze aanbieden een nieuwe regel.
Nu lukt het niet om de juiste vinkjes bij de juiste websitenaam onder de juiste software te plaatsen.
Wie weet hoe ik dit voor elkaar krijg.
Waarschijnlijk doe ik iets niet goed met het normaliseren, dat blijft moeilijk voor me.
Tabel: software_rubriek
id | naam
1 | Fotoalbum
2 | Kalender
--------------------------
Tabel: software_naam
id | naam
1 | mac
2 | linux
3 | online
4 | downloaden
------------------------------
Tabel: software
id | naam | software_naam_id | software_rubriek_id
1 | website1 | 1.......................| 1
2 | website1 | 2.......................| 1
3 | website1 | 3.......................| 1
4 | website2 | 1.......................| 2
enz.
Hieronder de code die ik nu heb maar deze werkt niet helemaal.
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<table width="620" border="0" align="center" cellpadding="2">
<tr>
<td height="25" width="620" align="center" class="favoriet-kopje-grijs" colspan="5">Aanbieders met Mac/Apple of Linux software</td></tr>
<tr>
<td> </td>
<?php
//laat de naam zien van de software
$querynaam = "
SELECT
id,
naam
FROM
software_naam
ORDER BY
id
";
$resultnaam = mysql_query($querynaam);
if(!$resultnaam)
{
trigger_error(mysql_error().' ('.$querynaam.')');
}
else{
while($rownaam = mysql_fetch_assoc($resultnaam)){
?>
<td align="center"><strong><?php echo $rownaam['naam']; ?></strong></td>
<?php
}
}
?>
</tr>
<!--begin van Fotoalbums -->
<?php
//laat de naam zien van de rubriek
$query = "
SELECT
id,
naam
FROM
software_rubriek
ORDER BY
id
";
$result = mysql_query($query);
if(!$result)
{
trigger_error(mysql_error().' ('.$query.')');
}
else{
while($row = mysql_fetch_assoc($result)){
?>
<tr>
<td class="naam" bgcolor="#EAF4FF"><?php echo $row['naam']; ?></td>
<td bgcolor="#EAF4FF"> </td>
<td bgcolor="#EAF4FF"> </td>
<td bgcolor="#EAF4FF"> </td>
<td bgcolor="#EAF4FF"> </td>
</tr>
<?php
//laat de naam zien van de website
$querysoftware = "
SELECT
software_rubriek.id,
software.naam,
software.link_id,
software.software_rubriek_id
FROM
software_rubriek
LEFT JOIN
software
ON
software_rubriek.id = software.software_rubriek_id
WHERE
software.software_rubriek_id = ". $row['id']."
GROUP BY
software.naam";
$resultsoftware = mysql_query($querysoftware);
if(!$resultsoftware)
{
trigger_error(mysql_error().' ('.$querysoftware.')');
}
else{
while($rowsoftware = mysql_fetch_assoc($resultsoftware)){
?>
<tr>
<td class="mac_tabel"><?php // naam van webshop
if($rowsoftware['link_id'] == 471 ){
echo '<a href="uit.php?id='. $rowsoftware['link_id'] .'" target="_blank" title="Mac en/of Linux software bij '. $rowsoftware['naam'] .'">'. $rowsoftware['naam'] .'</a> <img src="images/bullet_star.png" border="0" title="tip!">';
}else{
echo '<a href="uit.php?id='. $rowsoftware['link_id'] .'" target="_blank" title="Mac en/of Linux software bij '. $rowsoftware['naam'] .'">'. $rowsoftware['naam'] .'</a>';
}
?></td>
<?php
//laat de vinkjes zien
$queryvinkje = "
SELECT
software_naam.id,
software.naam,
software.software_naam_id AS ingevuld
FROM
software_naam
LEFT JOIN
software
ON
software.software_naam_id = software_naam.id
";
$resultvinkje = mysql_query($queryvinkje);
if(!$resultvinkje)
{
trigger_error(mysql_error().' ('.$queryvinkje.')');
}
else{
while($rowvinkje = mysql_fetch_assoc($resultvinkje)){
// mac software ja of nee
if( $rowvinkje['ingevuld'] ){
?>
<td class="mac_tabel" align="center"><img src="images/tick.png" border="0" ></td>
<?php
}else{
echo '';
}
}
?>
</tr>
<?php
}
}
}
}
}
?>
<!--eind van Fotoalbums -->
</table>
<tr>
<td height="25" width="620" align="center" class="favoriet-kopje-grijs" colspan="5">Aanbieders met Mac/Apple of Linux software</td></tr>
<tr>
<td> </td>
<?php
//laat de naam zien van de software
$querynaam = "
SELECT
id,
naam
FROM
software_naam
ORDER BY
id
";
$resultnaam = mysql_query($querynaam);
if(!$resultnaam)
{
trigger_error(mysql_error().' ('.$querynaam.')');
}
else{
while($rownaam = mysql_fetch_assoc($resultnaam)){
?>
<td align="center"><strong><?php echo $rownaam['naam']; ?></strong></td>
<?php
}
}
?>
</tr>
<!--begin van Fotoalbums -->
<?php
//laat de naam zien van de rubriek
$query = "
SELECT
id,
naam
FROM
software_rubriek
ORDER BY
id
";
$result = mysql_query($query);
if(!$result)
{
trigger_error(mysql_error().' ('.$query.')');
}
else{
while($row = mysql_fetch_assoc($result)){
?>
<tr>
<td class="naam" bgcolor="#EAF4FF"><?php echo $row['naam']; ?></td>
<td bgcolor="#EAF4FF"> </td>
<td bgcolor="#EAF4FF"> </td>
<td bgcolor="#EAF4FF"> </td>
<td bgcolor="#EAF4FF"> </td>
</tr>
<?php
//laat de naam zien van de website
$querysoftware = "
SELECT
software_rubriek.id,
software.naam,
software.link_id,
software.software_rubriek_id
FROM
software_rubriek
LEFT JOIN
software
ON
software_rubriek.id = software.software_rubriek_id
WHERE
software.software_rubriek_id = ". $row['id']."
GROUP BY
software.naam";
$resultsoftware = mysql_query($querysoftware);
if(!$resultsoftware)
{
trigger_error(mysql_error().' ('.$querysoftware.')');
}
else{
while($rowsoftware = mysql_fetch_assoc($resultsoftware)){
?>
<tr>
<td class="mac_tabel"><?php // naam van webshop
if($rowsoftware['link_id'] == 471 ){
echo '<a href="uit.php?id='. $rowsoftware['link_id'] .'" target="_blank" title="Mac en/of Linux software bij '. $rowsoftware['naam'] .'">'. $rowsoftware['naam'] .'</a> <img src="images/bullet_star.png" border="0" title="tip!">';
}else{
echo '<a href="uit.php?id='. $rowsoftware['link_id'] .'" target="_blank" title="Mac en/of Linux software bij '. $rowsoftware['naam'] .'">'. $rowsoftware['naam'] .'</a>';
}
?></td>
<?php
//laat de vinkjes zien
$queryvinkje = "
SELECT
software_naam.id,
software.naam,
software.software_naam_id AS ingevuld
FROM
software_naam
LEFT JOIN
software
ON
software.software_naam_id = software_naam.id
";
$resultvinkje = mysql_query($queryvinkje);
if(!$resultvinkje)
{
trigger_error(mysql_error().' ('.$queryvinkje.')');
}
else{
while($rowvinkje = mysql_fetch_assoc($resultvinkje)){
// mac software ja of nee
if( $rowvinkje['ingevuld'] ){
?>
<td class="mac_tabel" align="center"><img src="images/tick.png" border="0" ></td>
<?php
}else{
echo '';
}
}
?>
</tr>
<?php
}
}
}
}
}
?>
<!--eind van Fotoalbums -->
</table>
En kan een website in meerdere categoriën staan?
Ja, websites kunnen in meerdere rubrieken staan.
De websites staan al in de tabel "software".
Of moet ik echt een 4de tabel maken met alleen de website namen?
Nu wordt het voor mij nog ingewikkelder....
Het zal wel niet zo horen maar het werkt wel.
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<table width="620" border="0" align="center" cellpadding="2" cellspacing="0">
<tr>
<td height="25" width="620" align="center" class="favoriet-kopje-grijs" colspan="5">Aanbieders met Mac/Apple of Linux software</td></tr>
<tr>
<td> </td>
<td align="center"><strong>Mac | Apple</strong></td>
<td align="center"><strong>Linux</strong></td>
<td align="center"><strong>Online</strong></td>
<td align="center"><strong>Downloaden</strong></td>
</tr>
<?php
//laat de naam zien van de rubriek
$query = "
SELECT
id,
naam
FROM
software_rubriek
ORDER BY
id
";
$result = mysql_query($query);
if(!$result)
{
trigger_error(mysql_error().' ('.$query.')');
}
else{
while($row = mysql_fetch_assoc($result)){
?>
<tr>
<td class="naam" bgcolor="#EAF4FF" width="20%"><?php echo $row['naam']; ?></td>
<td bgcolor="#EAF4FF" width="20%"> </td>
<td bgcolor="#EAF4FF" width="20%"> </td>
<td bgcolor="#FFECEC" width="20%"> </td>
<td bgcolor="#FFECEC" width="20%"> </td>
</tr>
<?php
//laat de naam zien van de website
$querysoftware = "
SELECT
id,
link_id,
naam AS link_naam,
software_rubriek_id
FROM
software_linken
WHERE
software_rubriek_id = ". $row['id']."
ORDER BY
naam";
$resultsoftware = mysql_query($querysoftware);
if(!$resultsoftware)
{
trigger_error(mysql_error().' ('.$querysoftware.')');
}
else{
while($rowsoftware = mysql_fetch_assoc($resultsoftware)){
?>
<tr>
<td class="mac_tabel"><?php // naam van webshop
if($rowsoftware['link_id'] == 471 || $rowsoftware['link_id'] == 472 || $rowsoftware['link_id'] == 473 || $rowsoftware['link_id'] == 474){
echo '<a href="uit.php?id='. $rowsoftware['link_id'] .'" target="_blank" title="Mac en/of Linux software bij '. $rowsoftware['link_naam'] .'">'. $rowsoftware['link_naam'] .'</a> <img src="images/bullet_star.png" border="0" title="tip!">';
}else{
echo '<a href="uit.php?id='. $rowsoftware['link_id'] .'" target="_blank" title="Mac en/of Linux software bij '. $rowsoftware['link_naam'] .'">'. $rowsoftware['link_naam'] .'</a>';
}
?></td>
<?php
//laat de vinkjes zien
$queryvinkje = "
SELECT
software_rubriek.id,
software_linken.link_id,
software_linken.mac_software,
software_linken.linux_software,
software_linken.online_software,
software_linken.download_software,
software_linken.software_rubriek_id
FROM
software_linken
LEFT JOIN
software_rubriek
ON
software_linken.software_rubriek_id = software_rubriek.id
WHERE
software_linken.id = ". $rowsoftware['id']."
GROUP BY
software_linken.software_rubriek_id
";
$resultvinkje = mysql_query($queryvinkje);
if(!$resultvinkje)
{
trigger_error(mysql_error().' ('.$queryvinkje.')');
}
else{
$rowvinkje = mysql_fetch_assoc($resultvinkje);
// mac software ja of nee
if($rowvinkje['mac_software'] == 1){
?>
<td class="mac_tabel" align="center"><img src="images/tick.png" border="0" ></td>
<?php
}else{
echo '<td class="mac_tabel" align="center"> </td>';
}
// linux software ja of nee
if($rowvinkje['linux_software'] == 1){
?>
<td class="mac_tabel" align="center"><img src="images/tick.png" border="0" ></td>
<?php
}else{
echo '<td class="mac_tabel" align="center"> </td>';
}
// online software ja of nee
if($rowvinkje['online_software'] == 1){
?>
<td class="mac_tabel" align="center"><img src="images/tick.png" border="0" ></td>
<?php
}else{
echo '<td class="mac_tabel" align="center"> </td>';
}
// download software ja of nee
if($rowvinkje['download_software'] == 1){
?>
<td class="mac_tabel" align="center"><img src="images/tick.png" border="0" ></td>
<?php
}else{
echo '<td class="mac_tabel" align="center"> </td>';
}
}
?>
</tr>
<?php
}
}
}
}
?>
</table>
<tr>
<td height="25" width="620" align="center" class="favoriet-kopje-grijs" colspan="5">Aanbieders met Mac/Apple of Linux software</td></tr>
<tr>
<td> </td>
<td align="center"><strong>Mac | Apple</strong></td>
<td align="center"><strong>Linux</strong></td>
<td align="center"><strong>Online</strong></td>
<td align="center"><strong>Downloaden</strong></td>
</tr>
<?php
//laat de naam zien van de rubriek
$query = "
SELECT
id,
naam
FROM
software_rubriek
ORDER BY
id
";
$result = mysql_query($query);
if(!$result)
{
trigger_error(mysql_error().' ('.$query.')');
}
else{
while($row = mysql_fetch_assoc($result)){
?>
<tr>
<td class="naam" bgcolor="#EAF4FF" width="20%"><?php echo $row['naam']; ?></td>
<td bgcolor="#EAF4FF" width="20%"> </td>
<td bgcolor="#EAF4FF" width="20%"> </td>
<td bgcolor="#FFECEC" width="20%"> </td>
<td bgcolor="#FFECEC" width="20%"> </td>
</tr>
<?php
//laat de naam zien van de website
$querysoftware = "
SELECT
id,
link_id,
naam AS link_naam,
software_rubriek_id
FROM
software_linken
WHERE
software_rubriek_id = ". $row['id']."
ORDER BY
naam";
$resultsoftware = mysql_query($querysoftware);
if(!$resultsoftware)
{
trigger_error(mysql_error().' ('.$querysoftware.')');
}
else{
while($rowsoftware = mysql_fetch_assoc($resultsoftware)){
?>
<tr>
<td class="mac_tabel"><?php // naam van webshop
if($rowsoftware['link_id'] == 471 || $rowsoftware['link_id'] == 472 || $rowsoftware['link_id'] == 473 || $rowsoftware['link_id'] == 474){
echo '<a href="uit.php?id='. $rowsoftware['link_id'] .'" target="_blank" title="Mac en/of Linux software bij '. $rowsoftware['link_naam'] .'">'. $rowsoftware['link_naam'] .'</a> <img src="images/bullet_star.png" border="0" title="tip!">';
}else{
echo '<a href="uit.php?id='. $rowsoftware['link_id'] .'" target="_blank" title="Mac en/of Linux software bij '. $rowsoftware['link_naam'] .'">'. $rowsoftware['link_naam'] .'</a>';
}
?></td>
<?php
//laat de vinkjes zien
$queryvinkje = "
SELECT
software_rubriek.id,
software_linken.link_id,
software_linken.mac_software,
software_linken.linux_software,
software_linken.online_software,
software_linken.download_software,
software_linken.software_rubriek_id
FROM
software_linken
LEFT JOIN
software_rubriek
ON
software_linken.software_rubriek_id = software_rubriek.id
WHERE
software_linken.id = ". $rowsoftware['id']."
GROUP BY
software_linken.software_rubriek_id
";
$resultvinkje = mysql_query($queryvinkje);
if(!$resultvinkje)
{
trigger_error(mysql_error().' ('.$queryvinkje.')');
}
else{
$rowvinkje = mysql_fetch_assoc($resultvinkje);
// mac software ja of nee
if($rowvinkje['mac_software'] == 1){
?>
<td class="mac_tabel" align="center"><img src="images/tick.png" border="0" ></td>
<?php
}else{
echo '<td class="mac_tabel" align="center"> </td>';
}
// linux software ja of nee
if($rowvinkje['linux_software'] == 1){
?>
<td class="mac_tabel" align="center"><img src="images/tick.png" border="0" ></td>
<?php
}else{
echo '<td class="mac_tabel" align="center"> </td>';
}
// online software ja of nee
if($rowvinkje['online_software'] == 1){
?>
<td class="mac_tabel" align="center"><img src="images/tick.png" border="0" ></td>
<?php
}else{
echo '<td class="mac_tabel" align="center"> </td>';
}
// download software ja of nee
if($rowvinkje['download_software'] == 1){
?>
<td class="mac_tabel" align="center"><img src="images/tick.png" border="0" ></td>
<?php
}else{
echo '<td class="mac_tabel" align="center"> </td>';
}
}
?>
</tr>
<?php
}
}
}
}
?>
</table>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$queryvinkje = "
SELECT
software_rubriek.id,
software_linken.link_id,
software_linken.mac_software,
software_linken.linux_software,
software_linken.online_software,
software_linken.download_software,
software_linken.software_rubriek_id
FROM
software_linken
LEFT JOIN
software_rubriek
ON
software_linken.software_rubriek_id = software_rubriek.id
WHERE
software_linken.id = ". $rowsoftware['id']."
GROUP BY
software_linken.software_rubriek_id
";
SELECT
software_rubriek.id,
software_linken.link_id,
software_linken.mac_software,
software_linken.linux_software,
software_linken.online_software,
software_linken.download_software,
software_linken.software_rubriek_id
FROM
software_linken
LEFT JOIN
software_rubriek
ON
software_linken.software_rubriek_id = software_rubriek.id
WHERE
software_linken.id = ". $rowsoftware['id']."
GROUP BY
software_linken.software_rubriek_id
";
De GROUP BY hoort niet thuis in deze query, deze gebruik je alleen als je SUM/COUNT/AVG/MIN/MAX ed in je query gebruikt
http://wiki.pfz.nl/Group_by
Positief om dit topic te zien.
Ik heb een linkje v:
http://www.yapf.net/index.php/Database_ontwerp_101
Gewijzigd op 25/06/2010 17:54:13 door Noppes Homeland