Page 1 sur 1

Classe gestion Mysql

Posté : 19 nov. 2007, 03:21
par NoNos
Bonjour

J'espere que mon poste trouvera sa place ici

Je tente de développer une classe qui me servira d'interface afin d'executer mes requete SQL

Je rencontre un problème dans l'interception des erreurs de connection.

Voila la partie du code concerné :
class MySQL {
  var $serveur;
  var $utilisateur;
  var $password;
  var $bd;
  var $connection_SQL;
  var $resultat;
  var $connection_ok;
  var $erreur;
  var $debug;
  var $op_OK;
  
  //contructeur
  function __construct($serveur, $utilisateur, $password, $bd, $debug){
      //init de mes variable
      
      $this->Connection();
  }
 
  function Connection(){
    if ($this->connection_ok == 0){
      $this->connection_SQL = @mysql_connect($this->serveur,
                                             $this->utilisateur,
                                             $this->password
                                            );
      echo $this->connection_SQL;
      if (! $this->connection_SQL){
        $this->Mysql_erreur();
      }
      else {
        $this->Select_bd();
      }
    }
  }
 
  function Mysql_erreur(){
    if ($this->debug){
      $this->erreur = @mysql_error($this->connection_SQL);
    }
    $this->op_OK = false;
  }
}
Le problème survient quand ma base SQL est arête, la fonction Mysql_erreur() n'alimente pas ma variable erreur

Si vous avez des remarques sur ma manière de procéder n'hesitez pas je me lance dans l'objet et toute remarque pourai m'aider

Posté : 21 nov. 2007, 08:57
par Maitrepylos
Bonjour,

si tu es en php5, je ferais plus comme ceci :
<?php
class MySQL {
	private $serveur;
	private $utilisateur;
	private $password;
	private $bd;
	private $connection_SQL;
	private $resultat;
	private $connection_ok;
	private $erreur;
	private $debug;
	private $op_OK;

	//contructeur
	function __construct($serveur, $utilisateur, $password, $bd, $debug)
	{
		//init de mes privateiable
		$this->serveur = $serveur;
		$this->utilisateur = $utilisateur;
		$this->password = $password;
		$this->bd = $bd;
		$this->debug = $debug;
		
		$this->Connection();
	}

	function Connection()
	{
		if ($this->connection_ok == 0)
		{
			$this->connection_SQL = @mysql_connect($this->serveur,
			$this->utilisateur,
			$this->password
			);
			
			echo $this->connection_SQL;
			
			if (! $this->connection_SQL)
			{
				$this->Mysql_erreur();
			}
			
			else
			{
				$this->Select_bd();
			}
		}
	}

	function Mysql_erreur()
	{
		if ($this->debug)
		{
			$this->erreur = @mysql_error($this->connection_SQL);
		}

		$this->op_OK = false;
	}
}

?>

Le question serait, "tu es sur que la variable $this->debug est initialisé à true"?

Posté : 21 nov. 2007, 14:25
par Jules Petibidon
Hello,

Dans un premier temps, si tu enlevais les @ devant les fonctions mysql, tu aurais peut-être déja des messages d'erreur un peu plus parlants.

Chercher des erreurs en les masquant, c'est plus compliqué...

Posté : 22 nov. 2007, 13:45
par NoNos
En effet si le masque les erreurs je vais avoir des soucis.

Je teste dès que possible et je mets un résolu.