Problème de connexion à une base de données MySQL

Problème de connexion à une base de données MySQL - PHP - Programmation

Marsh Posté le 29-01-2008 à 15:40:03    

Salut à tous ! Je développe actuellement un site Internet de vente de meubles de salon d'intérieur, dans le cadre d'un projet fictif. Je rencontre un petit problème lors de l'inscription des clients. C'est que je n'arrive pas à me connecter à ma base de données. J'utilise pour cela une fonction connect(), développée dans une couche dbal, et à laquelle je fait appel dans mon plugin inscription.
 
Voici les messages qu'il m'affiche :
 

Citation :

Notice: Undefined property: plugin_inscription::$connected in C:\Program Files\EasyPHP 2.0b1\www\projet_MS2006\lib\dbal.php on line 51
 
Fatal error: Call to undefined method plugin_inscription::connect() in C:\Program Files\EasyPHP 2.0b1\www\projet_MS2006\lib\dbal.php on line 52


 
Les lignes 51-52 correspondent à la boucle if de la fonction query($sql) de la couche dbal.
 
Et voici le code de mon plugin d'inscription correspondant à la connexion :

Code :
  1. if (isset($_POST['nom']) && $_POST['nom'] != '')
  2.   {
  3.    $nom = $_POST['nom'];
  4.    $prenom = $_POST['prenom'];
  5.    $adresse = $_POST['adresse'];
  6.    $cp = $_POST['cp'];
  7.    $ville = $_POST['ville'];
  8.    $pays = $_POST['pays'];
  9.    $tel = $_POST['tel'];
  10.    $email = $_POST['email'];
  11.    $mdp = $_POST['mdp'];
  12.    //$this->insertion($nom, $prenom, $adresse, $cp, $ville, $pays, $tel, $email ,$mdp);
  13.    //Connexion SQL
  14.    /*$dbhote = 'localhost';
  15.    $dbuser = 'root';
  16.    $dbpass = '';
  17.    $dbbase = 'ms2006';
  18.    $link = mysql_connect($dbhote, $dbuser, $dbpass) or die("Impossible de se connecter : " . mysql_error());
  19.    mysql_select_db($dbbase, $link);*/
  20.    $connected = $GLOBALS['dbal']->connect();
  21.    //une fois connecté, on va d'abord vérifier que l'adresse email ne se trouve pas déjà dans la base
  22.    $sql_mail = 'select * from client where MailClient = "'.$email.'"';
  23.    $result_mail = $GLOBALS['dbal']->query($sql_mail);
  24.    if($GLOBALS['dbal']->num_rows($result_mail)==1){
  25.     echo '<script type="text/javascript">alert("Cette adresse email existe déjà, veuillez en choisir une autre" );</script>';
  26.    }
  27.    else{
  28.     //Création de la requête SQL
  29.     $sql= "insert into client values ('','$nom','$prenom','$adresse','$cp','$ville','$pays','$tel','$email','$mdp')";
  30.     //Exécution de la requête SQL
  31.     $result = dbal::query($sql);
  32.     $buffer .= "Merci de vous être enregistré :-)";
  33.    }
  34.   }


 
Enfin, le code de ma couche dbal :

Code :
  1. class dbal
  2.   {
  3.     // Attributs de la classe (PHP5)
  4.     private $cnn; // La connexion
  5.     private $base; // La base de données
  6.     private $connected = false; // A-t-on déjà établi une connexion ?
  7.    
  8.     // Ouvrir une connexion
  9.     function connect()
  10.     {
  11.       if ($this->connected)
  12.         return;
  13.      
  14.       // Essayer d'ouvrir la connexion       
  15.       $this->cnn = @mysql_connect(
  16.         $GLOBALS['db']['host'],
  17.         $GLOBALS['db']['user'],
  18.         $GLOBALS['db']['password']);
  19.        
  20.       // Tout arrêter en cas d'échec
  21.       if (!$this->cnn) die("Impossible d'ouvrir la connexion." );
  22.      
  23.       // Sélectionner une base de données
  24.       // En paramètres : le nom de la base
  25.       //                 le handle de connexion
  26.       $this->base = @mysql_select_db(
  27.         $GLOBALS['db']['database'],
  28.         $this->cnn);
  29.       if (!$this->base) die("Base de données introuvable." );
  30.      
  31.       // La connexion est ok
  32.       $this->connected = true;
  33.  
  34.     }
  35.    
  36.     // Fermer la connexion
  37.     function close()
  38.     {
  39.       if ($this->connected)
  40.         @mysql_query_close($this->cnn);
  41.     }
  42.    
  43.     // Exécuter une requête sur la base de données
  44.     // On récupère un "pointeur" sur l'opération SQL
  45.     function query($sql)
  46.     {
  47.       // Si la connexion n'est pas ouverte...
  48.       if (!$this->connected)
  49.         $this->connect();
  50.        
  51.       return mysql_query($sql);
  52.     }
  53. //Récupérer le nombre de résultats d'une requête
  54. function num_rows($result)
  55. {
  56.  //Si la connexion n'est pas ouverte ...
  57.  if (!$this->connected)
  58.   $this->connect();
  59.  return mysql_num_rows($result);
  60. }
  61.    
  62.     // Récupérer une ligne de table à partir d'un pointeur de requête
  63.     function fetch_assoc($pointeur)
  64.     {
  65.       return mysql_fetch_assoc($pointeur);
  66.     }
  67.   }

Reply

Marsh Posté le 29-01-2008 à 15:40:03   

Reply

Marsh Posté le 29-01-2008 à 15:49:40    

Citation :

$result = dbal::query($sql);

=> Veut dire : on appelle la fonction query de la classe dbal sans passer par un objet.
Normal que php te dise qu'il ne trouve pas ce qu'il faut dans un tel cas. Il faudrait soit que les membres soient statique soit que tu passes par un objet de la classe dbal.

Reply

Marsh Posté le 30-01-2008 à 10:06:10    

Merci, en fait c'était un oubli de ma part :D J'ai modifié et j'ai mis à la place : $result = $GLOBALS['dbal']->query($sql)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed