8792 sujets

Développement web côté serveur, CMS

Bonjour,

j'ai un petit problème avec une classe de connexion. La voici :


<?php
class mysql {

	var $host;
	var $user;
	var $passwd;
	var $db;
	
	function mysql($host, $user, $passwd, $db) {
		$this->host = $host;
		$this->user = $user;
		$this->passwd = $passwd;
		$this->db = $db;
	}

	function connect() {
		mysql_connect($this->host, $this->user, $this->passwd) or die ("Impossible de se connecter à MySQL :".mysql_error());
	}

	function selectdb() {
		mysql_select_db($this->db) or die ("Impossible de sélectionner $this->db :".mysql_error());
	}
	
	function afficheText() {
		
		$connection = new mysql($host, $user, $passwd, "database");				
		$connection->connect();
		$connection->selectdb();
						
		$resultat = mysql_query("SELECT * FROM pr_missions");
		while ($row = mysql_fetch_object($resultat)) {
			echo ("<h1>$row->titre</h1>\n");
			echo ("<h2>$row->sstitre</h2>\n");
			echo ("<p>$row->text</p>");
		}
		
		mysql_close();				
	}

}
?>


Dans mon index.php, j'appelle un fichier conf.php qui contient ceci :


<?php

	$host = "localhost";
	$user ="root";
	$passwd = "xxx";
	$db = "database";

?>


J'appelle ma classe, et je n'ai plus qu'à mettre ce bout de code super pratique :

<?php mysql::afficheText(); ?>


En fait, tout marche très bien, mais uniquement si je précise moi-même la valeur $db dans la classe (dans la fonction afficheText() ) :

$connection = new mysql($host, $user, $passwd, [#red]"database"[/#]);


Si j'écris :

$connection = new mysql($host, $user, $passwd, [#red]$db[/#]);


ça ne marche plus... Quelqu'un a une idée ?

Merci d'avance,
Lionel
Modifié par Opentype (06 Mar 2007 - 12:11)
c'est peut-être une question de portéee de la variable ... As-tu essayé avec une super globale ?

dans conf.php :
<?php
	define("DB_HOST", "localhost");
	define("DB_USER", "root");
	define("DB_PWD", "xxx");
	define("DB_NAME", "database");
?>


et dans ta connexion :
$connection = new mysql(DB_HOST, DB_USER, DB_PWD, DB_NAME);


Have a look Smiley cligne
Bonjour,

je crois que c'est dû au fait que dans la méthode AfficheText() "database" soit écrit en dur.


function afficheText() {
$connection = new mysql($host, $user, $passwd, [b]"database"[/b]);


Bonne journée.
Malcolm a écrit :
c'est peut-être une question de portéee de la variable ... As-tu essayé avec une super globale ?

dans conf.php :
<?php
	define("DB_HOST", "localhost");
	define("DB_USER", "root");
	define("DB_PWD", "xxx");
	define("DB_NAME", "database");
?>


et dans ta connexion :
$connection = new mysql(DB_HOST, DB_USER, DB_PWD, DB_NAME);


Have a look Smiley cligne


C'est bien ça ! J'avais complètement occulté cet aspect... Smiley confused

Merci beaucoup ! Smiley ravi