Ik heb verjaardagen van 1 tot/met 5 kinderen in de database zitten.

Als mensen geen kinderen hebben moet er niets op de website verschijnen.

Nu doe ik dit meestal met switch() en dat lukt meestal wel.

Dit keer niet.
In de database staat de kolom voor verjaardag_kind_1 op DATE

Hoe doe ik dit nu goed?
Ik heb er al neer gezet:
== 0,
== 0000-00-00,
== '0000-00-00',
> 0,


<?php
switch (true){
case (($row->verjaardag_kind_5) == 0000-00-00):
echo'';
default:
echo ''.$row->naam_kind_5.':&nbsp;&nbsp;'.$row->verjaardag_kind_5.'';
break;
}
?>
De constructie van Jim werkt!

Ik zie nu alleen de namen van diegene waar ik de geboortedata van weet met daarachter de datum.

Dit heb ik nu:

<?php

if ($row->verjaardag_man == NULL) {
echo "";
} else {
echo $row->voornaam_man.':&nbsp;&nbsp;'.$row->verjaardag_man.'<br />';
}

if ($row->verjaardag_vrouw == NULL) {
echo "";
} else {
echo $row->voornaam_vrouw.':&nbsp;&nbsp;'.$row->verjaardag_vrouw.'<br />';
}

if ($row->verjaardag_kind_1 == NULL) {
echo "";
} else {
echo $row->naam_kind_1.':&nbsp;&nbsp;'.$row->verjaardag_kind_1.'<br />';
}

if ($row->verjaardag_kind_2 == NULL) {
echo "";
} else {
echo $row->naam_kind_2.':&nbsp;&nbsp;'.$row->verjaardag_kind_2.'<br />';
}

if ($row->verjaardag_kind_3 == NULL) {
echo "";
} else {
echo $row->naam_kind_3.':&nbsp;&nbsp;'.$row->verjaardag_kind_3.'<br />';
}

if ($row->verjaardag_kind_4 == NULL) {
echo "";
} else {
echo $row->naam_kind_4.':&nbsp;&nbsp;'.$row->verjaardag_kind_4.'<br />';
}

if ($row->verjaardag_kind_5 == NULL) {
echo "";
} else {
echo $row->naam_kind_5.':&nbsp;&nbsp;'.$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:

ID             GEZIN_ID                KIND_NAAM                ANDERVELD
1                 1                          Joop                           0648942754
2                 1                          Klaas                         -
3                 4                         Henk                          0612345678
4                 1                          Bertha                        -



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
Maar je heb niet kind6 en kind7, dus je hebt niet genoeg velden in je tabel.
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.
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.
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.


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.
Ik ben er net mee begonnen dus ik kan nog veel wijzigen.
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.
Komt een aardig eind in de richting.

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

Reageren