errors weergeven - graag wat suggesties ..
Stel een query mislukt , dan wil ik ipv een error te echo'en een errorcode doorgeven aan een functie , die vervolgens een mooie foutmelding op het scherm moet toveren.
Fluitje van een euro dus.
Vraagje:
1. Hoe zorg ik dat php zelf geen error weergeeft , zonder daarbij alles uiteschakelen.
Meeste error functies die nemen de hele foutmelding over , ik wil aleen dat de standaart error messages worden uitgeschakeld voor de regel/query waar ik het wil.
Dus een query mislukt , en hij geeft mijn error weer en niet de php standaart error , maar als ik geen error message opgeef , dan moet hij wel weer de standaart errors weergeven.
2. Hebben jullie verder nog suggesties? - - mischien zie ik iets over het hoofd?
of:
Code (php)
1
2
3
4
5
2
3
4
5
<?
if (!$sQuery = mysql_query('SELECT fruit FROM winkel'))
{
// functie aanroepen en een errorcode meegeven
?>
if (!$sQuery = mysql_query('SELECT fruit FROM winkel'))
{
// functie aanroepen en een errorcode meegeven
?>
De functie in ander bestand pakt de errorcode en geeft juiste error weer.
vraag is dus: Hoe schakel ik de standaart php error berichten uit voor de betreffende lijn. ( dus niet helemaal)
Gewijzigd op 01/01/1970 01:00:00 door Donster
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?
include('errors.php');
$sql = 'SELECT * FROM tabel';
$res = mysql_query($sql,$link);
if (!$res || mysql_num_rows($res) == 0)
{
logerror(1);
} else {
//rest
}
?>
include('errors.php');
$sql = 'SELECT * FROM tabel';
$res = mysql_query($sql,$link);
if (!$res || mysql_num_rows($res) == 0)
{
logerror(1);
} else {
//rest
}
?>
errors.php
Code (php)
zoiets?
Gewijzigd op 01/01/1970 01:00:00 door - wes -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
try {
$query = "SELECT fruit FROM winkel";
if (mysql_query($query) == false) {
throw new Exception(mysql_errno. ': ' .mysql_error)
}
while ( (...) ) {
(...)
}
}
catch (Exception $fout) {
echo $fout->getMessage();
}
?>
try {
$query = "SELECT fruit FROM winkel";
if (mysql_query($query) == false) {
throw new Exception(mysql_errno. ': ' .mysql_error)
}
while ( (...) ) {
(...)
}
}
catch (Exception $fout) {
echo $fout->getMessage();
}
?>
Met try probeer je iets te doen, bijvoorbeeld het uitvoeren van een query. In het try-blok staat een if om te kijken of de query false is. Als die query echt false is, gooit het sleutelwoord throw een Exception (een object voor foutafhandeling) een fout weg. Het catch-blok vangt de weggegooide fout van trowh new Exception(...); op en weergeeft de fout middels de methode getMessage.
Er zijn nog vele meer dingen mogelijk met try-catch, maar dit is toch wel de basis.
Voor meer informatie moet je maar gewoon even op php.net kijken
Edit: Typo :c)
Gewijzigd op 01/01/1970 01:00:00 door Eric Cartman
new Exception (string error_message, int error_code);
Klopt, maar ik wilde het niet te ingewikkeld maken ;c)
Hoe schakel je die dan uit?
( wil hem niet helemaal uit hebben , maar aleen voor de stukken waar ik eigen errorcodes heb)
Gewijzigd op 01/01/1970 01:00:00 door Donster
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?
include('errors.php');
$sql = 'SELECT * FROM tabel';
$res = @mysql_query($sql,$link);
if (!$res || mysql_num_rows($res) == 0)
{
logerror(1);
} else {
//rest
}
?>
include('errors.php');
$sql = 'SELECT * FROM tabel';
$res = @mysql_query($sql,$link);
if (!$res || mysql_num_rows($res) == 0)
{
logerror(1);
} else {
//rest
}
?>
Waar je geen eigen foutafhandeling hebt, haal je dan gewoon het apenstaartje weg. . .
Of je doet het zo:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
include('errors.php');
$sql = 'SELECT * FROM tabel';
$res = mysql_query($sql,$link);
error_reporting(0);
if (!$res || mysql_num_rows($res) == 0)
{
logerror(1);
} else {
//rest
}
error_reporting(E_ALL | E_STRICT);
?>
include('errors.php');
$sql = 'SELECT * FROM tabel';
$res = mysql_query($sql,$link);
error_reporting(0);
if (!$res || mysql_num_rows($res) == 0)
{
logerror(1);
} else {
//rest
}
error_reporting(E_ALL | E_STRICT);
?>
Maar ik denk dat je toch echt veel en veel meer aan try-catch hebt. Het is simpel en een stuk uitgebreider. . .
Op een ander php forum ( makkelijk te raden :p) , heb ik een paar x gezien dat mensen verrot gescholden werden omdat ze @ gebruikte :D
Daaruit kon ik concluderen dat je het beter niet kan gebruiken LOL
Of kijk eens naar trigger_error, misschien dat die ook fouten kan onderdrukken (?). Ik werk er nooit mee :c)
Edit:
Ik ben hier mee gegonnen omdat anders mijn Exceptions in de soep liepen.
@Rob, jij geeft:
$query=mysql_query("je query");
if (!$query)
Aangezien de functie mysql_query() een resource terug geeft zou je dit eigenlijk zo moeten doen:
$query=mysql_query("je query");
if (!is_resource($query))
Gewijzigd op 01/01/1970 01:00:00 door Bo az
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
// Maar een combinatie is ook mogelijk :cP
if (mysql_query($query) === false && is_resource(mysql_query($query)) === false) {
(...)
}
// (=== vergelijkt ook de types (dus het kan hier
// gelezen worden als "false == false && is_bool(false)
// == true" :c) )
?>
// Maar een combinatie is ook mogelijk :cP
if (mysql_query($query) === false && is_resource(mysql_query($query)) === false) {
(...)
}
// (=== vergelijkt ook de types (dus het kan hier
// gelezen worden als "false == false && is_bool(false)
// == true" :c) )
?>
Edit: Typo(s) :c)
Gewijzigd op 01/01/1970 01:00:00 door Eric Cartman
Jip, je hebt gelijk, ik het weer eens niet vergenoeg door gelezen. :P
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
function je_functie($errorno) {
//blablabla doe wat met je nummer
}
mysql_query("SELECT poeperd FROM je_tabelletje") or die(je_functie(nummer));
?>
function je_functie($errorno) {
//blablabla doe wat met je nummer
}
mysql_query("SELECT poeperd FROM je_tabelletje") or die(je_functie(nummer));
?>