login  Naam:   Wachtwoord: 
Registreer je!
 Tutorials

Tutorials > PHP


Gegevens:
Geschreven door:
twopeak
Moeilijkheidsgraad:
Gemakkelijk
Hits:
14438
Punten:
Aantal punten:
 (2.14)
Aantal stemmen:
7
Stem:
Niet ingelogd
Nota's:
 Lees de nota's (4)
 


Tutorial:

Debugging

Er zit een fout in mijn script; wat nu?
Ga je fouten niet direct op fora gaan stellen, je zult er amper wijzer van worden.
Vergeet niet dat de computer altijd gelijk heeft en ga dus zelf op zoek naar welke verkeerde opdracht je de computer vroeg.

1. php fouten
2. mysql fouten
3. hulp vragen op sitemasters


1. PHP fouten
1.1 je krijgt een foutmelding op het scherm
Dit zijn de meest voorkomende errors:
  • Error
    Fout tijdens het uitvoeren van het script. De executie van het script moet gestopt worden.
  • Warning
    Een fout tijdens het uitvoeren van het script. De fout is niet zo erg dat het script gestopt moet worden
  • Parsing Error
    Een compilatie-fout. Dit komt voor wanneer je een verkeerde syntax gebruikt. Het script kan niet begonnen worden
  • Notice
    De meeste servers tonen deze errors niet, dit zijn gewoon opmerkingen, die op een fout kunnen duiden; maar ook niet!

op http://be2.php.net/manual/en/ref.errorfunc.php (table 2) kun je alle soorten errors en een korte omschrijving vinden.

PHP zal je zeggen in welk bestand en op welke lijn deze fout voorkwam.
Vaak kan php dit niet precies zeggen, maar moet je de 5 lijnen ervoor en erna bekijken om zo de fout te vinden.

1.2 je krijgt geen foutmelding op het scherm
Hiermee bedoel ik dat je een volledig wit scherm krijgt.
Je kunt dan bovenaan in je script

error_reporting(E_ALL);
schrijven. Dit zorgt ervoor dat ALLE fouten en meldingen op het scherm afgedrukt zullen worden. Indien je nu plots wel fouten ziet, betekend dit dat je je php configuratie moet veranderen.

Indien dit niets helpt, controleer dan even of je wel iets afdrukt op het scherm. zet bovenaan

echo "testzin";
en doe hetzelfde onderaan nog eens. Als je dan plots wel de twee zinnen ziet, dan weet je dat je script niets naar het scherm uitvoert; maar enkel code op de server uitvoerd.

Als je wilt controleren of een functie wel een resultaat geeft kan je altijd iets dergelijks doen:

<?
$waarde
= NULL; //maak een lege var
$uitvoer=trim($waarde) or die("Trim werkte niet");
?>
Trim is geen perfecte functie hiervoor; maar wanneer de functie een negatief resultaat teruggeeft (NULL of -1) (niet een numeriek negatief getal) zal de executie van het script stoppen en de foutmelding geven.
Voor je definitieve website zou je beter dergelijke dingen niet doen en voor een degelijke foutopvang moeten zorgen!

1.3 je krijgt niet het verwachte resultaat
Probeer regelmatig eens wat informatie af te drukken, zodat je exact kunt zien waar het foutgaat.
Heel handig hierbij is je arrays integraal af te drukken:

echo "<pre>";print_r($array);echo "</pre>";
de <pre> gebruik je om het goed leesbaar te maken; de print_r() om de hele array af te drukken

Maak een testpagina en zet maak opnieuw waarmee je bezig was. Het feit dat je al je opmaakcode of andere niet ziet zal je duidelijker laten denken.

1.4 Frequente fouten
Even kort fouten die vaak voorkomen; sommigen daaronder hebben veel mensen al uuuuuuren op een scherm doen staren om dan te bemerken dat het domweg een spatie ofzo was.

} vergeten
Wanneer je in een controlestructuur (while, if, switch, ...) een eindaccolade vergeet, dan zal je een error krijgen bij de allerlaatste accolade van je hele script, of als erna geen accolades meer komen op de laatste lijn van je script. Door je tekst te laten inspringen, kun je heel snel zien waar een accolade mankeert. (zie tut over netjes programeren).

; vergeten of een : getypt
Je moet het maar zien, het verschilt maar op shift te drukken, maar het verschil is bijna onzichtbaar!

" en ' mixen
Van tijd tot tijd komen we dit nog tegen, mensen die een string met een dubbel aanhalingsteken beginnen en met een enkel eindigen. Dit werkt niet!
Onthoud ook dat binnen dubbele aanhalingstekens variabelen geparsed worden (door php begrepen) maar binnen enkele aanhalingstekens zullen ze als letterlijke tekst aanzien worden.
Er zijn nog een paar karakters die binnen dubbele aanhalingstekens niet de letterlijke waarde zullen krijgen van wat je typte (zie tut over variabelen).

Headers allready sent
Dit betekend dat je al een karakterteken hebt laten afdrukken. Meestal zegt php je in de error op welke lijn en in welk bestand er al iets staat. Bij functies als header of cookie of andere mag er NIETS uitgevoerd worden, dit betekent dat je dus voor je <? geen spatie of een enter mag zetten.

typfouten in variabelenamen
Doordat je in php geen variabelen moet declareren, zal hij elke geldige string als variabele aanvaarden, en indien deze nooit eerder gebruikt werd, zal hij als leeg (NULL) aanzien worden.
Dus als je een schrijffout in een variabelenaam maakt, dan maak je in feite een nieuwe variabele in plaats van je 'oude' variabele te gebruiken.

> en < verwisselen
Jah, daarmee moet je wat opletten, het kan gebeuren, hoewel dat meer een logica fout is dan een onnoplettendheidsfout.

fouten in array
Vaak maakt men fouten in subarrays, vb iets opvragen met $array[subarray] of $array['$i'].
Vergeet ook niet dat programeertalen bij 0 beginnen te tellen en niet bij 1! (zie tut over variabelen)

 top


2MySQL fouten
Vaak heb je een fout in je php code die veroorzaakt wordt door een verkeerde sql query.
Voor je een vraag gaat stellen; probeer dan eventjes je query in PHPMyAdmin (of dergelijke) om te zien of je wel de verwachte resultaten krijgt.
Krijg je geen resultaten of verkeerde resultaten, dan weet je dat de fout niet aan je script zit maar aan je query.
Blijf dan in je admin zoeken tot je de fout vindt en een juiste query kunt opstellen en gebruik die zeker juiste query dan in je script.
Zit je fout in je Query?
PhpMyAdmin geeft je wat info over waar je fout zou kunnen zitten;
kijk eens wat hij zegt:
  • zitten je aanhalingstekens overal juist (gebruik voor SQL altijd enkele aanhalingstekens)
  • heb je geen kommas teveel of te weinig
  • zijn je haakjes consequent gesloten
  • is je query duidelijk geschreven (hoofd- en kleine letters)

Gebruik je een mysql functie in je query?
Ga even op http://dev.mysql.com/doc/mysql/en/index.html en controleer of je de juiste parameters gebruikte in de juiste volgorde etc.

 top


3. Hulp vragen
Hiervoor heb je de forumregels, maar ik wil de belangrijkste dingen even herhalen.
Sitemasters is een gratis dienst, en diegenen die antwoorden geven doen dit ook gratis.
Toch hebben zij vaak andere dingen te doen.
  • Gebruik een passende titel.
  • Let op je taal.
  • Let op leestekens en andere die het lezen vergemakkelijken.
  • Herlees je post, en vraag je af of het begrijpbaar is.
  • Probeer moeite te doen met de reacties (niet "jamaar ik weet niet hoe ik die code moet invoeren" maar probeer!)
  • Toon interesse in je probleem, hoeveel moeite je ook doet, soms is het niet begrijpelijk. Kom dan zo snel mogelijk toelichten wat je vraagt.
  • Verwittig als het probleem opgelost is.

but once again: READ THE FORUMRULES als je ze niet volgt, moet je niet verbaasd zijn dat je geen antwoord krijgt.

 top



« Vorige tutorial : Variabelen en veiligheid Volgende tutorial : Arrays Basics »

© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.014s