Include/Require en cascade et acces aux variables

Include/Require en cascade et acces aux variables - PHP - Programmation

Marsh Posté le 20-10-2005 à 19:50:03    

Bonsoir,
 
j'ai un petit soucis qui doit etre "classique" ...
 
j'essaye de structuré un peu mes fichiers de conf/lib .. mais lorsque j'essayer d'acceder a certaines variables definie dans ces includes il me dit qu'elles ne sont pas declarées...
 
J'ai donc :
/index.php  

Code :
  1. <?
  2. require('inc/conf.inc.php');
  3. $db = db_open();
  4. ?>


 
/inc/conf.inc.php

Code :
  1. <?
  2. $sql_host = ..;
  3. $sql_pass = ..;
  4. require('lib/sql.lib.php');
  5. ?>


 
/inc/lib/sql.lib.php

Code :
  1. <?
  2. function db_open()
  3. {
  4. $db = mysql_connect( $sql_host, $sql_user, $sql_pass) ; //initialisation de la connection
  5. if (! $db)
  6. { die("connexion Serveur SQL Impossible !" ); }
  7. else
  8. {
  9.  mysql_select_db( $sql_database,$db); //sélection de la base de données
  10. }
  11. return $db;
  12. }
  13. ?>


 
lorsque j'execute l'index.php il me dit ne pas connaitre $sql_host etc...
 
je dois passer a coté d'un principe du php sur les varibles et les includes... :/
si quelqu'un pouvait m'eclairer .. ca m'aiderais vraiment !
 
merci d'avance
folk


Message édité par folkN2 le 20-10-2005 à 19:50:57
Reply

Marsh Posté le 20-10-2005 à 19:50:03   

Reply

Marsh Posté le 20-10-2005 à 20:07:34    

Une fonction ne peut pas accéder à des variables globales "directement". Il faut utiliser $GLOBALS ou déclarer la variable en début de fonction par

Code :
  1. global $sql_host, $sql_pass;

.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 20-10-2005 à 22:15:55    

en fait , je me suis (tres?) mal exprimé ...
 
J'aurais voulu savoir s'il n'existait pas d'autres methodes que les deux que tu enonces ... et que j'ai deja utilisée auparavant mais qui me paraissent un peu "lourde" a l'utilisation :/
 
mais si ce sont les seuls et uniques solutions , alors soit!
 
 
PS: la hierarchie des scripts/includes/lib est-elle cohérente d'apres vous?

Reply

Marsh Posté le 21-10-2005 à 09:31:15    

A priori il n'y a pas d'autre solution.
 
Pour la hiérarchie, je suis pas un spécialiste mais ça me paraît classique et correct en tout cas.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 21-10-2005 à 09:48:25    

folkN2 a écrit :

en fait , je me suis (tres?) mal exprimé ...
(...)
PS: la hierarchie des scripts/includes/lib est-elle cohérente d'apres vous?


oui, c'est sûr, pour ce qui est de la hierarchie y'a pas vraiment d'autres solutions.
Néanmoins, pour l'exemple précis $sql_login, $sql_pass tu peux en faire des constantes, vu que je ne pense pas que ces variables changeront souvent lors de l'exe de ton script ...
Et pour l'exemple de la connexion à la DB, peut être que tu peux te pencher sur le monde merveilleux des classes, qui te permettront de sortir de l'execution 100% procédurale, mais c'est un autre (long) débat ...

Reply

Marsh Posté le 21-10-2005 à 18:09:31    

je savais que mon code pour mon mysql_connec allait declancher les hostilités ;)
 
en fait je testais une librairie qui me pose pas mal de probleme .. et je ne me suis pas amusé a reprendre le code pour le SQL etc.. j'ai copié tel quel celui que j'avais sur mes (tres) anciens projets... mais il sera revu dans le bon sens sans aucun doute :)
 
merci pour les reponses en tout cas!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed