Verjaardag met txt bestand.
Het mooiste zou het zijn dat hij 2dagen van te voren aangeeft dat iemand over 2 dagen jarig is.
daarna 1 dag van te voren aangeven dat iemand over 1 dag jarig is.
Jarig vandaag:
En dan gisteren was ... jarig.
Is dat mogelijk?
alvast bedankt!
ik kan me herinneren dat ik ooit zo'n script op hotscripts.com heb zien staan. Werkte best goed, maar ik vond het achteraf nutteloos voor m'n site. Het werkte trouwens wel.
Dus bijvoorbeeld:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$aVerjaardagen = array(
1234_1 => 'nickname1',
1234_2 => 'nickname2',
2234_1 => 'nickname3'
);
?>
$aVerjaardagen = array(
1234_1 => 'nickname1',
1234_2 => 'nickname2',
2234_1 => 'nickname3'
);
?>
1234 en 2234 worden dan timestamps dit om makkelijk en snel te kunnen zoeken wie er over 1 of 2 dagen jarig is. _1 en _2 zijn volgnummers voor mensen die op dezelfde dag jarig zijn.
Van een datum naar een timestamp doe je met de functie mktime(). Deze functie moet je dan gebruiken voor het invoeren en het zoeken naar gebruikers.
Misschien dat ik vandaag nog wel even probeer ;D
Gewijzigd op 25/04/2005 19:14:00 door Martijn B
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
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
<?php
error_reporting( E_ALL );
# timestamps om te zoeken...
$ts_vandaag = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
$ts_morgen = $ts_vandaag + 86400;
$ts_overmorgen = $ts_morgen + 86400;
$bestand = './verjaardagen.txt';
$bMaakBestand = true;
$aVerjaardagen = array('25-04-05' => array('jantje','peitje'),
'26-04-05' => array('truus'),
'27-04-05' => array('martijn','kees') );
if( $bMaakBestand || !file_exists($bestand) ){
# Datums vervangen door een timestamp ( dus "25-04-05" wordt "12334556778" )...
while( list($datum,$nicknames) = each($aVerjaardagen) ){
$aSplit = explode( '-', $datum );
$tmp[ mktime( 0, 0, 0, $aSplit[1], $aSplit[0], $aSplit[2] ) ] = $nicknames;
}
# Bestand maken...
@unlink($bestand);
if( $fh = fopen($bestand, "wb") ){
fwrite($fh, serialize( $tmp ) );
fclose($fh);
}
}
# De array ophalen uit het bestand...
$aVerjaardagen = unserialize( file_get_contents($bestand) );
# Laat het resultaat zien...
if( isset($aVerjaardagen[$ts_vandaag]) || isset($aVerjaardagen[$ts_morgen]) ||
isset($aVerjaardagen[$ts_overmorgen]) ){
if( isset($aVerjaardagen[$ts_vandaag]) ){
echo '<b>Vandaag is jarig:</b><br>';
while( list(,$v) = each($aVerjaardagen[$ts_vandaag]) )
echo $v.'<br>';
}
if( isset($aVerjaardagen[$ts_morgen]) ){
echo '<b>Morgen is jarig:</b><br>';
while( list(,$v) = each($aVerjaardagen[$ts_morgen]) )
echo $v.'<br>';
}
if( isset($aVerjaardagen[$ts_overmorgen]) ){
echo '<b>Overmorgen is jarig:</b><br>';
while( list(,$v) = each($aVerjaardagen[$ts_overmorgen]) )
echo $v.'<br>';
}
}else
echo 'Er is vandaag, morgen en overmorgen niemand jarig!';
?>
error_reporting( E_ALL );
# timestamps om te zoeken...
$ts_vandaag = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
$ts_morgen = $ts_vandaag + 86400;
$ts_overmorgen = $ts_morgen + 86400;
$bestand = './verjaardagen.txt';
$bMaakBestand = true;
$aVerjaardagen = array('25-04-05' => array('jantje','peitje'),
'26-04-05' => array('truus'),
'27-04-05' => array('martijn','kees') );
if( $bMaakBestand || !file_exists($bestand) ){
# Datums vervangen door een timestamp ( dus "25-04-05" wordt "12334556778" )...
while( list($datum,$nicknames) = each($aVerjaardagen) ){
$aSplit = explode( '-', $datum );
$tmp[ mktime( 0, 0, 0, $aSplit[1], $aSplit[0], $aSplit[2] ) ] = $nicknames;
}
# Bestand maken...
@unlink($bestand);
if( $fh = fopen($bestand, "wb") ){
fwrite($fh, serialize( $tmp ) );
fclose($fh);
}
}
# De array ophalen uit het bestand...
$aVerjaardagen = unserialize( file_get_contents($bestand) );
# Laat het resultaat zien...
if( isset($aVerjaardagen[$ts_vandaag]) || isset($aVerjaardagen[$ts_morgen]) ||
isset($aVerjaardagen[$ts_overmorgen]) ){
if( isset($aVerjaardagen[$ts_vandaag]) ){
echo '<b>Vandaag is jarig:</b><br>';
while( list(,$v) = each($aVerjaardagen[$ts_vandaag]) )
echo $v.'<br>';
}
if( isset($aVerjaardagen[$ts_morgen]) ){
echo '<b>Morgen is jarig:</b><br>';
while( list(,$v) = each($aVerjaardagen[$ts_morgen]) )
echo $v.'<br>';
}
if( isset($aVerjaardagen[$ts_overmorgen]) ){
echo '<b>Overmorgen is jarig:</b><br>';
while( list(,$v) = each($aVerjaardagen[$ts_overmorgen]) )
echo $v.'<br>';
}
}else
echo 'Er is vandaag, morgen en overmorgen niemand jarig!';
?>
Als je $bMaakBestand op false zet dan wordt het bestand niet geupdate met eventueel nieuwe nicknames.
Gewijzigd op 25/04/2005 20:21:00 door Martijn B
Maar hij werkt bij mij (nog) niet.
Hoe ik het ook probeer, ik krijg het niet voor elkaar om deze foutmelding eruit te krijgen.
Fatal error: Call to undefined function: file_get_contents() in \verjaardag\test.php on line 32
Wat is hier nog fout aan?
(PHP 4 >= 4.3.0, PHP 5)
file_get_contents -- Leest een bestand volledig in een string
Gebruik je wel de juiste PHP-versie?
PHP Version 4.2.3
Ik ga het op een nieuwere versie proberen.
Heb een kleine aanpassing doorgevoerd dat ook de personen die gisteren jarig waren ook worden vermeld. (altijd makkelijk als iemand zondag jarig was... dan weet je dat er maandag alsnog gebak te verwachten valt ;-))
Maar dan heb ik nog een vraag...
Hoe kan ik het voorelkaar krijgen dat ook de respectabele leeftijd die iemand gehaald heeft wordt vermeld op de dag dat hij jarig is?
een variable de huidige tijd geven en dan vergelijken met de anderen , erafhalen en dan heb je t
dus
jaar nu - jaar geboorte = leeftijd
Hoop dat dat lukt!