errors weergeven - graag wat suggesties ..

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Donster

Donster

21/08/2006 13:05:00
Quote Anchor link
Ik wil het volgende :

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?
 
PHP hulp

PHP hulp

23/04/2024 09:00:47
 
Rob

Rob

21/08/2006 13:08:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysql_query("je query") or die (mysql_error());

of:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
$query=mysql_query("je query");
if (!$query) {
echo "Mislukt!";
mysql_error()
die
}
 
Donster

Donster

21/08/2006 13:13:00
Quote Anchor link
Ik bedoel dat ik een functie maak in een ander bestand die errors weergeeft.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
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
 
- wes  -

- wes -

21/08/2006 13:21:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
}

?>


errors.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?

$error
[1] = 'Geen resultaten gevonden';
$error[2] = 'De koek is op';
$error[3] = 'De koe is gemolken';

function
logerror($nummer)
{

  if (isset($nummer) && !empty($nummer))
  {

    echo $error[$nummer];
  }
else {
    echo 'Er is een onbekende fout opgetreden';
  }
}

?>


zoiets?
Gewijzigd op 01/01/1970 01:00:00 door - wes -
 
Eric Cartman

Eric Cartman

21/08/2006 13:24:00
Quote Anchor link
Als je PHP5 tot je beschikking hebt, kun je mooi met try-catch, throw en exception werken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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();
}


?>


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
 
Roy Bongers

Roy Bongers

21/08/2006 13:38:00
Quote Anchor link
Als je slim bent maak je dan een apparte SQLException. Tevens kun je je error nr beter via de parameter meegeven zoals die er ook voor is. Als ik me niet vergis:

new Exception (string error_message, int error_code);
 
Eric Cartman

Eric Cartman

21/08/2006 13:42:00
Quote Anchor link
Klopt, maar ik wilde het niet te ingewikkeld maken ;c)
 
Donster

Donster

21/08/2006 14:38:00
Quote Anchor link
Als ik het zoals wes doe , dan krijg ik onder mijn eigen error bericht toch alsnog een standaart php error bericht !?
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
 
Eric Cartman

Eric Cartman

21/08/2006 15:08:00
Quote Anchor link
Een slechte, maar werkende manier is een @ voor de expressie zetten die je wilt onderdrukken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
}

?>


Waar je geen eigen foutafhandeling hebt, haal je dan gewoon het apenstaartje weg. . .

Of je doet het zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);

?>


Maar ik denk dat je toch echt veel en veel meer aan try-catch hebt. Het is simpel en een stuk uitgebreider. . .
 
Donster

Donster

21/08/2006 15:14:00
Quote Anchor link
heb geen php 5 tot mijn beschikking , en een @ is niet echt een nette oplossing denk ik (:

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
 
Eric Cartman

Eric Cartman

21/08/2006 15:35:00
Quote Anchor link
Dat is jammer. . . Dan zit je toch echt aan óf de error_reporting vast, of het apenstaartje. . .

Of kijk eens naar trigger_error, misschien dat die ook fouten kan onderdrukken (?). Ik werk er nooit mee :c)
 
Bo az

Bo az

21/08/2006 15:56:00
Quote Anchor link
@ gebruik ik wel, maar als ik het gebruik, genereer ik wel een eigen foutmelding om te weten of de bewerking succesvol was.
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
 
Eric Cartman

Eric Cartman

21/08/2006 17:50:00
Quote Anchor link
Dat maakt toch niets uit? Als er iets fout is gegaan, geeft mysql_query gewoon false terug... Het is in principe hetzelfde. . .

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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) )


?>


Edit: Typo(s) :c)
Gewijzigd op 01/01/1970 01:00:00 door Eric Cartman
 
Bo az

Bo az

21/08/2006 19:38:00
Quote Anchor link
Jip, je hebt gelijk, ik het weer eens niet vergenoeg door gelezen. :P
 
Niek s

niek s

21/08/2006 19:42:00
Quote Anchor link
waarom niet zo?:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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));
?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.