[PHP]Variable werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Rommel
  • Registratie: Maart 2002
  • Laatst online: 16:32
Ik zit al een tijdje te stoeien met php met een bestaande loginscript en ben tegen een vaag probleem aangelopen, ik ben bezig om een "multilanguage" website te maken, dat doe ik dmv een english.inc.php bestand, dat ziet er ongeveer als volgt uit:

PHP:
1
2
3
4
5
$lang = Array (
'empty_uname'  => 'Username not entered',
'empty_pass'  => 'Password not entered',
'wrong_pass'  => 'Wrong password'
);


In het bestaande script (session.php) wat ik gebruik staat het als volgt:
PHP:
1
2
3
if(!$subpass){
$form->setError($field, "Password not entered");
}


Dus nu lijkt mij dat de oplossing als volgt is:
PHP:
1
2
3
if(!$subpass){
$form->setError($field, $lang['empty_pass']);
}

Maar dit werkt niet en krijg ik een lege waarde :?

Het taalbestand word geinclude in het index.php bestand voor sessions.php, dat lijkt mij in orde. Ik heb ook voor andere oplossingen gezocht bijv:
PHP:
1
define("empty_pass", "Password not entered");


En dit werkt wel gewoon goed, kan iemand me misschien verder helpen waar dit aan zou kunnen liggen?

Everything that has a beginning has a end


Acties:
  • 0 Henk 'm!

  • Piels
  • Registratie: Maart 2001
  • Laatst online: 25-08 15:44
Weet je zeker dat de waardes goed in je array worden opgeslagen?

Probeer het anders even als volgt:

PHP:
1
2
3
4
5
6
Array
(
    [1] => 'January'
    [2] => 'February'
    [3] => 'March'
)

[ Voor 16% gewijzigd door Piels op 07-12-2006 13:44 ]

Windows Phone Apps: Belstatus, Pinautomaten


Acties:
  • 0 Henk 'm!

  • Morax
  • Registratie: Mei 2002
  • Laatst online: 20:32
Doe een een print_r($lang) voordat je die check doet op subpass. Dan kan je zien of je hem misschien per ongeluk ergens overschreven hebt, of dat die variabele niet beschikbaar is in de scope van die check :)
Piels schreef op donderdag 07 december 2006 @ 13:43:
Weet je zeker dat de waardes goed in je array worden opgeslagen?

Probeer het anders even als volgt:

PHP:
1
2
3
4
5
6
Array
(
    [1] => 'January'
    [2] => 'February'
    [3] => 'March'
)
Nee hoor, zijn methode werkt perfect om een array aan te maken met zelf gekozen keys en bijbehorden waardes :)

[ Voor 51% gewijzigd door Morax op 07-12-2006 13:45 ]

What do you mean I have no life? I am a gamer, I got millions!


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Roep je in een bepaalde class je $form->setError($field, $lang['empty_pass']) aan? Het klinkt namelijk als een scope-probleempje: oplossen door
PHP:
1
global $lang;
voor die regel te zetten als $lang in je global scope zit :)

Anders de juiste class aanspreken voor de variabele.
Piels schreef op donderdag 07 december 2006 @ 13:43:
Weet je zeker dat de waardes goed in je array worden opgeslagen?

Probeer het anders even als volgt:
Dat heet een associative array ;)

[ Voor 53% gewijzigd door mithras op 07-12-2006 13:48 ]


Acties:
  • 0 Henk 'm!

  • Rommel
  • Registratie: Maart 2002
  • Laatst online: 16:32
De waardes worden worden goed in de array opgeslagen, zoals ook in de andere reacties word gezegd.

global $lang; was inderdaad de oplossing, maar het werkt alleen als ik de language bestand ook include in session.php, het werkt niet zodra ik hem alleen include met index.php.

Maargoed, het werkt, bedankt :)

Everything that has a beginning has a end


Acties:
  • 0 Henk 'm!

Verwijderd

Als je include, kan je het bestand waarin je het include inderdaad (onder de include welliswaar) de variablen gebruiken. Als je een variable in je ge'include bestand uit het andere bestand wil halen, moet je inderdaad een global gebruiken. :)

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
erwinrom schreef op donderdag 07 december 2006 @ 18:17:
De waardes worden worden goed in de array opgeslagen, zoals ook in de andere reacties word gezegd.

global $lang; was inderdaad de oplossing, maar het werkt alleen als ik de language bestand ook include in session.php, het werkt niet zodra ik hem alleen include met index.php.

Maargoed, het werkt, bedankt :)
Probeer ook eens "global $lang;" te zetten in het bestand waar je language array staat gedefinieerd.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Global roept echter ook weer problemen op :) . Mooier zou zijn om die language variabele daadwerkelijk mee te geven aan de functie, of om er een constante van te maken. Zie ook JHS in "[PHP] variabele aanroepen in een functie..." en vooral ook de reactie van * Michali daarna.

DM!

Pagina: 1