ik will gegevens uit mijn formulier opslaan in een database,
dat lukt allemaal aardig, alleen als ik in een veld niets invul, wordt er een 0 in mijn database gezet,in plaats van de standaard NULL.
moet ik ergens bij het input value="" een bepaalde waarde zetten in mijn formulier?
dus als ik het goed begrijp ziet de tabel scrores er zo uit

idscore, idhond, idoefening, score

en de tabel oefening : idoefening, oefening

en dan met foreign keys en inner join de id's koppelen
Bijvoorbeeld inderdaad.
Wat je dan kan doen als je een overzicht wilt hebben van alle oefeningen voor een hond, is alle oefeningen selecteren vanuit de oefeningen tabel en daaraan de scores joinen voor de hond die je wilt zien. Als je dan een LEFT JOIN gebruikt krijg je NULL waardes voor alle scores waarvoor nog geen record bestaat in de scores tabel voor die hond en zo weet je dus direct welke oefeningen nog niet zijn gedaan.
ik ga wel eens even puzzelen, heb het even op papier uitgewerkt en begin er even in een nieuwe database mee, zodat ik niet hoef te rommelen in de bestaande.
eens kijken hoe ver ik ga komen
bedankt voor alle hulp alvast
Als je dan toch aan de gang gaat zet je database indeling eens hier. ik bedoel welke tabellen heb je en welke kolommen + type heb je in die tabellen gebruikt. Ik vraag me tevens af wat is het verschil tussen een geleider en een user? Heeft het zin om daar twee aparte tabellen voor aan te maken? als de website gebruikt wordt door mensen die lid zijn van de vereniging maar geen hond hebben misschien wel maar anders niet.
ik zou inderdaad de geleidernaam bij de users kunnen zetten.
dan krijg ik de volgende opzet
tabel users: iduser(INT 4, primary, AI), username(VARCHAR 16, unique), password(VARCHAR 40),naam_geleider(VARCHAR 50)

tabel honden: idhond(INT 4, primary, AI), iduser(INT 4, INDEX), naam_hond(VARCHAR 50), naam_geleider(VARCHAR 50, INDEX)

tabel oefening: idoefening(INT 4, primary, AI), oefening (VARCHAR 50)

tabel scores: idscore(INT 255, primary, AI), idhond(INT 4, INDEX), idoefening(INT4, INDEX), score(INT 3)

dit zouden dan mijn tabellen zijn
tabel users:
iduser(INT 4, primary, AI),
username(VARCHAR 16, unique),
password(VARCHAR 40),
naam_geleider(VARCHAR 50)

tabel honden:
idhond(INT 4, primary, AI),
iduser(INT 4, INDEX),
naam_hond(VARCHAR 50),
naam_geleider(VARCHAR 50, INDEX)

tabel oefening:
idoefening(INT 4, primary, AI),
oefening (VARCHAR 50)

tabel scores:
idscore(INT 255, primary, AI),
idhond(INT 4, INDEX),
idoefening(INT4, INDEX), score(INT 3)


[size=xsmall]Toevoeging op 23/03/2013 13:26:57:[/size]

bij honden moet de naam_geleider er uit. die vind je gewoon aan de hand van het iduser. en bij users zou ik naam_geleider gewoon naam noemen. Wil je geen telefoon nummer of adres kolom toevoegen bij users?
er hoeft geen telefoonnummer of adres bij de users
Okee, dit lijkt me heel aardig:


[size=xsmall]Toevoeging op 23/03/2013 14:02:41:[/size]

bekijk / test dit eens


SELECT naam_hond, naam FROM honden LEFT JOIN users ON honden.iduser = users.iduser ;
ik heb al wat zitten knutselen, maar krijg de output niet zoals ik het wil
dit is zoals ik het eerst had


dit krijg ik nu, omdat ik de output heb moeten aanpassen naar
echo '<table border="1">';
	echo '<tr><th bgcolor="#D8D8D8" align="left">Datum</th><td nowrap align="center">'.$row['datum'].'</td></tr>';
	echo '<tr><th bgcolor="#D8D8D8" align="left">'.$row['oefening'].'</th><td align="center">'.$row['score'].'</td></tr>';
	echo '</table>';


aha je draait de tabellen om. ik herinner me een eerder draadje van jou daar over. je lus klopt niet. laat eens wat php code zien. We gaan te hard overigens. want hoe kom je nu aan die datums? dat zijn dus de datums van de oefeningen en die stonden nog niet in jouw database model.

Reageren