PHP : recuperer variable dans une fonction

Bonjour,

J’ai un petit probleme, lorsque j’essaie d’utiliser des variable issues d’autre fichiers inclus dans une fonction, celles-ci ne sont pas recuperées…

En haut de chaque page, j’inclu un fichier contenant les variable, puis les fichier contenant les fonction :

	require_once('include/config.php');
	require_once('include/function.php');

Mon fichier de variable ressemble à ça :

$db_host = "localhost";
$db_user = "root";
$db_pwd = "pwd";
$db_bdd = "tst";

Ma fonction à ceci :

function connect_mysql() {
	global $db_host,$db_user,$db_pwd,$db_bdd;
	$connexion_mysql = mysql_connect($db_host,$db_user,$db_pwd)
	or die("Impossible de se connecter :" .mysql_error() );
	mysql_select_db($db_bdd, $connexion_mysql)
	or die("Impossible de se sélectionner la base :" .mysql_error() );
	return true;
}

Mais lorsque j’appel cette fonction (if (connect_mysql())…), ça me renvoit l’erreur :
Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘ODBC’@‘localhost’ (using password: NO) in …\include\function.php on line 9
Access denied for user ‘ODBC’@‘localhost’ (using password: NO)

On dirait que les variable sont vide…
Pourquoi ?

Merci

Afficher ces dernières avec var_dump donne quoi ?

Bonjour,

Alors je pense que tu débutes dans le développement alors je pense qu’il est important de commencer avec de bonnes bases et des habitudes correctes.

Tes paramètres tu les assignes à des variables dans un fichier php, mais finalement dans ton fichier il n’y a aucun traitement, juste des variables.

Un conseil c’est de te créer un fichier “application.ini” ou “params.ini” (ou tout autre nom que tu préfères, mais essaie de toujours garder des noms que tu risques de retrouver dans des dev. pro.).

Dans ce fichier tu auras une structure dans le style:

[db]
user = "root"
host = "localhost"

[path]
application = "localhost/myApp"
pictures     = "/public/pictures/"

En suite au début de ton projet tu utilises la fonction parse_ini_file(“application.ini”, true) (pour info. si tu ne donnes pas le paramètre true tu auras un tableau simple =/= multidimensionnel)

Qui te créera un tableau multidimensionnel avec les paramètres, exemple:

// index.php

$paramsArray = parse_ini_file("appication.ini", true);

// afficher la variable user
echo $paramsArray['db']['user']; // affichera root

Concernant ton problème, pourquoi déclares-tu les variables en global ?

Il te faut créer une fonction php(dans un fichier à part) qui s’occupera de faire la connexion à la base et que tu vas appeler quand tu en auras besoin (ou au début de l’appli.).
Edité le 30/11/2011 à 14:44

Mettre des informations sensibles (identifiants mysql) dans un fichier .ini non parsé par php et qui peut donc etre affiché en clair via un simple navigateur… Je trouve çà moyen !

Concernant le probleme de Rouliendelavegas. Ta fonction fonctionne parfaitement telle que tu l’a écrite. Ton souci doit venir d’ailleurs. Une vue plus globale de ton script permettrait peut-être d’isoler le souci.

Tu as testé ton script en local ? Si oui, as tu test sur un autre serveur (j’avais des soucis de ce genre du temps ou je testais en local avec easyphp alors que sur mon serveur, tout allait nickel) ?

Sinon, essaie de passer directement les variables en parametres de ta fonction (global est à utiliser prudemment…).

J’ai pas trop voulu entrer dans les détails mais c’est là qu’entre en jeu le fameux .htaccess…
Edité le 07/12/2011 à 15:53

Param dans une variable dans un fichier php ?

Personnellement, si c’est sur le serveur (ie: accessible depuis l’extérieur), je privilégierai une conf en php, histoire d’éviter des oublis d’htaccess … ou pire, que ce ne soit pas supporté.
On peut aussi coller ça dans /etc pendant qu’on y est, vu que php y a accès de manière raisonnable…