switch / case en database
Pagina: « vorige 1 2 3 volgende »
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
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
<?php
switch (true){
case (($row->verjaardag_man) != 0000-00-00):
echo $row->voornaam_man.': '.$row->verjaardag_man;
# break;
case (($row->verjaardag_vrouw) != 0000-00-00):
echo $row->voornaam_vrouw.': '.$row->verjaardag_vrouw;
# break;
case (($row->verjaardag_kind_1) != 0000-00-00):
echo $row->naam_kind_1.': '.$row->verjaardag_kind_1;
# break;
case (($row->verjaardag_kind_2) != 0000-00-00):
echo $row->naam_kind_2.': '.$row->verjaardag_kind_2;
# break;
case (($row->verjaardag_kind_3) != 0000-00-00):
echo $row->naam_kind_3.': '.$row->verjaardag_kind_3;
# break;
case (($row->verjaardag_kind_4) != 0000-00-00):
echo $row->naam_kind_4.': '.$row->verjaardag_kind_4;
# break;
case (($row->verjaardag_kind_5) != 0000-00-00):
echo $row->naam_kind_5.': '.$row->verjaardag_kind_5;
# break;
default:
echo ' ';
# break;
}
?>
switch (true){
case (($row->verjaardag_man) != 0000-00-00):
echo $row->voornaam_man.': '.$row->verjaardag_man;
# break;
case (($row->verjaardag_vrouw) != 0000-00-00):
echo $row->voornaam_vrouw.': '.$row->verjaardag_vrouw;
# break;
case (($row->verjaardag_kind_1) != 0000-00-00):
echo $row->naam_kind_1.': '.$row->verjaardag_kind_1;
# break;
case (($row->verjaardag_kind_2) != 0000-00-00):
echo $row->naam_kind_2.': '.$row->verjaardag_kind_2;
# break;
case (($row->verjaardag_kind_3) != 0000-00-00):
echo $row->naam_kind_3.': '.$row->verjaardag_kind_3;
# break;
case (($row->verjaardag_kind_4) != 0000-00-00):
echo $row->naam_kind_4.': '.$row->verjaardag_kind_4;
# break;
case (($row->verjaardag_kind_5) != 0000-00-00):
echo $row->naam_kind_5.': '.$row->verjaardag_kind_5;
# break;
default:
echo ' ';
# break;
}
?>
Man met datum
Vrouw met 0000-00-00
Kind 1 met datum
Kind 2 met datum
Kind 3 met datum
Kind 4 met 0000-00-00
Kind 5 met 0000-00-00
Deze mensen hebben 3 kinderen en de verjaardag van de vrouw weet ik niet.
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
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
<?php
if ($row->verjaardag_man == 0000-00-00) {
echo " ";
} else {
echo $row->voornaam_man.': '.$row->verjaardag_man;
}
if ($row->verjaardag_vrouw == 0000-00-00) {
echo " ";
} else {
echo $row->voornaam_vrouw.': '.$row->verjaardag_vrouw;
}
if ($row->verjaardag_kind1 == 0000-00-00) {
echo " ";
} else {
echo $row->voornaam_kind1.': '.$row->verjaardag_kind1;
}
if ($row->verjaardag_kind2 == 0000-00-00) {
echo " ";
} else {
echo $row->voornaam_kind2.': '.$row->verjaardag_kind2;
}
if ($row->verjaardag_kind3 == 0000-00-00) {
echo " ";
} else {
echo $row->voornaam_kind3.': '.$row->verjaardag_kind3;
}
if ($row->verjaardag_kind4 == 0000-00-00) {
echo " ";
} else {
echo $row->voornaam_kind4.': '.$row->verjaardag_kind4;
}
if ($row->verjaardag_kind5 == 0000-00-00) {
echo " ";
} else {
echo $row->voornaam_kind5.': '.$row->verjaardag_kind5;
}
?>
if ($row->verjaardag_man == 0000-00-00) {
echo " ";
} else {
echo $row->voornaam_man.': '.$row->verjaardag_man;
}
if ($row->verjaardag_vrouw == 0000-00-00) {
echo " ";
} else {
echo $row->voornaam_vrouw.': '.$row->verjaardag_vrouw;
}
if ($row->verjaardag_kind1 == 0000-00-00) {
echo " ";
} else {
echo $row->voornaam_kind1.': '.$row->verjaardag_kind1;
}
if ($row->verjaardag_kind2 == 0000-00-00) {
echo " ";
} else {
echo $row->voornaam_kind2.': '.$row->verjaardag_kind2;
}
if ($row->verjaardag_kind3 == 0000-00-00) {
echo " ";
} else {
echo $row->voornaam_kind3.': '.$row->verjaardag_kind3;
}
if ($row->verjaardag_kind4 == 0000-00-00) {
echo " ";
} else {
echo $row->voornaam_kind4.': '.$row->verjaardag_kind4;
}
if ($row->verjaardag_kind5 == 0000-00-00) {
echo " ";
} else {
echo $row->voornaam_kind5.': '.$row->verjaardag_kind5;
}
?>
Op deze manier kun je ook een-oudergezinnen in je database kwijt ;-)
In je code:
case (($row->verjaardag_kind_5) != NULL):
Maar dit zou je zelfs nog kunnen verkorten met:
case $row->verjaardag_kind_5:
Als de verjaardag een waarde heeft (ook al is het 0000-00-00) dan wordt de bijbehorende code uitgevoerd, als de verjaardag NULL is, wordt die code overgeslagen.
Ik moet zeggen dat ik een switch toch echt een stuk duidelijker vind dan zo'n if-then-spaghetti ;-)
Gebruik dan, (ja sorry...) ondanks de spagetti if..then..else..
En zo is het nog enigzins overzichtelijk. we kunnen het ook nog binnen de if..then..else controleren op 000-00-00 en NULL of leeg of een andere waarde, en misschien of de datum wel reeel is, dan heb je pas echt een spagetti bende..
Gewijzigd op 01/01/1970 01:00:00 door - Jim -
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
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
<?php
function show_birth($person_name, $person_birth) {
switch ($person_birth) {
case 0000-00-00:
$result = "Unknown";
break;
case NULL:
$result = "<!-- Person does not exists. -->";
break;
default :
$result = $person_name.' : '. $person_birth;
break;
}
return $result;
}
echo show_birth($row->voornaam_man, $row->verjaardag_man);
echo show_birth($row->voornaam_vrouw, $row->verjaardag_vrouw);
echo show_birth($row->voornaam_kind1, $row->verjaardag_kind1);
echo show_birth($row->voornaam_kind2, $row->verjaardag_kind2);
echo show_birth($row->voornaam_kind3, $row->verjaardag_kind3);
echo show_birth($row->voornaam_kind4, $row->verjaardag_kind4);
echo show_birth($row->voornaam_kind5, $row->verjaardag_kind5);
?>
function show_birth($person_name, $person_birth) {
switch ($person_birth) {
case 0000-00-00:
$result = "Unknown";
break;
case NULL:
$result = "<!-- Person does not exists. -->";
break;
default :
$result = $person_name.' : '. $person_birth;
break;
}
return $result;
}
echo show_birth($row->voornaam_man, $row->verjaardag_man);
echo show_birth($row->voornaam_vrouw, $row->verjaardag_vrouw);
echo show_birth($row->voornaam_kind1, $row->verjaardag_kind1);
echo show_birth($row->voornaam_kind2, $row->verjaardag_kind2);
echo show_birth($row->voornaam_kind3, $row->verjaardag_kind3);
echo show_birth($row->voornaam_kind4, $row->verjaardag_kind4);
echo show_birth($row->voornaam_kind5, $row->verjaardag_kind5);
?>
Gewijzigd op 01/01/1970 01:00:00 door - Jim -
In de database heb ik standaard waarde op NULL gezet en bij de geboortedatum die ik niet wist ook aangevinkt.
Dit is het resultaat:
EDIT:
Ze hebben 3 kinderen en de verjaardag van Elly weet ik niet.
Boven de code van Jim en daaronder die van Willem
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
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
<?php
function show_birth($person_name, $person_birth) {
switch ($person_birth) {
case 0000-00-00:
$result = "Unknown";
break;
case NULL:
$result = "<!-- Person does not exists. -->";
break;
default :
$result = $person_name.' : '. $person_birth;
break;
}
return $result;
}
echo show_birth($row->voornaam_man, $row->verjaardag_man).'<br />';
echo show_birth($row->voornaam_vrouw, $row->verjaardag_vrouw).'<br />';
echo show_birth($row->voornaam_kind1, $row->verjaardag_kind1).'<br />';
echo show_birth($row->voornaam_kind2, $row->verjaardag_kind2).'<br />';
echo show_birth($row->voornaam_kind3, $row->verjaardag_kind3).'<br />';
echo show_birth($row->voornaam_kind4, $row->verjaardag_kind4).'<br />';
echo show_birth($row->voornaam_kind5, $row->verjaardag_kind5).'<br /><br />';
switch (true){
case ($row->verjaardag_man):
echo $row->voornaam_man.': '.$row->verjaardag_man.'<br />';
# break;
case ($row->verjaardag_vrouw):
echo $row->voornaam_vrouw.': '.$row->verjaardag_vrouw.'<br />';
# break;
case ($row->verjaardag_kind_1):
echo $row->naam_kind_1.': '.$row->verjaardag_kind_1.'<br />';
# break;
case ($row->verjaardag_kind_2):
echo $row->naam_kind_2.': '.$row->verjaardag_kind_2.'<br />';
# break;
case ($row->verjaardag_kind_3):
echo $row->naam_kind_3.': '.$row->verjaardag_kind_3.'<br />';
# break;
case ($row->verjaardag_kind_4):
echo $row->naam_kind_4.': '.$row->verjaardag_kind_4.'<br />';
# break;
case ($row->verjaardag_kind_5):
echo $row->naam_kind_5.': '.$row->verjaardag_kind_5;
# break;
default:
echo 'Niet bekend';
# break;
}
?>
function show_birth($person_name, $person_birth) {
switch ($person_birth) {
case 0000-00-00:
$result = "Unknown";
break;
case NULL:
$result = "<!-- Person does not exists. -->";
break;
default :
$result = $person_name.' : '. $person_birth;
break;
}
return $result;
}
echo show_birth($row->voornaam_man, $row->verjaardag_man).'<br />';
echo show_birth($row->voornaam_vrouw, $row->verjaardag_vrouw).'<br />';
echo show_birth($row->voornaam_kind1, $row->verjaardag_kind1).'<br />';
echo show_birth($row->voornaam_kind2, $row->verjaardag_kind2).'<br />';
echo show_birth($row->voornaam_kind3, $row->verjaardag_kind3).'<br />';
echo show_birth($row->voornaam_kind4, $row->verjaardag_kind4).'<br />';
echo show_birth($row->voornaam_kind5, $row->verjaardag_kind5).'<br /><br />';
switch (true){
case ($row->verjaardag_man):
echo $row->voornaam_man.': '.$row->verjaardag_man.'<br />';
# break;
case ($row->verjaardag_vrouw):
echo $row->voornaam_vrouw.': '.$row->verjaardag_vrouw.'<br />';
# break;
case ($row->verjaardag_kind_1):
echo $row->naam_kind_1.': '.$row->verjaardag_kind_1.'<br />';
# break;
case ($row->verjaardag_kind_2):
echo $row->naam_kind_2.': '.$row->verjaardag_kind_2.'<br />';
# break;
case ($row->verjaardag_kind_3):
echo $row->naam_kind_3.': '.$row->verjaardag_kind_3.'<br />';
# break;
case ($row->verjaardag_kind_4):
echo $row->naam_kind_4.': '.$row->verjaardag_kind_4.'<br />';
# break;
case ($row->verjaardag_kind_5):
echo $row->naam_kind_5.': '.$row->verjaardag_kind_5;
# break;
default:
echo 'Niet bekend';
# break;
}
?>
Dus: Als iemand 1 kind heeft, dan zijn alle andere velden leeg, en als iemand heel veel kinderen heeft zijn er velden te kort?
Je kan (als je dat nu niet doet) denk ik voor de kinderen beter een apparte tabel maken.
Dus:
Code (php)
1
2
3
4
5
2
3
4
5
ID GEZIN_ID KIND_NAAM ANDERVELD
1 1 Joop 0648942754
2 1 Klaas -
3 4 Henk 0612345678
4 1 Bertha -
1 1 Joop 0648942754
2 1 Klaas -
3 4 Henk 0612345678
4 1 Bertha -
Gewijzigd op 01/01/1970 01:00:00 door niek s
En ik heb oov van voornaam_kindX naam_kindX gemaakt, anders kloppen de variabelen niet.
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
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
<?php
function show_birth($person_name, $person_birth) {
switch ($person_birth) {
case 0000-00-00:
$result = "Unknown";
break;
case NULL:
$result = "<!-- Person does not exists. -->";
break;
default :
$result = $person_name.' : '. $person_birth;
break;
}
return $result;
}
echo show_birth($row->voornaam_man, $row->verjaardag_man).'<br />';
echo show_birth($row->voornaam_vrouw, $row->verjaardag_vrouw).'<br />';
echo show_birth($row->naam_kind1, $row->verjaardag_kind1).'<br />';
echo show_birth($row->naam_kind2, $row->verjaardag_kind2).'<br />';
echo show_birth($row->naam_kind3, $row->verjaardag_kind3).'<br />';
echo show_birth($row->naam_kind4, $row->verjaardag_kind4).'<br />';
echo show_birth($row->naam_kind5, $row->verjaardag_kind5).'<br /><br />';
?>
function show_birth($person_name, $person_birth) {
switch ($person_birth) {
case 0000-00-00:
$result = "Unknown";
break;
case NULL:
$result = "<!-- Person does not exists. -->";
break;
default :
$result = $person_name.' : '. $person_birth;
break;
}
return $result;
}
echo show_birth($row->voornaam_man, $row->verjaardag_man).'<br />';
echo show_birth($row->voornaam_vrouw, $row->verjaardag_vrouw).'<br />';
echo show_birth($row->naam_kind1, $row->verjaardag_kind1).'<br />';
echo show_birth($row->naam_kind2, $row->verjaardag_kind2).'<br />';
echo show_birth($row->naam_kind3, $row->verjaardag_kind3).'<br />';
echo show_birth($row->naam_kind4, $row->verjaardag_kind4).'<br />';
echo show_birth($row->naam_kind5, $row->verjaardag_kind5).'<br /><br />';
?>
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
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
<?php
switch (true){
case ($row->verjaardag_man):
echo $row->voornaam_man.': '.$row->verjaardag_man.'<br />';
# break;
case ($row->verjaardag_vrouw):
echo $row->voornaam_vrouw.': '.$row->verjaardag_vrouw.'<br />';
# break;
case ($row->verjaardag_kind_1):
echo $row->naam_kind_1.': '.$row->verjaardag_kind_1.'<br />';
# break;
case ($row->verjaardag_kind_2):
echo $row->naam_kind_2.': '.$row->verjaardag_kind_2.'<br />';
# break;
case ($row->verjaardag_kind_3):
echo $row->naam_kind_3.': '.$row->verjaardag_kind_3.'<br />';
# break;
case ($row->verjaardag_kind_4):
echo $row->naam_kind_4.': '.$row->verjaardag_kind_4.'<br />';
# break;
case ($row->verjaardag_kind_5):
echo $row->naam_kind_5.': '.$row->verjaardag_kind_5;
# break;
default:
echo 'Niet bekend';
# break;
}
?>
switch (true){
case ($row->verjaardag_man):
echo $row->voornaam_man.': '.$row->verjaardag_man.'<br />';
# break;
case ($row->verjaardag_vrouw):
echo $row->voornaam_vrouw.': '.$row->verjaardag_vrouw.'<br />';
# break;
case ($row->verjaardag_kind_1):
echo $row->naam_kind_1.': '.$row->verjaardag_kind_1.'<br />';
# break;
case ($row->verjaardag_kind_2):
echo $row->naam_kind_2.': '.$row->verjaardag_kind_2.'<br />';
# break;
case ($row->verjaardag_kind_3):
echo $row->naam_kind_3.': '.$row->verjaardag_kind_3.'<br />';
# break;
case ($row->verjaardag_kind_4):
echo $row->naam_kind_4.': '.$row->verjaardag_kind_4.'<br />';
# break;
case ($row->verjaardag_kind_5):
echo $row->naam_kind_5.': '.$row->verjaardag_kind_5;
# break;
default:
echo 'Niet bekend';
# break;
}
?>
;) Goed bedacht Willem!!
Ik zie nu alleen de namen van diegene waar ik de geboortedata van weet met daarachter de datum.
Dit heb ik nu:
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
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
<?php
if ($row->verjaardag_man == NULL) {
echo "";
} else {
echo $row->voornaam_man.': '.$row->verjaardag_man.'<br />';
}
if ($row->verjaardag_vrouw == NULL) {
echo "";
} else {
echo $row->voornaam_vrouw.': '.$row->verjaardag_vrouw.'<br />';
}
if ($row->verjaardag_kind_1 == NULL) {
echo "";
} else {
echo $row->naam_kind_1.': '.$row->verjaardag_kind_1.'<br />';
}
if ($row->verjaardag_kind_2 == NULL) {
echo "";
} else {
echo $row->naam_kind_2.': '.$row->verjaardag_kind_2.'<br />';
}
if ($row->verjaardag_kind_3 == NULL) {
echo "";
} else {
echo $row->naam_kind_3.': '.$row->verjaardag_kind_3.'<br />';
}
if ($row->verjaardag_kind_4 == NULL) {
echo "";
} else {
echo $row->naam_kind_4.': '.$row->verjaardag_kind_4.'<br />';
}
if ($row->verjaardag_kind_5 == NULL) {
echo "";
} else {
echo $row->naam_kind_5.': '.$row->verjaardag_kind_5;
}
?>
if ($row->verjaardag_man == NULL) {
echo "";
} else {
echo $row->voornaam_man.': '.$row->verjaardag_man.'<br />';
}
if ($row->verjaardag_vrouw == NULL) {
echo "";
} else {
echo $row->voornaam_vrouw.': '.$row->verjaardag_vrouw.'<br />';
}
if ($row->verjaardag_kind_1 == NULL) {
echo "";
} else {
echo $row->naam_kind_1.': '.$row->verjaardag_kind_1.'<br />';
}
if ($row->verjaardag_kind_2 == NULL) {
echo "";
} else {
echo $row->naam_kind_2.': '.$row->verjaardag_kind_2.'<br />';
}
if ($row->verjaardag_kind_3 == NULL) {
echo "";
} else {
echo $row->naam_kind_3.': '.$row->verjaardag_kind_3.'<br />';
}
if ($row->verjaardag_kind_4 == NULL) {
echo "";
} else {
echo $row->naam_kind_4.': '.$row->verjaardag_kind_4.'<br />';
}
if ($row->verjaardag_kind_5 == NULL) {
echo "";
} else {
echo $row->naam_kind_5.': '.$row->verjaardag_kind_5;
}
?>
Maar wat is ik nou 4 kinderen heb, en 3 adoptie kids?
niek schreef op 03.01.2007 12:18:
Als ik het goed begrijp heb je dus voor ieder kind een appart veld in de database?
Dus: Als iemand 1 kind heeft, dan zijn alle andere velden leeg, en als iemand heel veel kinderen heeft zijn er velden te kort?
Je kan (als je dat nu niet doet) denk ik voor de kinderen beter een apparte tabel maken.
Dus:
Dus: Als iemand 1 kind heeft, dan zijn alle andere velden leeg, en als iemand heel veel kinderen heeft zijn er velden te kort?
Je kan (als je dat nu niet doet) denk ik voor de kinderen beter een apparte tabel maken.
Dus:
Ja, ik heb maar 1 tabel waar ik alle gegevens in zet.
Ik heb daarin 5 rijen voor kinderen aangemaakt.
Als ze er dus 3 hebben laat ik de andere 2 leeg.
Misschien slim om het op jouw manier te doen.
Maar ik ben niet zo'n held in dit soort dingen.
Ik weet niet goed wat ik beter allemaal kan splitsen.
Zo zitten er telefoonnummers, mobiele nummers, mobiel van de zaak, fax, fax van de zaak in, en alles in 1 tabel.
Is het dan ook de bedoeling dat je een telefoon tabel maakt?
Jim schreef op 03.01.2007 12:29:
Maar wat is ik nou 4 kinderen heb, en 3 adoptie kids?
Dat maakt toch niet uit?
Je hebt dat kind geadopteerd, dus dat is gewoon je kind.
EDIT: Of bedoel je dat je de geboorte datum misschien niet weet.
Ik zet de namen van de kinderen onder de namen van de ouders in de tabel van adres gegevens op de website.
Ik heb namelijk aparte vakken.
Adres gegevens
Verjaardagen
Email/website
Werk gegevens
Je kan ook voor ieder persoon een record aanmaken ipv ieder gezin,
id(int) - voornaam(var) - achternaam(var) - geboren(date) - vader(int) - moeder(int)
hierbij verwijzen de vader en moeder naar een ander-record in de tabel. dan maakt het niet uit hoeveel kinderen iemand zou hebben.
De switch-constructie van Jim werkt niet, omdat switch alleen de waardes vergelijkt en niet het type. Oftewel: wanneer de waarde van het datumveld NULL is, is er geen verschil tussen "case 0000-00-00" en "case NULL".
De constructie met switch(true) waar Jim zo fel tegen ageerde is helemaal geen oneigenlijk gebruik van een switch, maar juist een efficiënte manier om meerdere variabelen te vergelijken met 1 waarde (in plaats van 1 variabele te vergelijken met meerdere waardes, zoals de switch meestal wordt gebruikt).
Wat ik even over het hoofd had gezien, is dat een switch niet herevalueert: zodra een vergelijking TRUE is, zal alle resterende code tot aan de eerstvolgende break of het eind van de switch worden uitgevoerd. Dat zorgt er in dit geval voor dat de switch-constructie niet kan worden gebruikt.
Willem vp schreef op 03.01.2007 12:42:
Even nog wat theorie:
De switch-constructie van Jim werkt niet, omdat switch alleen de waardes vergelijkt en niet het type. Oftewel: wanneer de waarde van het datumveld NULL is, is er geen verschil tussen "case 0000-00-00" en "case NULL".
De constructie met switch(true) waar Jim zo fel tegen ageerde is helemaal geen oneigenlijk gebruik van een switch, maar juist een efficiënte manier om meerdere variabelen te vergelijken met 1 waarde (in plaats van 1 variabele te vergelijken met meerdere waardes, zoals de switch meestal wordt gebruikt).
Wat ik even over het hoofd had gezien, is dat een switch niet herevalueert: zodra een vergelijking TRUE is, zal alle resterende code tot aan de eerstvolgende break of het eind van de switch worden uitgevoerd. Dat zorgt er in dit geval voor dat de switch-constructie niet kan worden gebruikt.
De switch-constructie van Jim werkt niet, omdat switch alleen de waardes vergelijkt en niet het type. Oftewel: wanneer de waarde van het datumveld NULL is, is er geen verschil tussen "case 0000-00-00" en "case NULL".
De constructie met switch(true) waar Jim zo fel tegen ageerde is helemaal geen oneigenlijk gebruik van een switch, maar juist een efficiënte manier om meerdere variabelen te vergelijken met 1 waarde (in plaats van 1 variabele te vergelijken met meerdere waardes, zoals de switch meestal wordt gebruikt).
Wat ik even over het hoofd had gezien, is dat een switch niet herevalueert: zodra een vergelijking TRUE is, zal alle resterende code tot aan de eerstvolgende break of het eind van de switch worden uitgevoerd. Dat zorgt er in dit geval voor dat de switch-constructie niet kan worden gebruikt.
Het lijkt mij niet handling om mbv switch() een waarde tov een variabele te controleren. Op deze wijze zou je voor iedere mogelijke variabele een case moeten maken, en dat is werkverschaffing en ja ik ben liever lui dan moe!!!
In dat geval zou ik een loop gebruiken, welke automatisch alle variabelen controleerd.
Het is gewoon een persoonlijk adressenboek voor ons thuis maar ik wil er zoveel mogelijk gegevens van een persoon inhebben staan.
Is het misschien verstandig om van alle onderdelen die ik wil weten een aparte tabel aan te maken?
Tabel Naam:
-naam_id
-naam_voornaam
-naam_achternaam
-werk_naam
-zaak_soort (bv Bakkerij)
-zaak_naam (naam van bakkerij)
Tabel Adres:
-adres_id
-adres_straat
-adres_postcode
-adres_plaats
-adres_land
-werk_straat
-werk_postcode
-werk_plaats
-werk_land
-zaak_straat
-zaak_postcode
-zaak_plaats
-zaak_land
-naam_id
Tabel Telefoon_mobiel
-tel_id
-vast
-vast_werk
-mobiel
-mobiel_werk
-vast_zaak
-mobiel_zaak
-naam_id
-adres_id
en zo verder......of is dit te ver gezocht.
Ik zou die tabel Naam opsplitsen in twee tabellen Naam en Werk. Op die manier zou je ook nog iemand met twee part-time banen in je database kunnen onderbrengen ;-)
En van die telefoontabel zou ik iets maken als:
- tel_id
- nummer
- tel_type
waarbij tel_type een set is met de waardes 'vast', 'vast_werk', etc.
Op die manier kun je zelfs mijn schoonmoeder in je database kwijt ;-) (die heeft drie mobiele telefoons, en altijd een andere bij zich...)
Op die manier zou je ook je adres-tabel kunnen indelen:
- adres_id
- adres_type -> thuis, werk, vakantiehuisje
- adres
- postcode
- plaats
- land