disponibilité variables connexion

Invité
Invité n'ayant pas de compte PHPfrance

04 mai 2007, 14:00

Bonjour,
j'ai un fichier config.php dans lequel je crée une connexion à une bdd. Ce fichier est disponible pour toutes les pages de mon site en include.
$dsn = array(
    'phptype'  => 'mysql',
    'username' => 'admin',
    'password' => 'motdepasse',
    'hostspec' => 'localhost',
    'database' => 'mabdd',
);

$options = array(
    'debug'       => 2,
    'portability' => DB_PORTABILITY_ALL,
);

$db =& DB::connect($dsn, $options);
if (PEAR::isError($db)) {
    die($db->getMessage());
}
Dans un fichier fonctions.php, j'ai une fonction qui execute une requete sur la bdd, à partir de la connexion ci dessus. ce fichier est disponible pour toutes les pages de mon site en include.
function checkPass($values)
{

	$sql  = "SELECT idAdmin, mdpAdmin FROM login WHERE idAdmin  = '?' and mdpAdmin = '?'";
	$data = array($values['idAdmin'], $values['mdpAdmin']);
	if ($res =& $db->query($sql, $data)) 
	{
		js_redirect("index.php");	
	}
	else
	{
		js_redirect("admin.php");	
	}
}

Mon problème : l'instance de connexion $db qui a été créée dans config.php ( $db =& DB::connect($dsn, $options); ) n'est pas disponible dans ma fonction checkPass($values).

Si je suis dans une page quelconque de mon site et que je fais
checkpass($values), je reçois une erreur me disant que $db n'existe pas.

Comment rendre $db disponible pour toutes mes fonctions, dans devoir faire ceci à chaque fois :
checkPass($values, $db).

Merci pour vos réponses.

Eléphanteau du PHP | 40 Messages

04 mai 2007, 14:11

Dans ta fonction, juste avant le test, rajoute:
global $db;

Invité
Invité n'ayant pas de compte PHPfrance

04 mai 2007, 17:32

super, merci beaucoup.
Et comment faire si c'est une classe de je veux rendre disponible dans ma fonction?

Invité
Invité n'ayant pas de compte PHPfrance

04 mai 2007, 17:41

plus précisément j'ai un fichier class contenant ma classe :
class DataObject_login extends DB_DataObject 
{
   var $__table = "login"; 
   var $idAdmin ;            
   var $mdpAdmin;                     
}
Et je tente d'instancier DataObject_login dans ma fonction checkPass
function checkPass($values)
{
        $login = new DataObjects_login;
       ...
}
Actuellement, l'instanciation de DataObjects_login est possible à l'extérieur de la fonction. A l'intérieur, php me dit que cette classe n'existe pas...