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?
| 1 2 3 | <?php var_dump(get_defined_vars()); ? ?> |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php $commando= "SELECT gebruikers.G_id, gebruikers.G_name, optredens.O_id, FROM optredens, gebruikers INNER JOIN koppeltabel ON (koppeltabel.G_id=gebruikers.G_id) INNER JOIN optredens ON (koppeltabel.O_id=optredens.O_id) WHERE koppeltabel.O_id=$id AND koppeltabel.aanwezig='o' "; $resultaat=mysql_query($commando); echo "Deze mensen hebben nog niets laten weten"; while($array=mysql_fetch_array($resultaat)){ echo "<br />"; echo "<a href=\"aanwezig_edit.php?name=".$array['G_name']."&id=".$array['O_id']." \"> ".$array['G_name']."</a>"; } ?> |
En dit werkt niet? Probeer de code eens uit in phpmyadmin en verander $id naar een id die bestaat. Kijk dan of je resultaat krijgt.quote:Op donderdag 17 februari 2011 13:02 schreef MrNiles het volgende:
kan iemand op mijn code schieten?
[ code verwijderd ]
op deze manier hoop ik de mensen (G_name) te filteren die nog status "o" hebben
| 1 2 3 4 5 6 7 | <?php SELECT gebruikers.*, optredens.*, koppeltabel.* FROM gebruikers INNER JOIN koppeltabel ON (koppeltabel.G_id=gebruikers.G_id) INNER JOIN optredens ON (koppeltabel.O_id=optredens.O_id) WHERE koppeltabel.O_id=$id AND koppeltabel.aanwezig='o' ?> |
Altijd leuk, queries tussen je html-output.quote:Op donderdag 17 februari 2011 13:02 schreef MrNiles het volgende:
kan iemand op mijn code schieten?
[ code verwijderd ]
op deze manier hoop ik de mensen (G_name) te filteren die nog status "o" hebben
beter zo?quote:Altijd leuk, queries tussen je html-output.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php echo "Deze mensen hebben nog niets laten weten"; echo "<br />"; $commando_ja= "SELECT gebruikers.*, optredens.*, koppeltabel.* FROM gebruikers INNER JOIN koppeltabel ON (koppeltabel.G_id=gebruikers.G_id) INNER JOIN optredens ON (koppeltabel.O_id=optredens.O_id) WHERE koppeltabel.O_id=$id AND koppeltabel.aanwezig='o' "; $resultaat=mysql_query($commando_ja); while($array=mysql_fetch_array($resultaat)){ echo "<a href=\"aanwezig_edit.php?G_name=".$array['G_name']."&O_id=".$array['O_id']."&G_id=".$array['G_id']." \"> ".$array['G_name']."</a>"; echo "<br />"; } ?> |
dat is de bedoelingquote:Die array loop je in je html output door en geef je de namen weer. Zo hou je de queries gescheiden van de html.
| 1 2 3 4 5 6 7 8 | <?php $people_present = get_present(); foreach($people_present as $people) { echo hier de link naar aanwezig_edit.php } ?> |
| 1 2 3 | <?php $people_aanwezig = get_people($date,$event,"Ja"); // mensen op datum die aanwezig zijn ("ja") ?> |
| 1 2 3 4 5 6 7 8 9 | <?php function get_people($date,$event,$status) { // aan het einde return $array; } ?> |
Goed! het systeem zoekt nu op het hele woord en niet op delen!quote:
Welk forum, en op welk woord zoek je?quote:Op donderdag 17 februari 2011 18:07 schreef Chandler het volgende:
[..]
Goed! het systeem zoekt nu op het hele woord en niet op delen!maar als ik nu kijk bv naar het forum, daar kun je ook zoeken op delen van woorden en dat is gewoon rete rap, waarom kan dat niet met tags? (kan wel maar qua preformance weer niet...)
| 1 2 3 4 5 6 7 | <?php $result = mysql_query("SELECT G_id FROM gebruikers WHERE G_name='$G_name' "); while($row = mysql_fetch_array($result)) { $row['G_id']; } ?> |
echo $row['G_id']; ??quote:Op vrijdag 18 februari 2011 10:38 schreef MrNiles het volgende:
hoe krijg ik $G_id hier nu uit?
[ code verwijderd ]
| 1 2 3 4 | <?php $row = mysql_fetch_array($result); $G_id = $row['G_id']; ?> |
adblocker?quote:Op vrijdag 18 februari 2011 10:44 schreef MrNiles het volgende:
klote dat ik niet kan editen..maaruh...zo simpel.... dat ik eerst dacht dat het niet werkte..maar helaas een domme type fout...
gelukt dus
sorry!
misschienquote:adblocker?
| 1 2 3 4 5 6 | <?php if (iets hier waarschijnlijk) UPDATE koppeltabel SET aanwezig='$aanwezig' WHERE O_id='$O_id' AND G_id='$G_id' "); else INSERT INTO koppeltabel(O_id, G_id, aanwezig) VALUES ('$O_id','$G_id','o')"; ?> |
| 1 2 3 4 5 6 7 8 9 10 | <?php $query = SELECT WHERE id=id if (mysql_num_rows($query) == 1) { update } else { insert } ?> |
ik snap het ook niet, vandaar de vraagquote:Ik snap je niet? Je wilt iets updaten maar dan moet het er wel zijn?
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |