Page 1 sur 1

[POO] Extension de mysqli

Posté : 23 mai 2008, 12:51
par agité
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 ?

Posté : 23 mai 2008, 13:27
par savageman
Tu définis la fonction ici, tu ne l'appelles pas.
Tu ne peux donc pas stocker les arguments dans des indices de tableaux...

Posté : 23 mai 2008, 13:46
par d0m
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

Posté : 23 mai 2008, 13:56
par agité
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.

Posté : 23 mai 2008, 14:15
par d0m
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

Posté : 23 mai 2008, 14:23
par agité
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();