[SOLVED]Verjaardag lijst script... 2009?
Ik heb onderstaand php script op een intranet pagina, nu is het probleem dat hij alleen tot 31-12-2008 loopt en dus niet de mensen die jarig zijn op bijvoorbeeld 2 januari nu al meegeeft. Heb aantal dingen geprobeerd maar krijg het niet voor elkaar. Weet iemand de oplossing? hier is het werkende script die nu tot 31 december loopt.
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
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
<?php
include 'dbconnect.php';
// Datum in dagen
$dag = date("d");
// Datum in maanden
$maand = date("m");
$query = "SELECT
naam, geboorte, vestiging, geboortedag, geboortemaand
FROM
birthday
WHERE
geboorte + INTERVAL (YEAR(NOW()) - YEAR(geboorte)) YEAR
BETWEEN
NOW() - INTERVAL 6 DAY
AND
NOW() + INTERVAL 11 DAY
ORDER BY geboortemaand, geboortedag, naam";
$result = mysql_query($query)
or die(mysql_error());
while(list($naam,$geboorte,$vestiging,$geboortedag,$geboortemaand)= mysql_fetch_row($result))
{
if ($geboortedag == $dag && $geboortemaand == $maand) {
echo "<b><font color=\"yellow\"> $geboortedag-$geboortemaand :: $naam ($vestiging)</font></b><br>"; }
else {
echo " $geboortedag-$geboortemaand :: $naam ($vestiging) <br>"; }
}
echo "<br>";
include 'closedbconnect.php';
?>
include 'dbconnect.php';
// Datum in dagen
$dag = date("d");
// Datum in maanden
$maand = date("m");
$query = "SELECT
naam, geboorte, vestiging, geboortedag, geboortemaand
FROM
birthday
WHERE
geboorte + INTERVAL (YEAR(NOW()) - YEAR(geboorte)) YEAR
BETWEEN
NOW() - INTERVAL 6 DAY
AND
NOW() + INTERVAL 11 DAY
ORDER BY geboortemaand, geboortedag, naam";
$result = mysql_query($query)
or die(mysql_error());
while(list($naam,$geboorte,$vestiging,$geboortedag,$geboortemaand)= mysql_fetch_row($result))
{
if ($geboortedag == $dag && $geboortemaand == $maand) {
echo "<b><font color=\"yellow\"> $geboortedag-$geboortemaand :: $naam ($vestiging)</font></b><br>"; }
else {
echo " $geboortedag-$geboortemaand :: $naam ($vestiging) <br>"; }
}
echo "<br>";
include 'closedbconnect.php';
?>
Gewijzigd op 01/01/1970 01:00:00 door Marvin H
geboorte + INTERVAL (YEAR(NOW()) - YEAR(geboorte)) YEAR
Ook al snap ik niet veel van die zin...
Dennis Mertens schreef op 16.12.2008 09:43:
Komt dat niet door:
geboorte + INTERVAL (YEAR(NOW()) - YEAR(geboorte)) YEAR
Ook al snap ik niet veel van die zin...
geboorte + INTERVAL (YEAR(NOW()) - YEAR(geboorte)) YEAR
Ook al snap ik niet veel van die zin...
Zou goed kunnen :) dat probleem heb ik dus ook, wat moet er dan wel komen?
Lol. Dat is een serieuze belediging.
Chris Kortaan schreef op 16.12.2008 10:03:
Script kiddies?
Lol. Dat is een serieuze belediging.
Lol. Dat is een serieuze belediging.
sorry :) verkeerde woord... ff veranderd... maar weet je oplossing?
Welke verjaardagen moet je allemaal krijgen dan?
Dennis Mertens schreef op 16.12.2008 10:23:
Welke verjaardagen moet je allemaal krijgen dan?
van alle medewerkers die hier werken. Ze staan in een database... het script zoals hij nu is werkt prima, alleen tot 31-12-2008, terwijl er ook mensen jarig zijn op 1-1-2009... die wil ik ook weergeven... maar omdat hij in de query alleen vergelijkt met het huidige jaar kan dat niet, de query moet dus anders maar weet niet hoe
Je moet geboortedatum in één veld type DATE zetten. En niet in diverse losse velden: geboortedag, geboortemaand
Doe een tweede select, waarin hij kijkt of het bijna het einde van het jaar is. als dat zo is, laat je hem de data selecteren van 1 jan tot bijv. 5 jan..
Chris Kortaan schreef op 16.12.2008 10:29:
Doe een tweede select, waarin hij kijkt of het bijna het einde van het jaar is. als dat zo is, laat je hem de data selecteren van 1 jan tot bijv. 5 jan..
Dom, had ik natuurlijk ook kunnen verzinnen... Thankx... Heb nu dit als code, waarbij als de datum 20-12 of hoger is hij ook het begin van januari weergeeft.
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
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
include 'dbconnect.php';
// Datum in dagen
$dag = date("d");
// Datum in maanden
$maand = date("m");
$query = "SELECT
naam, geboorte, vestiging, geboortedag, geboortemaand
FROM
birthday
WHERE
geboorte + INTERVAL (YEAR(NOW()) - YEAR(geboorte)) YEAR
BETWEEN
NOW() - INTERVAL 6 DAY
AND
NOW() + INTERVAL 11 DAY
ORDER BY geboortemaand, geboortedag, naam";
$result = mysql_query($query)
or die(mysql_error());
while(list($naam,$geboorte,$vestiging,$geboortedag,$geboortemaand)= mysql_fetch_row($result))
{
if ($geboortedag == $dag && $geboortemaand == $maand) {
echo "<b><font color=\"yellow\"> $geboortedag-$geboortemaand :: $naam ($vestiging)</font></b><br>"; }
else {
echo " $geboortedag-$geboortemaand :: $naam ($vestiging) <br>"; }
}
if ($dag >= 20 && $geboortemaand = 12){
$query1 = "SELECT
naam, geboorte, vestiging, geboortedag, geboortemaand
FROM
birthday
WHERE
geboortemaand = 1
AND
geboortedag <= 5
ORDER BY geboortemaand, geboortedag, naam";
$result1 = mysql_query($query1)
or die(mysql_error());
while(list($naam,$geboorte,$vestiging,$geboortedag,$geboortemaand)= mysql_fetch_row($result1))
{
if ($geboortedag == $dag && $geboortemaand == $maand) {
echo "<b><font color=\"yellow\"> $geboortedag-$geboortemaand :: $naam ($vestiging)</font></b><br>"; }
else {
echo " $geboortedag-$geboortemaand :: $naam ($vestiging) <br>"; }
}
}
echo "<br>";
include 'closedbconnect.php';
?>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
include 'dbconnect.php';
// Datum in dagen
$dag = date("d");
// Datum in maanden
$maand = date("m");
$query = "SELECT
naam, geboorte, vestiging, geboortedag, geboortemaand
FROM
birthday
WHERE
geboorte + INTERVAL (YEAR(NOW()) - YEAR(geboorte)) YEAR
BETWEEN
NOW() - INTERVAL 6 DAY
AND
NOW() + INTERVAL 11 DAY
ORDER BY geboortemaand, geboortedag, naam";
$result = mysql_query($query)
or die(mysql_error());
while(list($naam,$geboorte,$vestiging,$geboortedag,$geboortemaand)= mysql_fetch_row($result))
{
if ($geboortedag == $dag && $geboortemaand == $maand) {
echo "<b><font color=\"yellow\"> $geboortedag-$geboortemaand :: $naam ($vestiging)</font></b><br>"; }
else {
echo " $geboortedag-$geboortemaand :: $naam ($vestiging) <br>"; }
}
if ($dag >= 20 && $geboortemaand = 12){
$query1 = "SELECT
naam, geboorte, vestiging, geboortedag, geboortemaand
FROM
birthday
WHERE
geboortemaand = 1
AND
geboortedag <= 5
ORDER BY geboortemaand, geboortedag, naam";
$result1 = mysql_query($query1)
or die(mysql_error());
while(list($naam,$geboorte,$vestiging,$geboortedag,$geboortemaand)= mysql_fetch_row($result1))
{
if ($geboortedag == $dag && $geboortemaand == $maand) {
echo "<b><font color=\"yellow\"> $geboortedag-$geboortemaand :: $naam ($vestiging)</font></b><br>"; }
else {
echo " $geboortedag-$geboortemaand :: $naam ($vestiging) <br>"; }
}
}
echo "<br>";
include 'closedbconnect.php';
?>
</body>
</html>
Het kan ook in 1 query:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT
naam, geb_dat
FROM
verjaardag
WHERE
geb_dat + INTERVAL (YEAR(NOW()) - YEAR(geb_dat)) YEAR
BETWEEN
NOW() - INTERVAL 6 DAY
AND
NOW() + INTERVAL 11 DAY
OR
geb_dat + INTERVAL (YEAR(NOW()) - YEAR(geb_dat)+1) YEAR
BETWEEN
NOW() - INTERVAL 6 DAY
AND
NOW() + INTERVAL 11 DAY
ORDER BY MONTH(geb_dat), DAY(geb_dat), naam
naam, geb_dat
FROM
verjaardag
WHERE
geb_dat + INTERVAL (YEAR(NOW()) - YEAR(geb_dat)) YEAR
BETWEEN
NOW() - INTERVAL 6 DAY
AND
NOW() + INTERVAL 11 DAY
OR
geb_dat + INTERVAL (YEAR(NOW()) - YEAR(geb_dat)+1) YEAR
BETWEEN
NOW() - INTERVAL 6 DAY
AND
NOW() + INTERVAL 11 DAY
ORDER BY MONTH(geb_dat), DAY(geb_dat), naam
Overigens gaat nu het sorteren nog niet helemaal goed.. :S
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
Robert; ik had het over een 2e select binnen de select :-) (Geen twee losse als je dat bedoeld..)
De TS heeft het nu opgelost met echt een 2e query, ik was dus blijkbaar niet de enige die het zo opvatte :)