merlu20 | 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 :
- if (isset($_POST['nom']) && $_POST['nom'] != '')
- {
- $nom = $_POST['nom'];
- $prenom = $_POST['prenom'];
- $adresse = $_POST['adresse'];
- $cp = $_POST['cp'];
- $ville = $_POST['ville'];
- $pays = $_POST['pays'];
- $tel = $_POST['tel'];
- $email = $_POST['email'];
- $mdp = $_POST['mdp'];
- //$this->insertion($nom, $prenom, $adresse, $cp, $ville, $pays, $tel, $email ,$mdp);
- //Connexion SQL
- /*$dbhote = 'localhost';
- $dbuser = 'root';
- $dbpass = '';
- $dbbase = 'ms2006';
- $link = mysql_connect($dbhote, $dbuser, $dbpass) or die("Impossible de se connecter : " . mysql_error());
- mysql_select_db($dbbase, $link);*/
- $connected = $GLOBALS['dbal']->connect();
- //une fois connecté, on va d'abord vérifier que l'adresse email ne se trouve pas déjà dans la base
- $sql_mail = 'select * from client where MailClient = "'.$email.'"';
- $result_mail = $GLOBALS['dbal']->query($sql_mail);
- if($GLOBALS['dbal']->num_rows($result_mail)==1){
- echo '<script type="text/javascript">alert("Cette adresse email existe déjà, veuillez en choisir une autre" );</script>';
- }
- else{
- //Création de la requête SQL
- $sql= "insert into client values ('','$nom','$prenom','$adresse','$cp','$ville','$pays','$tel','$email','$mdp')";
- //Exécution de la requête SQL
- $result = dbal::query($sql);
- $buffer .= "Merci de vous être enregistré :-)";
- }
- }
|
Enfin, le code de ma couche dbal :
Code :
- class dbal
- {
- // Attributs de la classe (PHP5)
- private $cnn; // La connexion
- private $base; // La base de données
- private $connected = false; // A-t-on déjà établi une connexion ?
-
- // Ouvrir une connexion
- function connect()
- {
- if ($this->connected)
- return;
-
- // Essayer d'ouvrir la connexion
- $this->cnn = @mysql_connect(
- $GLOBALS['db']['host'],
- $GLOBALS['db']['user'],
- $GLOBALS['db']['password']);
-
- // Tout arrêter en cas d'échec
- if (!$this->cnn) die("Impossible d'ouvrir la connexion." );
-
- // Sélectionner une base de données
- // En paramètres : le nom de la base
- // le handle de connexion
- $this->base = @mysql_select_db(
- $GLOBALS['db']['database'],
- $this->cnn);
- if (!$this->base) die("Base de données introuvable." );
-
- // La connexion est ok
- $this->connected = true;
-
- }
-
- // Fermer la connexion
- function close()
- {
- if ($this->connected)
- @mysql_query_close($this->cnn);
- }
-
- // Exécuter une requête sur la base de données
- // On récupère un "pointeur" sur l'opération SQL
- function query($sql)
- {
- // Si la connexion n'est pas ouverte...
- if (!$this->connected)
- $this->connect();
-
- return mysql_query($sql);
- }
- //Récupérer le nombre de résultats d'une requête
- function num_rows($result)
- {
- //Si la connexion n'est pas ouverte ...
- if (!$this->connected)
- $this->connect();
- return mysql_num_rows($result);
- }
-
- // Récupérer une ligne de table à partir d'un pointeur de requête
- function fetch_assoc($pointeur)
- {
- return mysql_fetch_assoc($pointeur);
- }
- }
|
|