Biersysteem
Ik ben van plan om voor een jaarclub van een studentenvereniging een biersysteem te maken. De bedoeling is dat de leden kunnen aankruisen of ze op een avond zijn geweest op de sociëteit en of ze die avond met de jaarclub hebben gegeten. We krijgen namelijk aan het eind van de maand per avond hoeveel geld we met zijn allen hebben besteed aan bier en eten. Deze kosten verdelen we vervolgens over de leden die op die betreffende avonden aanwezig waren.
Ik heb tot nu toe het login systeem geschreven. Hoe kan ik dit verder het beste aanpakken? Ik zou bijvoorbeeld graag willen weten hoe ik alle dinsdagen en donderdagen van de weken (alleen op die avonden zijn we op de sociëteit) in een tabel (mySQL) kan zetten.
Ik heb een basiskennis van php en een gevorderde kennis van html.
Alvast bedankt.
Groet,
Robin
Gewijzigd op 01/01/1970 01:00:00 door Robin
id | student_id | meegegeten | datum
Dan maak je een formuliertje met alle dinsdagen en donderdagen die er geweest zijn. Geef de checkboxes als waarde de datum van die dag. Zet naast de dagen een radio-button qua meegegeten op 'Ja' of 'Nee'. De aangevinkte checkboxes zet je in een array en deze doorloop je om ze vervolgens in de database te zetten.
Per maand kun je dan deze query gebruiken om het aantal aanwezige studenten per avond te krijgen.
Weet je misschien of er een simpel script bestaat om bijvoorbeeld alle dinsdagen en donderdagen met datum in een tabel te krijgen, of moet ik ze allemaal handmatig invoeren?
Met vriendelijke groet,
Robin
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
//Roep phpBB inlogsysteem aan
define('IN_PHPBB', true);
$phpbb_root_path = "phpBB3/"; //pad naar PHPBB3
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session
$user->session_begin();
$auth->acl($user->data);
$user->setup();
?>
<html>
<head>
<title>Beersysteem</title>
</head>
<body>
<?php
if($user->data['is_registered']) //Als gebruiker is ingelogd
{
include 'db.php'; // Include de logingegevens van database, zie db.php
echo "<div class=\"news_title\"><h3> » Beersysteem</h3></div>";
echo('<p align="center">Welkom bij het Beersysteem van Jaarclub ***, '.$user->data['username'].'!</p>');
//begin query
$sql = 'SELECT naam
FROM beeraccount
WHERE naam = "'.$user->data['username'].'"';
$res = mysql_query($sql,$link);
if ($res && mysql_num_rows($res) >= 1)
{
//account bestaat.
echo "<br>";
while($row = mysql_fetch_assoc($res))
{
echo $row['naam'].'<br />';
}
echo "account bestaat!";
// hier komt het aankruisen van de dagen.
} else { //account bestaat nog niet, maak er één aan
echo 'Dit is de eerste keer dat je ingelogt in het beersysteem, een beeraccount wordt voor je aangemaakt, je wordt over 5 seconden doorgestuurd.';
include 'db.php';
$sql = "
INSERT INTO beeraccount
(
naam
)
VALUES
(
'".$user->data['username']."'
)
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
else
{
$id = mysql_insert_id();
}
//nu het account is aangemaakt, redirect opnieuw naar beer.php
$redirect = request_var('redirect', "beer.$phpEx");
$url = redirect($redirect, true);
$time = 5; //Seconden redirect
echo '<meta http-equiv="refresh" content="' . $time . ';url=' . str_replace('&', '&', $url) . '" />';
exit;
}
}
else // Niet ingelogd
{
?>
<p>Voor deze pagina moet je ingelogd zijn.<br>
<a href="login.php">Inloggen</a>
<?php
}
?>
</body>
</html>
//Roep phpBB inlogsysteem aan
define('IN_PHPBB', true);
$phpbb_root_path = "phpBB3/"; //pad naar PHPBB3
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session
$user->session_begin();
$auth->acl($user->data);
$user->setup();
?>
<html>
<head>
<title>Beersysteem</title>
</head>
<body>
<?php
if($user->data['is_registered']) //Als gebruiker is ingelogd
{
include 'db.php'; // Include de logingegevens van database, zie db.php
echo "<div class=\"news_title\"><h3> » Beersysteem</h3></div>";
echo('<p align="center">Welkom bij het Beersysteem van Jaarclub ***, '.$user->data['username'].'!</p>');
//begin query
$sql = 'SELECT naam
FROM beeraccount
WHERE naam = "'.$user->data['username'].'"';
$res = mysql_query($sql,$link);
if ($res && mysql_num_rows($res) >= 1)
{
//account bestaat.
echo "<br>";
while($row = mysql_fetch_assoc($res))
{
echo $row['naam'].'<br />';
}
echo "account bestaat!";
// hier komt het aankruisen van de dagen.
} else { //account bestaat nog niet, maak er één aan
echo 'Dit is de eerste keer dat je ingelogt in het beersysteem, een beeraccount wordt voor je aangemaakt, je wordt over 5 seconden doorgestuurd.';
include 'db.php';
$sql = "
INSERT INTO beeraccount
(
naam
)
VALUES
(
'".$user->data['username']."'
)
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
else
{
$id = mysql_insert_id();
}
//nu het account is aangemaakt, redirect opnieuw naar beer.php
$redirect = request_var('redirect', "beer.$phpEx");
$url = redirect($redirect, true);
$time = 5; //Seconden redirect
echo '<meta http-equiv="refresh" content="' . $time . ';url=' . str_replace('&', '&', $url) . '" />';
exit;
}
}
else // Niet ingelogd
{
?>
<p>Voor deze pagina moet je ingelogd zijn.<br>
<a href="login.php">Inloggen</a>
<?php
}
?>
</body>
</html>
Nu wil ik, zoals Jezpur al aangaf, een lijst maken met alle dinsdagen en donderdagen, waar degene die is ingelogd kan aanvinken welke dagen hij is geweest en of hij heeft gegeten. De penningmeester moet vervolgens per dag kunnen zien welke personen zijn geweest en of ze hebben gegeten. Hoe kan ik dit het beste doen?
Gewijzigd op 01/01/1970 01:00:00 door Robin
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$start = 20090101;
for($i=$start;$i<=date("Ymd");$i++) {
$year = substr($i, 0, 4);
$mon = substr($i, 4, 2);
$day = substr($i, 6, 2);
$dayofweek = date("w", mktime(0,0,0,$mon,$day,$year));
echo '<input type="checkbox" name="lijst[]" value="'.$year.'-'.$mon.'-'.$day.'" />'.($dayofweek == 1 ? 'Dinsdag' : ($dayofweek == 3 ? 'Donderdag' : '')).', '.$day.'-'.$mon.'-'.$year.'<br />';
}
?>
$start = 20090101;
for($i=$start;$i<=date("Ymd");$i++) {
$year = substr($i, 0, 4);
$mon = substr($i, 4, 2);
$day = substr($i, 6, 2);
$dayofweek = date("w", mktime(0,0,0,$mon,$day,$year));
echo '<input type="checkbox" name="lijst[]" value="'.$year.'-'.$mon.'-'.$day.'" />'.($dayofweek == 1 ? 'Dinsdag' : ($dayofweek == 3 ? 'Donderdag' : '')).', '.$day.'-'.$mon.'-'.$year.'<br />';
}
?>
$start is in het formaat jjjjmmdd (Ymd). Je moet hier even aangeven vanaf welke dag ze kunnen aangeven dat ze er waren. De loop loopt dan vanaf die dag tot vandaag (na vandaag kan toch niemand al gegeten hebben), en geeft alle dinsdagen en donderdagen weer, volgens mij (niet getest, maar vertrouw er op).
Quote:
, 01-01-2009
, 02-01-2009
, 03-01-2009
, 04-01-2009
Dinsdag, 05-01-2009
, 06-01-2009
Donderdag, 07-01-2009
, 08-01-2009
, 09-01-2009
, 10-01-2009
, 11-01-2009
Dinsdag, 12-01-2009
, 13-01-2009
Donderdag, 14-01-2009
, 15-01-2009
, 16-01-2009
, 17-01-2009
, 18-01-2009
Dinsdag, 19-01-2009
, 20-01-2009
Donderdag, 21-01-2009
, 22-01-2009
, 23-01-2009
, 24-01-2009
, 25-01-2009
Dinsdag, 26-01-2009
, 27-01-2009
Donderdag, 28-01-2009
, 29-01-2009
, 30-01-2009
, 31-01-2009
, 32-01-2009
Dinsdag, 33-01-2009
, 34-01-2009
Donderdag, 35-01-2009
, 36-01-2009
, 37-01-2009
, 38-01-2009
, 39-01-2009
Dinsdag, 40-01-2009
, 41-01-2009
, 02-01-2009
, 03-01-2009
, 04-01-2009
Dinsdag, 05-01-2009
, 06-01-2009
Donderdag, 07-01-2009
, 08-01-2009
, 09-01-2009
, 10-01-2009
, 11-01-2009
Dinsdag, 12-01-2009
, 13-01-2009
Donderdag, 14-01-2009
, 15-01-2009
, 16-01-2009
, 17-01-2009
, 18-01-2009
Dinsdag, 19-01-2009
, 20-01-2009
Donderdag, 21-01-2009
, 22-01-2009
, 23-01-2009
, 24-01-2009
, 25-01-2009
Dinsdag, 26-01-2009
, 27-01-2009
Donderdag, 28-01-2009
, 29-01-2009
, 30-01-2009
, 31-01-2009
, 32-01-2009
Dinsdag, 33-01-2009
, 34-01-2009
Donderdag, 35-01-2009
, 36-01-2009
, 37-01-2009
, 38-01-2009
, 39-01-2009
Dinsdag, 40-01-2009
, 41-01-2009
Hij gaat dus verder na de laatste dag van de maand tot 100 en dan begint ie weer bij 1 bij de volgende maand. Ook moeten die andere dagen behalve dinsdag en donderdag dus verwijderd worden.
Bedankt,
Robin
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Ik ga direct aan de slag.
Jezpur schreef op 12.09.2009 19:30:
@SanThe: Kun je dit ook niet doen:
Ja, werkt ook goed.
Eigenlijk wel netter.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -