In deze les leert u hoe u zelf functies kunt schrijven, en hoe je een
mooie gvrafische teller op je site kunt plaatsen.
Een grafische teller
Wat zou je denken van een mooie grafische teller op je site ?
Met PHP is dat heel makkelijk. We hebben in de cursus gezien dat we met
include of require, code in onze pagina kunnen invoegen die elders
staat. We gaan daar nu gebruik van maken om een funktie te schrijven,
die voor ons onze teller toont.
Wat gaan we aanmaken ?
* Een teller file die we pagteller.txt gaan noemen
* Grafische tellertjes
* Een funktie voor onze teller
Onze pagteller.txt file
We maken met onze tekseditor deze file met als inhoud 25791.
(permissies !)
Nu hebben we nog gif bestandjes nodig voor onze getallen. Die gaan we
0.gif tot en met 9.gif noemen. Ik toon hier dewelke ik gebruik :
Nu, ik ben geen grafische expert. Ik heb die buttons gewoon aangemaakt
met The Gimp. Dit gaat heel eenvoudig in zijn werk. Iedere unix
gebruiker zal The Gimp wel op zijn schijf staan hebben, als je nu
Windows gebruikt als besturingssysteem, geen probleem, The Gimp bestaat
immers ook voor Windows en is helemaal gratis de downloaden en te
gebruiken.
Downloaden doe je vanaf http://www.gimp.org/windows
. Of je gebruikt natuurlijk het grafisch programma waar jij het
liefst mee werkt.
Hoe begin je eraan ? Wel om te beginnen start The Gimp op. Dan kies je
het menu Xtns=>Script-Fu=>Web Pages Themes=>Alien
Glow=>Button...
Speel nu maar wat met The Gimp totdat je een teller hebt die je
aanstaat. Intussen gaan we wat verder coden :-)
De functies
Programmeurs hebben er een grote hekel aan om steeds dezelfde
code terug te schrijven. We hebben nu een teller, en we willen deze
tonen op elke webpagina. Je kunt natuurlijk de code op elke pagina
herhalen, maar zoals gezegd, we moeten daarvoor een andere oplossing
vinden. Om daaraan tegemoet te komen hebben we functies ter onzer
beschikking.
PHP komt al standaard met heel wat functies die we kunnen gebruiken, en
waarvan we in deze cursus al ruim gebruik hebben gemaakt. Functies
zoals fopen(), fread(), count(), date() enz .... zoals je ziet wordt
een functie dus aangeroepen met zijn naam en de argumenten tussen de
haakjes. Wel, wij gaan nu gewoon hetzelfde doen, we gaan ook een
functie schrijven met wat wij willen dat hij doet, de enige vereiste
die daarvoor nodig is, je moet PHP vertellen waar die functie staat en
daarvoor hebben we dan include of require voor.
We hebben nu onze pagteller.txt met inhoud 25791. We willen nu dat dit
getal getoond wordt op elke pagina. We zullen dus een funktie schrijven
daarvoor dat we lesfunktie.php gaan noemen en waarin we de code
opnemen. De funktie zelf, gaan we gewoon teller noemen, we kunnen deze
dan aanroepen op elke pagina die we wensen met de instructie teller().
Code lesfunktie.php
<?php function teller($file) { $pointer=fopen("$file","r+"); $teller=fgets($pointer,11); //we verwijderen de eventuele white
spaces $teller=trim($teller); fclose($pointer); echo "<div
align=\"center\"><table cellpadding=\"0\"
cellspacing=\"0\"><tr>"; // We bepalen hoe lang ons getal is $lengte=strlen($teller);
// We halen nu één voor
één een cijfer uit onze tellerfile // Naargelang de waarde van het getal
tonen we de imagefile // dat verbonden is aan dat getal
Dit is allemaal bekende code voor ons. Het enige wat hier opvalt
is het begin van de file. Daar plaatsen we :
function teller($file) { }
Daarmee geven we te kennen dat onze funktie teller heet en dat
hij één argument meekrijgt, ($file). De code van de
funktie wordt dan tussen de accolades geschreven.
Nu die $file ? Waar halen we die vandaan ? Wel heel eenvoudig, we
sturen de waarde van $file mee vanuit onze pagina waar we de funktie
aanroepen. In ons geval gaat $file de waarde pagteller.txt aannemen,
zijnde onze teller file. In onze webpagina gaan we dus gewoon de teller
aanroepen als volgt : teller($naam_van_onze_tellerfile);. Je ziet hier
meteen de kracht van dergelijke funktie. Je kunt die teller funktie
gebruiken voor om het even welke teller file, het enige wat je moet
doen, is vertellen aan de funktie teller welke file je wilt zien.
We gaan dit nu allemaal eens in een webpagina gieten .
Code pag1.php
<?php require("lesfunktie.php"); ?> <div
align="center"><h2>Dit is onze pag1.php
pagina</h2></div>
<!-- We gaan nu onze teller funktie
oproepen om onze teller te tonen. --> <?php $tellerfile="pagteller.txt"; teller($tellerfile); ?>
<p>Nadat onze teller is getoond,
gaan we gewoon verder met onze pagina.</p>
<p>Je kunt dus om het even waar
in je pagina die funktie oproepen.</p>
<p>Ik wil die namelijk hier ook
nog eens zien. Ik roep gewoon de funktie opnieuw op, en de teller wordt
opnieuw getoond.</p>
Nu, onze teller gaat hier gewoon de inhoud van de tekst file
pagteller.txt tonen. We willen natuurlijk ook dat de teller met
één verhoogd wordt en dat de nieuwe waarde wordt getoond.
Wel, gewoon de functie lesfunktie.php wat aanpassen, zodat dat voor
elkaar komt.
Pas nu op ! Ik ga hier een nieuwe functie aanmaken, namelijk
lesfunktie2.php. Ik doe dit hier enkel en alleen om jullie de
verschillen te tonen. Jullie blijven gewoon jullie lesfunktie.php
gebruiken om tot hetzelfde resultaat te komen. Ik zal echter nu in mijn
webpaginas require("lesfunktie2.php"); moeten opnemen voor ons volgend
voorbeeld. Ik zal dit telkens doen als de functie veranderd. Jullie
moeten echter alles in één file houden. Ik zal ook nog
een pagteller2.txt aanmaken. Zo ga je de kracht zien van de functies.
Code lesfunktie2.php
<?php function teller ($file) { $pointer=fopen("$file","r+"); $teller=fgets($pointer,11);
//we verwijderen de eventuele white
spaces $teller=trim($teller);
############################################# ## Dit hier toevoegen aan je
lesfunktie.php # #############################################
// Nu gaan we onze teller met
één verhogen $teller++;
// We gaan nu onze nieuwe waarde
wegschrijven in onze teller file rewind($pointer); fputs($pointer,$teller);
############################################ ## alles hieronder blijft verder
hetzelfde # ############################################
// en we sluiten onze file netjes af fclose($pointer);
echo "<div
align=\"center\"><table cellpadding=\"0\"
cellspacing=\"0\"><tr>"; // We bepalen hoe lang ons getal is $lengte=strlen($teller);
// We halen nu één voor
één een cijfer uit onze tellerfile // Naargelang de waarde van het getal
tonen we de imagefile // dat verbonden is aan dat getal
We gaan nu onze final_funktie.php aanmaken. Ik wil echter nog een
functie toevoegen. Namelijk de functie essetee(). Die gaat dan gewoon
wat info printen over mezelf. Dit om te tonen hoe alles werkt. De
nieuwe functie gaat dan essetee heten en de code wordt terug opgenomen
tussen de accolades.
Broncode final_funktie.php
<?php function teller($file) { $pointer=fopen("$file","r+"); $teller=fgets($pointer,11);
//we verwijderen de eventuele white
spaces $teller=trim($teller);
#################################### ## Dit hier toevoegen aan je
lesfunktie.php # ####################################
// Nu gaan we onze teller met
één verhogen $teller++;
// We gaan nu onze nieuwe waarde
wegschrijven in onze teller file rewind($pointer); fputs($pointer,$teller);
################################# ## alles hieronder blijft verder
hetzelfde # #################################
// en we sluiten onze file netjes af fclose($pointer);
echo "<div
align=\"center\"><table cellpadding=\"0\"
cellspacing=\"0\"><tr>"; // We bepalen hoe lang ons getal is $lengte=strlen($teller);
// We halen nu één voor
één een cijfer uit onze tellerfile // Naargelang de waarde van het getal
tonen we de imagefile // dat verbonden is aan dat getal
####################################### ## Ik voeg hier gewoon een nieuwe
funktie toe # #######################################
function essetee() {
echo
"<br><br><strong>De auteur van deze cursus is : Serge
Terryn</strong><br>"; echo "<strong>URL : <a
href=\"http://www.essetee.be\">http://www.essetee.be</a></strong><br>"; echo "<strong>MSN : <a
href=\"mailto:essetee@hotmail.com\">essetee@hotmail.com</a></strong><br>"; echo "<strong>ICQ :
763290</strong><br>";
}
?> En we maken nu een nieuwe webpagina
aan pag3.php <?php require("final_funktie.php"); ?> <div
align="center"><h2>Dit is onze pag3.php
pagina</h2></div>
<!-- We gaan nu onze teller funktie
oproepen om onze teller te tonen. -->
<p>De waarde van je teller zou
hier nu moeten staan. Telkens je reload doet moet hij nu met eentje
verhogen :-)</p>
Onthoud
! Steeds het juiste pad vermelden naar de plaats waar je
funktie staat, zoniet ga je errors krijgen voor het aanroepen van een
onbekende funktie.