[POO] Extension de mysqli

Mammouth du PHP | 965 Messages

23 mai 2008, 12:51

Bon alors nouveau problème après les conseils sur l'autre thread je vais me tourner vers mysqli pour faire ma classe de connexion a la base de donnée et gérer les erreurs, surtout que c'est orienté objet !

Donc pour créer cette classe je m'aide du site du zéro qui semble bien réponde a ce que je veux et bien détaillé.

Après avoir taper quelque ligne j'ai fait ca :
class dbquery extends mysqli  {

 protected $config = array(
 'host' => 'localhost',
 'user' => 'root',
 'pass' => 'enimatek',
 'dbname' => 'test_admin'
 );
 
 // Connection a la bdd
  public function __construct($config['host'], $config['user'], $config['pass'], $config['dbname']) {
 
		if(mysqli_connect_errno())
		{
 			echo "<b>- Impossible de se connecter a la base de donnée : ".mysqli_connect_error()."</b><br />";
			exit();
		}
									
 }
}
La il me retourne une erreur :
Parse error: syntax error, unexpected '[', expecting ')
il ne voudrait pas de mon tableau ? :roll:

de plus si je change par des variables et que je les definis après la classe il ne semble pas les trouver ... une idée ?

Eléphant du PHP | 185 Messages

23 mai 2008, 13:27

Tu définis la fonction ici, tu ne l'appelles pas.
Tu ne peux donc pas stocker les arguments dans des indices de tableaux...

d0m
Mammouth du PHP | 1141 Messages

23 mai 2008, 13:46

salut,

tu as du ne pas comprendre un petite chose et c'est ce qui te bloque:

tu dois effectivement definir ton constructeur. Celui ci doit avoir des arguments ou non.
Ici il ne semble pas en avoir besoin car tu définis ta configuration dans le tableau.

Ensuite ce constructeur doit appeler le constructeur de la classe mère et c'est à ce moment que tu lui passes les elements fixes de connexion comme ceci :
public function __construct() { 
  $retour = parent::__construct($config['host'], $config['user'], $config['pass'], $config['dbname']);
  ...
  return $retour

Mammouth du PHP | 965 Messages

23 mai 2008, 13:56

bon j'ai réussi en faisant :
class dbquery extends mysqli  {

 protected $config = array(
 'host' => 'localhost',
 'user' => 'root',
 'pass' => 'enimatek',
 'dbname' => 'test_admin'
 );
 
 // Connection a la bdd
  public function __construct() {
 
 		$retour = parent::__construct($this->config['host'], $this->config['user'], $this->config['pass'], $this->config['dbname']); 
	
		if(mysqli_connect_errno())
		{
 			echo "<b>- Impossible de se connecter a la base de donnée : ".mysqli_connect_error()."</b><br />";
			exit();
		}
		
		return $retour;								
 }
maintenant j'aimerais savoir quel est l'équivalent de mysql_fetch_rows avec mysqli, je n'ai trouver que affected_rows qui est l'équivalent de mysql_num_rows.

d0m
Mammouth du PHP | 1141 Messages

23 mai 2008, 14:15

l'équivalent est pourtant là sous le même forme dans le manuel : mysqli_result::fetch_row

mais les fonctions d'exploitation de résultat comme celle ci sont dans la classe mysqli_result et non mysqli.
En fait mysqli::query renvoie une instance de mysqli_result

Mammouth du PHP | 965 Messages

23 mai 2008, 14:23

EDIT :

Ok j'ai trouver comment utiliser :roll:

pas si compliqué en fait il fallait retourner directement dans le code ensuite et faire des $requete->fetch_row();