login  Naam:   Wachtwoord: 
Registreer je!
 Forum

fout afhandeling

Offline cloudstrife - 29/06/2005 16:46
Avatar van cloudstrifePHP beginner Weet iemand hoe je een foutafhandeling kan maken via php zodat wanneer er bv geen connectie kan worden gemaakt er een boodschap komt "Kan niet connecteren met de database"? Ik bedoel hier mee dan niet de "or die()" want ik wil zelf de foutboodschap typen en in de pagina weergeven, met die "die()" stopt hij met het script te doorlopen en ik wil dat er een opmaak wordt gegeven met de foutboodschap in.

10 antwoorden

Gesponsorde links
Offline leendert - 29/06/2005 17:10
Avatar van leendert HTML beginner
  1. <?php
  2. $sQuery = "SELECT * FROM tabel WHERE iets = iets";
  3. if (!$rQuery = mysql_query ( $sQuery ) )
  4. {
  5. echo "foutje met de datbase";
  6. }
  7. else
  8. {
  9. // hier de rest van je script
  10. }
  11. ?>


zoiets?
Offline Legolas - 29/06/2005 17:39
Avatar van Legolas Onbekend Ik denk eerder direct bij connecteren:
  1. <?
  2. if(!$con = mysql_connect("localhost","user","pass"))
  3. {
  4. echo "Kon niet connecteren naar de DB";
  5. }
  6. else
  7. {
  8. // opmaak
  9. }
  10. ?>
Offline nemesiskoen - 29/06/2005 20:07 (laatste wijziging 29/06/2005 20:07)
Avatar van nemesiskoen Gouden medaille

PHP expert
legolas... volgens mij geeft dat een error
http://nemesisfantasies.com/test.php

je moet de output opvangen (ob_start()?)

  1. <?php
  2. $fout = array();
  3. $fout[] = 0;
  4. $fout[] = 0;
  5.  
  6. if( !MySQL_connect(*,*,*) ) {
  7. $fout[0] = 1;
  8. }
  9. elseif( !MySQL_select_db(*) ) {
  10. $fout[1] = 1;
  11. }
  12.  
  13. if( in_array(1, $fout) ) {
  14. //fout weergeven, nog gaan controleren WAAR de fout zat
  15. }
  16.  
  17.  
  18. ?>
Offline Legolas - 29/06/2005 20:08
Avatar van Legolas Onbekend
Citaat:
legolas... volgens mij geeft dat een error

uhh... ja sry, maar als je er een @ voor plakt niet meer:)
Offline BonMarche - 29/06/2005 20:12
Avatar van BonMarche PHP beginner
Citaat:
uhh... ja sry, maar als je er een @ voor plakt niet meer
maar dan weet je dus niet wat de fout was.

met output buffering kun je die wel opvangen. nemesiskoen doet een beetje omslachtig met array en hij wist de inhoud van de buffer voordat hij de data flusht, maar hij is op de goede weg.
Offline nemesiskoen - 29/06/2005 20:16 (laatste wijziging 29/06/2005 20:19)
Avatar van nemesiskoen Gouden medaille

PHP expert
tja, ik weet dat het dom lijkt met die array, maar als ik het niet zo doe gaan mensen zagen
want dan ziet het er ong zo uit:

  1. $fout1 = 0;
  2. $fout2 = 0;
  3.  
  4. //als fout
  5. $fout1 = 1;
  6. //anders, als fout
  7. $fout2 = 1;
  8.  
  9. //als fout1 = 1 of fout2 = 1:
  10. //output wissen en error geven


En dat is nu eig 2 variabelen die ik gebruik die hetzelfde noemen op de 1 en 2 na dan en hetzelfde nut hebben. Vandaar dat ik het zo doe.

Het mooiste zou natuurlijk zijn met exceptions werken. Dus de output opvangen en exceptions gooien. Maar zoals ik het doe werkt het (denk ik) perfect.
Offline BonMarche - 29/06/2005 20:40
Avatar van BonMarche PHP beginner hmm tsjah als je wilt eerst nog allemaal dingen wilt doen zonder database verbinding voordat je de melding geeft kan dat. maar waarom zou je ook proberen een database te selecteren als je geen verbinding hebt?? dan zou ik dus ook meteen de error printen.
Offline nemesiskoen - 30/06/2005 12:34 (laatste wijziging 30/06/2005 12:34)
Avatar van nemesiskoen Gouden medaille

PHP expert
Dat doe ik toch ook niet.
  1. Ik ga kijken of ik kan verbinden:
  2. - zoneen: $fout1 = 1, output wissen
  3. - zoja: proberen database te selecteren, lukt het:
  4. - zoneen: $fout2 = 1, output wissen
  5. - zoja: verder gaan
Offline rutgerp - 30/06/2005 14:08 (laatste wijziging 30/06/2005 14:11)
Avatar van rutgerp HTML interesse Ik ebn een N00b maar kan je het niet gewoon zo doen:

  1. <?
  2. $con = mysql_connect("localhost","user","pass") or $fout = mysql_error();
  3. ?>


je kan ook dit doen:
  1. <?
  2. $fout = '0';
  3. $con = mysql_connect("localhost","user","pass") or $fout = '1';
  4. ?>


Of bedoelde jij dit niet:?:

EDIT
JE kan later een if-juh plaatsen van of de connectie is mislkukt bij de eerste code.
Bij de 2e code kan je gewoon
  1. <? if($fout == '1') {
  2. echo 'FoUtJuH';
  3. } ?>
Offline nemesiskoen - 30/06/2005 14:30
Avatar van nemesiskoen Gouden medaille

PHP expert
of je kan je constructie eens uitproberen en zien dat hij automatisch een fout geeft en vervolgens $fout gelijk stelt aan 1 (geen quotes rond integers btway, extra geheugenruimte:)).

Ik gebruik ob_start() en ob_end_clean() om de output (error) weg te gooien en mijn eigen error te geven.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.253s