Je hebt die extra tabellen niet nodig.quote:Op donderdag 17 februari 2011 08:48 schreef MrNiles het volgende:
omdat het toevoegen van een kolom dmv een variable niet echt goed werk ontvangen hier
moet ik dus redelijk opnieuw beginnen
om het nu een beter inzicht te krijgen hoe ik de db moet opbouwen heb ik jullie opbouwende kritiek nodig
ik wil dus dat een gebruiker op een bepaalde datum kan aangeven of hij wel of niet aanwezig is
tabel 1
uniek gebruikers id (G_id)
gebruikers naam (G_name)
tabel 2
afspraak id (A_id)
datum
wat
waar
tabel 3
G_id
A_id
aanwezig (j/n/?)
Tabel 3 zal voor elke unieke afspraak zijn:
Tabel 3 voor datum1
Tabel 4 voor datum2
Tabel 5 voor datum3 etc etc
Klopt deze opzet?
1 2 3 | <?php $datum = date("Y-m-d"); ?> |
1 2 3 | <?php $datum = strtotime(date("Y-m-d"); ?> |
1 2 3 | <?php $query = mysql_query("SELECT g.name FROM gebruikers AS g INNER JOIN koppeltabel k ON ( k.g_id = g.g_id ) INNER JOIN afspraak a ON ( k.a_id = a.a_id ) WHERE a.datum = '".mysql_real_escape_string($datum)."' "); ?> |
Als je timestamps gebruikt, kan het makkelijker:quote:Op donderdag 17 februari 2011 09:19 schreef remi1986 het volgende:
Stel je wil weten welke gebruikers vandaag komen
[ code verwijderd ]
of als je timestamps gebruikt
[ code verwijderd ]
[ code verwijderd ]
1 2 3 4 5 | <?php $datum = mktime(); // Timestamp van huidige tijd // Alternatief: $datum = mktime(0, 0, 0) // Timestamp van huidige datum, met tijd 00:00:00 ?> |
Ja kan ook. En ben met je eens dat escapen niet nodig is, maar ik doe het zelf altijd standaard. Als het straks uit bijvoorbeeld POST data komt, waar je eerst een datum moet kiezen is het weer user input.quote:Op donderdag 17 februari 2011 09:33 schreef Light het volgende:
[..]
Als je timestamps gebruikt, kan het makkelijker:
[ code verwijderd ]
En mysql_real_escape_string() lijkt me niet direct nodig als je weet dat de variabele altijd een gegenereerd datumveld bevat.
maar de gebruiker met zelf ergens kunnen aangeven of hij wel of niet aanwezig kan zijnquote:Je hebt die extra tabellen niet nodig.
Je hebt aan een koppeltabel genoeg met g_id en a_id. Staat de gebruiker gekoppeld aan de afspraak (welke al een datum hebben), dan komt hij/zij. Anders niet.
Dan voeg je die toe aan die koppeltabel..quote:Op donderdag 17 februari 2011 09:53 schreef MrNiles het volgende:
[..]
maar de gebruiker met zelf ergens kunnen aangeven of hij wel of niet aanwezig kan zijn
dit moet toch ergens opgeslagen worden....
ooh..tijdens het typen bedenk ik me..je slaat alleen op als hij WEL aan wezig is..
hmm...en als ik 3 verschillende statussen wil hebben...JA NEE en ONBEKEND
maar dan moet ik voor die status een tabel makenquote:Dan voeg je die toe aan die koppeltabel..
a_id,g_id,status
1,1,Ja
Je kan dan in de JOIN nog aangeven als je een bepaalde status wil
Nee is niet nodig op zich, want gebruiker 2 kan voor afspraak 1 een status NEE/ONBEKEND hebben. Je koppelt een gebruiker aan een afspraak. Dezelfde gebruiker kan op voor een andere afspraak een andere status hebben.quote:Op donderdag 17 februari 2011 09:57 schreef MrNiles het volgende:
[..]
maar dan moet ik voor die status een tabel maken
want voor elke andere datum kan een andere status zijn
ik probeer het te snappen he :pquote:Nee is niet nodig op zich, want gebruiker 2 kan voor afspraak 1 een status NEE/ONBEKEND hebben. Je koppelt een gebruiker aan een afspraak. Dezelfde gebruiker kan op voor een andere afspraak een andere status hebben.
Je kan wel een tabel maken met de statussen. Dan krijg je dus 1,1,1 in de koppeltabel, maar met maar 3 statussen zou ik dat niet doen
1 2 3 | a_id,datum,waar,wat 1,2011-02-17,locatie,workshop 2,2011-02-18,locatie,meeting |
1 2 3 4 5 6 7 | a_id,g_id,status 1,1,Ja 1,2,Nee 1,3,Onbekend 2,1,Nee 2,2,Onbekend 2,3,Ja |
quote:Op donderdag 17 februari 2011 10:38 schreef KomtTijd... het volgende:
Welke joepmeloen verzint er nou kolomnamen als "waar" en "wat"?
Had even zijn voorbeeld gebruikt. Het is om het idee even duidelijk te maken. Zolang het idee maar van tafel is, dat voor iedere datum een aparte tabel/kolom moet worden aangemaaktquote:Op donderdag 17 februari 2011 08:48 schreef MrNiles het volgende:
omdat het toevoegen van een kolom dmv een variable niet echt goed werk ontvangen hier
moet ik dus redelijk opnieuw beginnen
om het nu een beter inzicht te krijgen hoe ik de db moet opbouwen heb ik jullie opbouwende kritiek nodig
ik wil dus dat een gebruiker op een bepaalde datum kan aangeven of hij wel of niet aanwezig is
tabel 1
uniek gebruikers id (G_id)
gebruikers naam (G_name)
tabel 2
afspraak id (A_id)
datum
wat
waar
tabel 3
G_id
A_id
aanwezig (j/n/?)
Tabel 3 zal voor elke unieke afspraak zijn:
Tabel 3 voor datum1
Tabel 4 voor datum2
Tabel 5 voor datum3 etc etc
Klopt deze opzet?
wat is het probleem?quote:Welke joepmeloen verzint er nou kolomnamen als "waar" en "wat"?
Het probleem is, dat als je geen beschrijvende kolomnamen gebruikt, je over een week al geen flauw benul meer hebt wat je query in hemelsnaam doet.quote:Op donderdag 17 februari 2011 10:43 schreef MrNiles het volgende:
[..]
wat is het probleem?
zolang je geen WHERE ofzo gaat gebruiken..dan lijkt me dat toch niet zo'n probleem
of mis ik iets...stomme vraag..ik mis een heleboel op php/sql..maar goed..
op die fiets...tja..hoeveel uitgebreider moet het zijn?quote:Het probleem is, dat als je geen beschrijvende kolomnamen gebruikt, je over een week al geen flauw benul meer hebt wat je query in hemelsnaam doet.
Ik gebruik zelf altijd Engelse namen voor tabellen en kolommen. Maar als je het in het NL wilt houden kan je iets doen als locatie en onderwerp.quote:Op donderdag 17 februari 2011 11:01 schreef MrNiles het volgende:
[..]
op die fiets...tja..hoeveel uitgebreider moet het zijn?
ik weet toch wat die waar en wat betekenen in dit geval
maar doe eens een voorstel hoe het zou kunnen zijn
OK..ik heb het probleem eigenlijk met alle file namen..die ben ik nu dus ook maar beter aan het benoemen...edit2 en verwerken3 dan raak je al snel de draad kwijtquote:Ik gebruik zelf altijd Engelse namen voor tabellen en kolommen. Maar als je het in het NL wilt houden kan je iets doen als locatie en onderwerp.
hopelijk kom ik niet stom over als ik vraag dat dit een daadwerkelijk tabel is en niet iets gegenereerd vanuit een join oidquote:Maar snap je het idee van de koppeltabel?
Helemaal als je Engelse en Nederlandse namen door elkaar gebruikt kan ik me dat voorstellen. Leer je aan om een bepaalde structuur (vaste namen en taal voor iets) te gebruiken. Nu weet je nog waar alles staat, maar weet je dat over een half jaar ook nog als je iets wil aanpassen?quote:Op donderdag 17 februari 2011 11:10 schreef MrNiles het volgende:
[..]
OK..ik heb het probleem eigenlijk met alle file namen..die ben ik nu dus ook maar beter aan het benoemen...edit2 en verwerken3 dan raak je al snel de draad kwijt
[..]
hopelijk kom ik niet stom over als ik vraag dat dit een daadwerkelijk tabel is en niet iets gegenereerd vanuit een join oid
ik begin m te vattenquote:Die koppeltabel is inderdaad een vaste tabel. Die moet je dan ook gewoon aanmaken.
Ik had ergens op deze pagina een voorbeeldquery gemaakt. Kan je vast wel wat mee.quote:Op donderdag 17 februari 2011 11:30 schreef MrNiles het volgende:
[..]
ik begin m te vatten
nu ff bedenken hoe ik dit om kan toveren tot een goede (inner) join zodat ik iets om mijn scherm krijg te zien
1 2 3 4 5 6 7 | <?php SELECT g.name FROM gebruikers AS g INNER JOIN koppeltabel k ON ( k.g_id = g.g_id ) INNER JOIN afspraak a ON ( k.a_id = a.a_id ) WHERE a.datum = '".mysql_real_escape_string($datum)."' "); ?> |
Ja klopt. Je kan k ook weglaten geloof ik maar moet je de volledige tabelnaam voor de kolommen gebruiken (koppeltabel.g_id = gebruikers.g_id)quote:Op donderdag 17 februari 2011 11:43 schreef MrNiles het volgende:
ben aan het kijken
[ code verwijderd ]
wat is die K bij INNER JOIN koppeltabel k
benoem je die koppeltabel nu als k voor de vergelijking daarachter?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |