Verjaardagskalender
Is het mogelijk om doormiddel van een script ook alleen de verjaardagen van 'vandaag' naar voren te halen?
De verjaardagen staan als volgt in de DB. DD/MM/JJJJ dus bijv. 14-02-2003
Het lukt mij niet, waarschijnlijk doordat het jaartal in de verjaardag staat (2003), en daar moet hij dus niet naar kijken, alleen naar de dag en de maand.
Is er iemand die mij kan helpen?
Zoiets als $datum = explode("/", $row[datum])
En dan de eerste 2 vergelijken dus $datum[0] en $datum[1]
ik heb e.e.a. geprobeerd, maar het wil helaas nog niet werken. Het exploden (splitten) gaat wel goed, maar de controle op 'vandaag jarig' gaat nog niet goed. Ik heb nu dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$query = "SELECT nummer,geboortedatum,medewerker FROM tb_medewerkers WHERE (uitdienst=0)";
$result = mysql_query ($query);
while ($row = @mysql_fetch_object ($result)) {
//variabele die we gaan splitten:
$var = "$row->geboortedatum";
$var = explode("-", $var); //we splitten alles waar een - staat
$dagdatum = date ("d");
$maanddatum = date ("m");
if ("$dagdatum == $var[0]");
{
echo ("$row->medewerker");
echo ("<br>");
}
}
?>
$query = "SELECT nummer,geboortedatum,medewerker FROM tb_medewerkers WHERE (uitdienst=0)";
$result = mysql_query ($query);
while ($row = @mysql_fetch_object ($result)) {
//variabele die we gaan splitten:
$var = "$row->geboortedatum";
$var = explode("-", $var); //we splitten alles waar een - staat
$dagdatum = date ("d");
$maanddatum = date ("m");
if ("$dagdatum == $var[0]");
{
echo ("$row->medewerker");
echo ("<br>");
}
}
?>
Gevolg is dat ik een lijst krijg met alle medewerkers, ongeacht of ze nu jarig zijn of niet. Er gaat dus iets mis bij de 'IF', ik weet ook niet of dit de goede oplossing is, ben vrij nieuw met PHP. Kan iemand mij helpen?
where uitdienst=0 wil die 0 dan zeggen dat hij jarig is? anders zal je moeten zeggen where datum is $date ofzo?.
Ik neem aan dat de data in een datetime formaat in mysql staan.
gebruik gewoon de sql query:
SELECT nummer,geboortedatum,medewerker
FROM tb_medewerkers
WHERE (uitdienst=0)
AND month(geboortedatum) = month(now())
AND day(geboortedatum) = date(now())
moet je volgens mij ff veranderen naar
en voor vergelijkingen kan je het beste gebruiken, dus dan krijg je
als het goed is...
Ik heb er nu dit van gemaakt:
if ($dagdatum == $var[0]);
maar ook dit werkt helaas niet.
Where uitdienst=0 wil zeggen dat hij alleen de verjaardagen moet laten zien van de mensen die nog op het bedrijf werken.
Iemand nog een suggestie?
Converteer het naar datetime. Datum als varchar neerzetten is complete nonsense.
Dat maakt ut wss wel makkelijker :)
Quote:
Wat een gepiel.
Ik neem aan dat de data in een datetime formaat in mysql staan.
gebruik gewoon de sql query:
SELECT nummer,geboortedatum,medewerker
FROM tb_medewerkers
WHERE (uitdienst=0)
AND month(geboortedatum) = month(now())
AND day(geboortedatum) = date(now())
Ik neem aan dat de data in een datetime formaat in mysql staan.
gebruik gewoon de sql query:
SELECT nummer,geboortedatum,medewerker
FROM tb_medewerkers
WHERE (uitdienst=0)
AND month(geboortedatum) = month(now())
AND day(geboortedatum) = date(now())
Beste Arend, dank voor je reactie, ik heb de TB aangepast, er is nu een veld gebdatum bijgekomen, met als type 'datetime'. de datum staat als volgt in het veld 2000-02-17
M'n code ziet er zo uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$sql= "SELECT nummer,gebdatum,medewerker FROM tb_medewerkers WHERE (uitdienst=0) AND month(gebdatum) = month(now()) AND day(gebdatum) = date(now()) ";
$result = mysql_query ($query);
while ($row = @mysql_fetch_object ($result)) {
echo ("$row->medewerker");
echo ("$medewerker");
}
?>
$sql= "SELECT nummer,gebdatum,medewerker FROM tb_medewerkers WHERE (uitdienst=0) AND month(gebdatum) = month(now()) AND day(gebdatum) = date(now()) ";
$result = mysql_query ($query);
while ($row = @mysql_fetch_object ($result)) {
echo ("$row->medewerker");
echo ("$medewerker");
}
?>
Het resultaat is alleen helemaal niets, wat doe ik fout?
$result = mysql_query ($query);
while ($row = @mysql_fetch_object ($result)) {
echo ("$row->medewerker");
echo ("$medewerker");
}
Eerst zet je $sql en dan wil je $query uitvoeren :s
lijkt me logisch dat dat niet werkt ;)
Gewijzigd op 17/02/2004 14:30:00 door Mitch X
Dat is inderdaad een stomme fout, heb het aangepast, maar hij werkt nog niet...
Foutje van mij:
moet zijn:
AND day(geboortedatum) = day(now())
Het werkt helaas nog niet, het is nu:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$query= "SELECT * FROM tb_medewerkers WHERE ((uitdienst=0) && month(gebdatum) = month(now()) && day(gebdatum) = day(now())) ";
$result = mysql_query ($query);
while ($row = @mysql_fetch_object ($result)) {
echo ("$row->medewerker");
echo ("$medewerker");
}
?>
$query= "SELECT * FROM tb_medewerkers WHERE ((uitdienst=0) && month(gebdatum) = month(now()) && day(gebdatum) = day(now())) ";
$result = mysql_query ($query);
while ($row = @mysql_fetch_object ($result)) {
echo ("$row->medewerker");
echo ("$medewerker");
}
?>
en ik heb ook ipv de && tekens in de query AND geprobeerd, maar niets wil helaas werken.
In de database heb ik het veldtype nu (na testen) op Date gezet, datum is nu dus: 2000-02-17
maar helaas wil het nog niet werken..
Hoe weet je dat het niet werkt?
Wat gaat er fout, wat is de foutmelding?
bovenaan je page
zet anders eens: Dat is mijn regel.
De Adje-aanvullende Mitch :P
bovenaan de pagina gezet, resultaat was een melding dat er iets mis was met een pagina die ik geinclude had (db connectie). Ik maak de DB connectie nu gewoon op de pagina zelf. Maar het werkt nog niet...
Ik ben wel wat verder gekomen. De query is nu:
$query= "SELECT gebdatum, medewerker FROM tb_medewerkers WHERE (uitdienst=0) AND month(gebdatum) = month(now()) AND day(gebdatum) = day(now())";
$result = mysql_query ($query);
while ($row = @mysql_fetch_object ($result)) {
echo ("hallo1 ");
echo ("$row->medewerker <br>");
--
Het probleem zit in: $query= "SELECT gebdatum, medewerker FROM tb_medewerkers WHERE (uitdienst=0) AND month(gebdatum) = month(now()) AND day(gebdatum) = day(now())";
het gaat goed t/m AND month(gebdatum) = month(now()) want als ik het stukje met 'day' weglaat krijg ik wel resultaat. Ook als ik 'day' vervang door bijv. 'year' krijg ik een resultaat.
Het zit hem dus in 'day'. Weet iemand wat ik hiervoor in de plaats moet gebruiken?
Bedankt voor de reacties, ik heb Ik ben wel wat verder gekomen. De query is nu:
$query= "SELECT gebdatum, medewerker FROM tb_medewerkers WHERE (uitdienst=0) AND month(gebdatum) = month(now()) AND day(gebdatum) = day(now())";
$result = mysql_query ($query);
while ($row = @mysql_fetch_object ($result)) {
echo ("hallo1 ");
echo ("$row->medewerker <br>");
--
Het probleem zit in: $query= "SELECT gebdatum, medewerker FROM tb_medewerkers WHERE (uitdienst=0) AND month(gebdatum) = month(now()) AND day(gebdatum) = day(now())";
het gaat goed t/m AND month(gebdatum) = month(now()) want als ik het stukje met 'day' weglaat krijg ik wel resultaat. Ook als ik 'day' vervang door bijv. 'year' krijg ik een resultaat.
Het zit hem dus in 'day'. Weet iemand wat ik hiervoor in de plaats moet gebruiken?
't moet zijn: AND weekday(gebdatum) = weekday(now())";
Iedereen bedankt voor de hulp!
Indien iemand interesse heeft zal ik het volledige script plaatsen, maar ik denk dat je voldoende hebt aan alles wat hierboven staat.
het werkt niet helemaal goed...
kan iemand helpen?
De pagina is:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
// mysql connectie
$user = "*******";
$dbpass = "********";
$host = "********";
$dbdb = "*********";
if (!mysql_select_db($dbdb, mysql_connect($host, $user, $dbpass)))
{
echo "Database connectie mislukt.";
exit();
}
$query= "SELECT gebdatum, medewerker FROM tb_medewerkers WHERE (uitdienst=0) AND month(gebdatum) = month(now()) AND weekday(gebdatum) = weekday(now()) ";
$result = mysql_query ($query);
while ($row = @mysql_fetch_object ($result)) {
echo ("$row->medewerker $row->gebdatum<br>");
}
?>
// mysql connectie
$user = "*******";
$dbpass = "********";
$host = "********";
$dbdb = "*********";
if (!mysql_select_db($dbdb, mysql_connect($host, $user, $dbpass)))
{
echo "Database connectie mislukt.";
exit();
}
$query= "SELECT gebdatum, medewerker FROM tb_medewerkers WHERE (uitdienst=0) AND month(gebdatum) = month(now()) AND weekday(gebdatum) = weekday(now()) ";
$result = mysql_query ($query);
while ($row = @mysql_fetch_object ($result)) {
echo ("$row->medewerker $row->gebdatum<br>");
}
?>
Het resultaat is dat ik de namen van 2 medewerkers te zien krijg: de ene is jarig op 5 feb, de ander op 10 feb. (voor de duidelijkheid, 't is vandaag 21 feb.) Als ik in de DB iemands verjaardag op 2004-02-21 zet dan wordt die persoon ook weergegeven.
Kan iemand mij helpen waardoor dit script goed werkt?
Bvd. Jochem