Aan- en afmelden voor agenda items
datumprikker".
Ik heb een tabel users die ik kan gebruiken om te weten wie er heeft ingelogd. Ik heb tevens een tabel "agenda" waarin de activiteiten staan.
De nieuwe tabel bevat dan User_ID, Agenda_ID en een veld waarin "ja", "nee" of "deels" kan worden weggeschreven via radiobuttons. Als laatste een opmerkingveld.
Wat ik dus zou willen is dat als er een lid inlogt deze dan zijn aanwezigheid of afwezigheid kan invullen bij alle agendadata.
Mijn vraag: Hoe kan ik dat het beste aanpakken?
* Moet ik in die nieuwe tabel eerst voor alle users alle agenda data gaan aanmaken?
* Kan ik er dan later voor zorgen dat als ik een datum toevoeg aan de agenda dat deze dan ook direct wordt weggeschreven als een datum voor alle users in de tabel aanwezigheid?
Ik weet niet goed hoe ik dit het beste kan aanpakken.
Kan iemand mij op weg helpen?
Ik heb een website gemaakt voor een vereniging. Daarin staan een groot aantal data dat de club bij elkaar komt. Om de aanwezigheid te toetsen wil ik graag een aanwezigheidsregistratie maken. Iets op dezelfde manier als "Ik heb een tabel users die ik kan gebruiken om te weten wie er heeft ingelogd. Ik heb tevens een tabel "agenda" waarin de activiteiten staan.
De nieuwe tabel bevat dan User_ID, Agenda_ID en een veld waarin "ja", "nee" of "deels" kan worden weggeschreven via radiobuttons. Als laatste een opmerkingveld.
Wat ik dus zou willen is dat als er een lid inlogt deze dan zijn aanwezigheid of afwezigheid kan invullen bij alle agendadata.
Mijn vraag: Hoe kan ik dat het beste aanpakken?
* Moet ik in die nieuwe tabel eerst voor alle users alle agenda data gaan aanmaken?
* Kan ik er dan later voor zorgen dat als ik een datum toevoeg aan de agenda dat deze dan ook direct wordt weggeschreven als een datum voor alle users in de tabel aanwezigheid?
Ik weet niet goed hoe ik dit het beste kan aanpakken.
Kan iemand mij op weg helpen?
Gewijzigd op 20/09/2010 14:06:11 door Marc rc is as
Hierbij hoef je niet voor elke gebruiker een rij aan te maken in de nieuwe tabel als je een agenda-item aanmaakt, en vice versa.
Alle mogelijke controles die je wilt doen (welke gebruikers hebben ja gezegd op de agenda-item, welke agenda-items heeft gebruiker X ja op gezegd, etc, etc) zijn dan mogelijk.
Je hebt op het eind dus 3 tabellen: Agenda, Gebruiker, Agenda_Gebruiker
Wat je wil doen is, als een gebruiker in logt, en besluit bij een agenda punt aanwezig te zijn, een check te maken. Als deze positief uitpakt, verwerk je dat in je Agenda_Gebruiker tabel.
Wat je overigens wel wil voorkomen is dat je die data ook in je gebruiker of je agenda tabel opslaat. Met andere woorden: je hebt een n - n relatie op Agenda en Gebruiker. ( Veel op veel) en daarom bouw je die koppeltabel, hou er dan dus ook rekening mee dat je geen extra data in je oorspronkele tabellen opslaat.
Voor het uitlezen van al die data moet je dus alleen je koppeltabel ( Agenda_Gebruiker ) gebruiken.
Agenda_ID, Gebruiker_ID en Aanwezigheid?
Dat wil dus zeggen dat per gebruiker daar alle agenda_ID's worden opgeslagen of zie ik dat fout?
Wil dat dan tevens zeggen dat ik eerst moet zorgen dat die agenda items daarin staan?
Andres bestaat volgens mij het gevaar, als die telkens worden opgehaald, dat ze dubbel worden geplaatst. toch?
Als de combinatie niet voorkomt heeft de gebruiker (nog) geen 'ja' gezegd.
De kolom aanwezigheid in de tabel AGENDA_GEBRUIKER is niet nodig.
Als een gebruiker zich gaan aan- of afmelden ziet hij een lijst voor zich met datums en afspraken. Daarachter heeft hij de keuze
JA
NEE
DEELS
en een opmerkingveld
In dat opmerkingveld kan men zetten hoelang men aanwezig is als ze er deels zijn.
Daarom zal ik dan toch een extra tabel aan moeten maken?
Marc rc is as op 20/09/2010 13:59:42:
Ik denk inderdaad dat ik hier te dom voor ben.
Als een gebruiker zich gaan aan- of afmelden ziet hij een lijst voor zich met datums en afspraken. Daarachter heeft hij de keuze
JA
NEE
DEELS
en een opmerkingveld
In dat opmerkingveld kan men zetten hoelang men aanwezig is als ze er deels zijn.
Daarom zal ik dan toch een extra tabel aan moeten maken?
Als een gebruiker zich gaan aan- of afmelden ziet hij een lijst voor zich met datums en afspraken. Daarachter heeft hij de keuze
JA
NEE
DEELS
en een opmerkingveld
In dat opmerkingveld kan men zetten hoelang men aanwezig is als ze er deels zijn.
Daarom zal ik dan toch een extra tabel aan moeten maken?
Die opmerkingen kan je dan toch in de koppeltabel kwijt?
Niek s op 20/09/2010 14:17:55:
Precies.Die opmerkingen kan je dan toch in de koppeltabel kwijt?
Je moet dan nog steeds niet voor alle gebruikers een regel aanmaken bij het toevoegen van een agenda-item. Als je dat pas opslaat als de gebruiker de keuze maakt (of dit ja, nee of gedeeltelijk is, maakt niet uit) kan je zien welke gebruikers er nog niet gereageerd hebben (en die dan een extra herinnering sturen).
Dit zie je door te kijken welke gebruikers er zijn en welke er gereageerd hebben op een agenda-item. Welke wel in de eerste verzameling staat, maar niet in de tweede, heeft niet gereageerd.
Gewijzigd op 20/09/2010 14:22:48 door Elwin - Fratsloos
Laat in ieder geval weten als het slaagt, maar zal vast eerder een probleem hebben. :-)
Toevoeging op 20/09/2010 18:14:46:
Ik ben al een einde op weg, maar doe toch denk ik echt het e.e.a. verkeerd.
Dit is de code
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
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
<?php
if (!isset($_REQUEST['verzenden'])){
$sql= "SELECT *,
DATE_FORMAT(Agenda_Datum, '%e-%c-%Y') AS formatAgendaDatum
FROM agenda
ORDER BY Agenda_Datum ASC";
$resultaat = mysql_query($sql);
?>
<h1>Aanwezigheid</h1>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" name="form">
<table width="600" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
<td> </td>
<td> </td>
<td>datum</td>
<td>afspraak</td>
<td>ja</td>
<td>nee</td>
<td>deels</td>
<td>opmerking</td>
</tr>
<?php
while($rij = mysql_fetch_array($resultaat)){
$id=$rij['Agenda_ID'];
echo '<tr>';
echo '<td>' . '<input name="user" type="hidden" value="' . $_SESSION['user'] . '" />' . '</td>';
echo '<td>' . '<input name="agenda" type="hidden" value="' . $rij['Agenda_ID'] . '" />' . '</td>';
echo '<td>' . '<input name="datum" type="text" class="xsmall" value="' . $rij['formatAgendaDatum'] . '" />' . '</td>';
echo '<td>' . '<input name="afspraak" type="text" class="small" value="' . $rij['Agenda_Afspraak'] . '" />' . '</td>';
echo '<td>' . '<input name="aanwezig" type="radio" class="radio" value="Ja" id="aanwezig_0" />' . '</td>';
echo '<td>' . '<input name="aanwezig" type="radio" class="radio" value="Nee" id="aanwezig_1" />' . '</td>';
echo '<td>' . '<input name="aanwezig" type="radio" class="radio" value="Deels" id="aanwezig_2" />' . '</td>';
echo '<td>' . '<input name="opmerking" type="text" class="normal" />' . '</td>';
echo '</tr>';
}?>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td colspan="2"><input name="verzenden" type="submit" class="button" id="verzenden" value="Opslaan" /></td>
<td colspan="3"><input name="reset" type="reset" class="button" id="reset" value="formulier wissen" /></td>
<td> </td>
</tr>
</table>
</form>
<?php
}else{ // hier komt de verwerking van het formulier.
$user = $_REQUEST['user'];
$agenda = $_REQUEST['agenda'];
$aanwezig = $_REQUEST['aanwezig'];
$opmerking = $_REQUEST['opmerking'];
$sql = "INSERT INTO agenda_users (Agenda_User_ID, Agenda_ID, ID_user, Agenda_User_Aanw, Agenda_User_Opm) VALUES ('','$user', '$agenda', '$aanwezig', '$opmerking')";
}
?>
if (!isset($_REQUEST['verzenden'])){
$sql= "SELECT *,
DATE_FORMAT(Agenda_Datum, '%e-%c-%Y') AS formatAgendaDatum
FROM agenda
ORDER BY Agenda_Datum ASC";
$resultaat = mysql_query($sql);
?>
<h1>Aanwezigheid</h1>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" name="form">
<table width="600" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
<td> </td>
<td> </td>
<td>datum</td>
<td>afspraak</td>
<td>ja</td>
<td>nee</td>
<td>deels</td>
<td>opmerking</td>
</tr>
<?php
while($rij = mysql_fetch_array($resultaat)){
$id=$rij['Agenda_ID'];
echo '<tr>';
echo '<td>' . '<input name="user" type="hidden" value="' . $_SESSION['user'] . '" />' . '</td>';
echo '<td>' . '<input name="agenda" type="hidden" value="' . $rij['Agenda_ID'] . '" />' . '</td>';
echo '<td>' . '<input name="datum" type="text" class="xsmall" value="' . $rij['formatAgendaDatum'] . '" />' . '</td>';
echo '<td>' . '<input name="afspraak" type="text" class="small" value="' . $rij['Agenda_Afspraak'] . '" />' . '</td>';
echo '<td>' . '<input name="aanwezig" type="radio" class="radio" value="Ja" id="aanwezig_0" />' . '</td>';
echo '<td>' . '<input name="aanwezig" type="radio" class="radio" value="Nee" id="aanwezig_1" />' . '</td>';
echo '<td>' . '<input name="aanwezig" type="radio" class="radio" value="Deels" id="aanwezig_2" />' . '</td>';
echo '<td>' . '<input name="opmerking" type="text" class="normal" />' . '</td>';
echo '</tr>';
}?>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td colspan="2"><input name="verzenden" type="submit" class="button" id="verzenden" value="Opslaan" /></td>
<td colspan="3"><input name="reset" type="reset" class="button" id="reset" value="formulier wissen" /></td>
<td> </td>
</tr>
</table>
</form>
<?php
}else{ // hier komt de verwerking van het formulier.
$user = $_REQUEST['user'];
$agenda = $_REQUEST['agenda'];
$aanwezig = $_REQUEST['aanwezig'];
$opmerking = $_REQUEST['opmerking'];
$sql = "INSERT INTO agenda_users (Agenda_User_ID, Agenda_ID, ID_user, Agenda_User_Aanw, Agenda_User_Opm) VALUES ('','$user', '$agenda', '$aanwezig', '$opmerking')";
}
?>
Ik heb nu het gevoel dat ik de datums steeds gaan terug zien ook al zijn ze al ingevuld. Waarschijnlijk moet ik bovenin een JOIN maken maar zie niet in hoe.
Daarnaast werken de radiobuttons nu niet. Ik kan ipv per regel maar 1 button kiezen in de gehele tabel.
Kan iemand nog een hind geven?