Ik zou graag de verjaardagskalender van onze voetbalclub willen uitlezen met php.
Heb een .csv gemaakt met daarin:
<geboortedatum dd-mm-jj> <naam> <team waarin deze persoon speelt>

De bedoeling is dat bij aanroepen van dat script wordt gekeken naar de welke maand het momenteel is en dat alle personen die in deze maand die zijn geboren worden getoond. Zou iemand mij willen helpen met een script? Ben zelf al wat aan het fröbelen geweest, en krijg wel iets op het scherm, maar dat is niet echt wat ik zou willen (zou het ook graag in kolommen willen formateren).

alvast bedankt voor je reactie,
Jos
het enige wat ik zou kunnen bedenken is het volgdende:

zorg dat je een loop krijgt die je 31 keer uitvoert:
for ($d=1;$d<32;$d++){ }
in die loop kijk je of iemand op die datum jarig is...

deze loop zet je weer in een andere loop die je twaalf keer uitvoert voor elke maand...

probleem is wel: je voert dus in totaal 12*31 = bijna 400 keer een vergelijking uit, en tja, dat gaat ten koste van je serversnelheid!
Kan volgens mij simpeler:
Vul eerst een array met alle datums die voldoen (lees: die in de overeenkomstige maand vallen). Sorteer daarna het array op dag (oplopend) en toon vervolgens het gesorteerde array. Of ben ik nu te simpel?
Je hebt helemaal gelijk Jos. Wat ik in het volgende gedaan heb. Onderstaande script is weer getest en werkend bevonden:

<?php
$data = file('bestand.csv');

foreach($data as $key => $regel)
{
$data[$key] = explode(';', $regel);
$data[$key][0] = explode('-', $data[$key][0]);
}
sort($data);

foreach($data as $values)
{
foreach($values as $value)
{
if(is_array($value))
{
$value = implode('-',$value);
}
echo $value.'<br>';
}
echo '<br>';
}
?>
[edit]typo[/edit]
He, bedankt; kweet wel wat ik wil, maar php is nog een soort Russisch voor me $-)
Moet ik die twee scripts nu aan elkaar frotten of hoe kun je zoiets het beste aanpakken?
Nee, dit laatste script doet in principe alles wat je wilt. Het enige dat je er nog tussen moet werken is de opmaak die je wilt toepassen...
Ik heb het net getest; het script geeft alle records?
Zal eens kijken of ik kan ontdekken wat er voudt is gegaan...
Ehm nee, ik ben inderdaad vergeten die datum check toe te passen. Die moet er nog even in...
zal kijken of ik die er inkrijg; gelijk een leuke oefening...
Ik heb het als volgt opgelost:

<html>
<head>
<title>Verjaardagskalender</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="diversen.css" type="text/css">
</head>
<body>
<?php
$data = file('data/verjaardagen.csv');

foreach($data as $key => $regel)
{
$data[$key] = explode(';', $regel);
$data[$key][0] = explode('-', $data[$key][0]);

if($datum[1] == date('m'))
{
sort($data);
}

foreach($data as $values)
{
foreach($values as $value)
{
if(is_array($value))
{
$value = implode('-',$value);
}
// echo $value.'<br>';
echo $value.'';
}
echo '<br>';
}
?>

</body>
</html>

Het enige probleem is nu dat ik een error krijg op het regelnummer onder </html>
Na een nachtje doorwerken geloof ik dat ik het e.e.a. begin te snappen.
Xit alleen nog met het stylesheet; moet ik dat ook in php definieren of hoe gaat dat in zijn werk? Zoals hij nu is, wordt het stylesheet niet gevolgd:

<html>
<head>
<title>Verjaardagskalender</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="diversen.css" type="text/css">
</head>
<body>

<?php
$data = file('./data/verjaardagen.csv');
sort($data);

echo 'Deze maand zijn jarig:'.'<br />'.'<br />';

foreach($data as $key => $regel)
{
$data[$key] = explode(';', $regel);
$datum = explode('-', $data[$key][0]);

if($datum[1] == date('m'))
{
// echo $data[$key][1].' is jarig op '.$datum[0].'-'.$datum[1].'<br />';
echo '<b>'.$datum[0].'</b> ';
echo $datum[l].' ' ;
echo $data[$key][1].' ';
echo '(';
echo $data[$key][2].' ';
echo ' jaar, ';
echo $data[$key][3].')';
echo '<br />';
}
}
?>
</body>
</html>

-- knip --

bedankt,
Jos

Reageren