[PHP] function die niet werkt (array probleem denk ik)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben een error handler aant maken voor men forum, nu had ik dit al:


function.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php

function do_error ($error) {

global $error;
global $error_reporting;


$error_reporting = array();

$error_reporting[0] = "Blijkbaar bevindt zich niets in het databeest!";
$error_reporting[1] = "Je wachtwoorden stemmen niet overeen!";
$error_reporting[2] = "blaat";
$error_reporting[3] = "Er zijn geen posts in dit forum. Klik op de <b>New Topic</b> link om een topic te posten.";
$error_reporting[4] = "Dit forum bestaat niet!";
$error_reporting[5] = "Dit topic bestaat niet!";
$error_reporting[6] = "Je kan je niet 2x registreren!";
$error_reporting[7] = "Sorry, maar deze gebruikersnaam is reeds in gebruik! Ga terug en probeer opnieuw.";
$error_reporting[8] = "Vul alle verplichte velden met een * in! Ga terug en probeer opnieuw.";
$error_reporting[9] = "Je wachtwoorden stemmen niet overeen! Ga terug en probeer opnieuw.";
$error_reporting[10] = "Je bent succesvol geregistreerd! Klik <a href=\"log.php?log=in\">hier</a> om je inteloggen.";
$error_reporting[11] = "Je hebt blijkbaar iets fout of vergeten in te vullen. Ga terug en probeer opnieuw";
$error_reporting[12] = "Je onderschrift is een beetje te lang! Het mag maximaal uit 15 letters bestaan.<br /> Ga terug en probeer opnieuw.";
$error_reporting[13] = "Nog geen data!";
$error_reporting[14] = "Deze gebruiker bestaat niet!";
$error_reporting[15] = "Sorry, maar je mag niet dubbelposten!";
$error_reporting[25] = "blaat";

 if (!empty($error_reporting[$error])) {
  return $error_reporting[$error];
 }
 else {
  return "Error tekst nog niet vastgelegd.";
 }


}

?>


en dan om de functie aan te roepen:

PHP:
1
2
3
4
5
6
7
8
<?php

include("includes/functions.php");

echo do_error(25);


?>



Hij zegt dus telkens dat $error_reporting leeg is, ook als ik hem heb gedefinieerd!
Ik krijg dus dit dan: Error tekst nog niet vastgelegd.

Kan iemand me helpen?

Mvg

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

$error_reporting moet bestaan voordat je die functie aanroept, anders heeft het global maken geen nut

daarnaast waarom wil je die global hebben?

Acties:
  • 0 Henk 'm!

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 02-09 17:28

Rashann

Zoek de hond...

Hij moet alleen niet $error opnieuw aanmaken met 'global $error', want dan is ie weer leeg...

het probleem heeft dus niks met $error_reporting te maken! zie hier en het werkende bestand

[ Voor 124% gewijzigd door Rashann op 28-05-2003 18:50 . Reden: domme onzin :) + linkjes ]

If nothing is written below, I was the last to reply...


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hmm.. $error_reporting bestaat niet voor hij global wordt...
dat zal het probleem dan zijn denk ik.

Mag je dan nooit een var global maken vooraleer die niet bestaat?

Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Zowel global $error als de global $error_reporting zijn volkomen zinloos.

Wanneer je $error als argument meegeeft aan de functie heeft het geen zin om deze ook nog eens global te definieren.

Acties:
  • 0 Henk 'm!

  • twiekert
  • Registratie: Februari 2001
  • Laatst online: 30-08 11:55
Verwijderd schreef op 28 mei 2003 @ 18:46:
Hmm.. $error_reporting bestaat niet voor hij global wordt...
dat zal het probleem dan zijn denk ik.

Mag je dan nooit een var global maken vooraleer die niet bestaat?
nee, dan valt er niet zoveel global te maken.

zoals hierboven al gepost is, global is nutteloos in jouw functie omdat de array in de functie gedefineerd wordt.

variabelen die je in een functie definieerd zijn hierbuiten niet leesbaar, andersom geldt dat ook, behalve dat je dan met global de array leesbaar kan maken in de functie.

dus:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$error_reporting[0] = "Blijkbaar bevindt zich niets in het databeest!"; 
$error_reporting[1] = "Je wachtwoorden stemmen niet overeen!"; 

function do_error($errcode) {
  global $error_reporting;

  if (array_key_exists($errcode, $error_reporting)) {
    return $error_reporting[$errcode];
  } 
   else {
     return "Error code onbekend";
   }

  

}


maakt juist gebruik van de global functie.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

twiekert schreef op 28 mei 2003 @ 19:52:
maakt juist gebruik van de global functie.
mja, ik zou hem juist niet gebruiken, er komt vaak alleen maar onduidelijkheid van, en bovendien heb je hem eigenlijk nooit echt nodig ;)
Vaak is het op een andere manier makkelijker op te lossen dan met global

Acties:
  • 0 Henk 'm!

  • twiekert
  • Registratie: Februari 2001
  • Laatst online: 30-08 11:55
Erkens schreef op 28 May 2003 @ 20:05:
[...]

mja, ik zou hem juist niet gebruiken, er komt vaak alleen maar onduidelijkheid van, en bovendien heb je hem eigenlijk nooit echt nodig ;)
Vaak is het op een andere manier makkelijker op te lossen dan met global
ok je hebt gelijk, alhoewel ik moet toegeven dat ik global ook wel is gebruik.

laten we het erop houden dat de code syntax correct is, of het een goeie aanpak is valt nog over te twisten :P
Pagina: 1