[PHP] Variabelen worden meteen weer geleegd

Pagina: 1
Acties:
  • 32 views sinds 30-01-2008

  • Intrepidity
  • Registratie: December 2003
  • Laatst online: 24-06-2024
Ik maak voor een vriend een gastenboekscript in PHP, maar kheb een raar probleempje.
Aan het begin van het bestand zet ik wat instellingen in een array:
PHP:
1
2
3
4
5
<?PHP
  $instellingen['dbuser'] = "gebruiker";
  $instellingen['dbpass'] = "wachtwoord";
  $instellingen['dbname'] = "database";
?>


Even later, bij het connecten met de database, probeer ik enkele variabelen weer terug te roepen.

PHP:
1
2
3
4
5
6
<?PHP
function connectdb() {
  mysql_connect("localhost",$instellingen['dbuser'],$instellingen['dbpass']);
  mysql_select_db($instellingen['dbname']) or die("De database die je opgegeven hebt in de instellingen bestaat niet!");
}
?>


Op dat moment bestaan de variabelen volgens PHP niet meer! ook als ik ze probeer te echo'en bestaan ze niet.. Als ik de array wijzig naar variabelen als $dbuser e.d. zijn ze ook niet geset... alle variabelen worden dus meteen vergeten!
Ik heb gehoord dat de instelling register_globals in php.ini er nog wel eens mee te maken zou kunnen hebben, die heb ik op true en false getest, zonder resultaat (ik neem aan dat het true zou moeten wezen?)
Ik heb het op 3 verschillende hosts geprobeerd, en allemaal maken ze dezelfde fout..

  • Kuhlie
  • Registratie: December 2002
  • Niet online
Omdat ze in de functie niet beschikbaar zijn, lees in de php-help eens iets over variabelen, om precies te zijn over 'scope'.

[ Voor 18% gewijzigd door Kuhlie op 17-08-2004 21:26 . Reden: woord 'scope' toegevoegd ]


Verwijderd

dat komt omdat je in een functie zit te werken, daar heb je alleen de variablen die daar gezet zijn (en natuurlijk de super globals + argument van de functie)

PHP:
1
2
3
4
5
6
7
<?PHP
function connectdb() {
  global $instellingen;
  mysql_connect("localhost",$instellingen['dbuser'],$instellingen['dbpass']);
  mysql_select_db($instellingen['dbname']) or die("De database die je opgegeven hebt in de instellingen bestaat niet!");
}
?> 


dan zal het wel werken

  • Intrepidity
  • Registratie: December 2003
  • Laatst online: 24-06-2024
Juistem, weer wat geleerd :)
Dat was inderdaad de correcte oplossing
GoT gaat door voor de koelkast, bedankt :>

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Mja, voortaan even de manual openslaan he

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Dit topic is gesloten.