Aan- en afmelden voor agenda items

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marc rc is as

Marc rc is as

20/09/2010 09:53:01
Quote Anchor link
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 "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?
Gewijzigd op 20/09/2010 14:06:11 door Marc rc is as
 
PHP hulp

PHP hulp

24/11/2024 07:49:54
 
Elwin - Fratsloos

Elwin - Fratsloos

20/09/2010 11:21:42
Quote Anchor link
Een derde tabel (koppeltabel) is inderdaad de oplossing, maar ik zou de benadering kiezen dat wanneer de combinatie agenda <> gebruiker bestaat dit ja betekend. Als de combinatie niet bestaat betekend dit dan automatisch nee.

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.
 
Pieter Jansen

Pieter Jansen

20/09/2010 12:14:59
Quote Anchor link
Ja, wat Elwin zegt klopt wel ongeveer.

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.
 
Marc rc is as

Marc rc is as

20/09/2010 13:13:08
Quote Anchor link
Wat slaat de Agenda_Gebruiker dan op?

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?
 
Elwin - Fratsloos

Elwin - Fratsloos

20/09/2010 13:24:53
Quote Anchor link
De tabel AGENDA_GEBRUIKER is een koppeltabel tussen AGENDA en GEBRUIKER. Wanneer een rij in de tabel AGENDA_GEBRUIKER voorkomt betekend dat dat de gebruiker in die rij 'ja' heeft gezegd tegen de agenda in die rij.

Als de combinatie niet voorkomt heeft de gebruiker (nog) geen 'ja' gezegd.

De kolom aanwezigheid in de tabel AGENDA_GEBRUIKER is niet nodig.
 
Marc rc is as

Marc rc is as

20/09/2010 13:59:42
Quote Anchor link
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?
 
Niek s

niek s

20/09/2010 14:17:55
Quote Anchor link
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?


Die opmerkingen kan je dan toch in de koppeltabel kwijt?
 
Elwin - Fratsloos

Elwin - Fratsloos

20/09/2010 14:22:13
Quote Anchor link
Niek s op 20/09/2010 14:17:55:
Die opmerkingen kan je dan toch in de koppeltabel kwijt?
Precies.

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
 
Marc rc is as

Marc rc is as

20/09/2010 14:26:37
Quote Anchor link
Kzal er eens mee gaan hobby-en.
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</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>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</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>&nbsp;</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?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.