Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Lichtkrant met verjaardagen

None
4 antwoorden
  • Wie kan mij helpen aan een een stukje script voor op onze website van een lichtkrant waarin automatisch de namen worden genoemd van leden die jarig zijn diezelfde dag.

    Groetjes, Michel
  • Staan die namen in een database? Dan kun je ze er met PHP mysql_query en mysql_result uit halen. Anders kun je ze misschien in een textbestand op de webserver zetten en ze met PHP File in een array lezen.

    Dus de eerste vraag is: Waar heb je die namen en verjaardagen staan?
  • De namen en verjaardagen staan in een tekstbestand.
  • In dat geval is het belangrijk HOE ze in dat bestand staan.
    Het lijkt me het meest praktisch om naam en verjaardag op dezelfde regel te zetten, gescheiden door b.v. een komma:

    Piet de Vries,1106
    Jan Jansen,0331
    Bert Verstappen,0805

    De datum staat dus in het formaat: MMDD

    Dat sla je b.v. op als verjaardagen.txt

    Eerst zet je een paar variabelen klaar:
    [code:1:a307b7d77e]
    <?php
    $scheidingsteken = "<br />";
    $verjaardagsheader = "<h3>Vandaag jarig</h3>
    ";
    $vandaagjarig = "";
    [/code:1:a307b7d77e]
    Vervolgens lees je het hele bestand als volgt in een PHP array:
    [code:1:a307b7d77e]
    $kalender = file("verjaardagen.txt");
    [/code:1:a307b7d77e]
    De variabele $kalender is nu dus een array met op elke positie: naam,datum
    Nu moet je de naam dus nog van de datum scheiden.
    Dat kun je doen door, door de hele array heen te lo(o)pen, de datum van de naam te scheiden, en de datum te checken of dat vandaag is. (Eerlijk gezegd komt het me zelf een beetje omslachtig over, maar ik zie zo gauw geen beter methode. Dus als een mede forummer een beter idee heeft lees ik het hier graag ;-)
    [code:1:a307b7d77e]
    // Loop door de array heen

    foreach($kalender as $verjaardag)
    {
    // De 'aktuele' regel van de loop zit nu in de variabele $verjaardag
    // Scheidt de naam van de datum mbv de komma tussen de twee
    $verjaardagsdata = explode(",",$verjaardag);
    // Nu staat de naam in $verjaardagsdata[0] en de datum in $verjaardagsdata[1]
    // Nu gaan we checken of de twee linkse tekens in de datum overeenkomen met de huidige maand
    if (substr($verjaardagsdata[1],0,2) == date("m"))
    {
    // Ja, dus nu gaan we checken of de twee rechtse tekens in de datum overeenkomen met de huidige dag
    if (substr($verjaardagsdata[1],2,2) == date("d"))
    {
    // Ook dat is het geval, dus we hebben vandaag een jarige!
    // We vullen de variabele '$vandaagjarig' met de naam en het scheidingsteken
    $vandaagjarig .= $verjaardagsdata[0].$scheidingsteken."
    ";
    }
    }
    }
    [/code:1:a307b7d77e]
    De loop is klaar, de aktuele verjaardagen staan nu in variabele $vandaagjarig, gescheiden door het scheidingsteken dat je in het begin hebt gedefinieerd
    Nu hoef je alleen nog maar te checken of er iets in deze variabele zit (Of er vandaag dus jarigen zijn) en zo ja, deze afdrukken.
    [code:1:a307b7d77e]
    if (!empty($vandaagjarig))
    // ALS de variabele NIET leeg is
    echo $verjaardagsheader;
    echo $vandaagjarig;
    ?>
    [/code:1:a307b7d77e]

    De datum is overigens korter te checken met onderstaande regel, maar met de extra stap er in kun je hopelijk gemakkelijker volgen wat er gebeurt.
    [code:1:a307b7d77e]
    if (substr($verjaardagsdata[1],0,2) == date("m") and (substr($verjaardagsdata[1],2,2) == date("d"))
    $vandaagjarig .= $verjaardagsdata[0].$scheidingsteken."
    ";
    [/code:1:a307b7d77e]

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.