Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3040 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1678573
merlu20
Posté le 29-01-2008 à 15:40:03  profilanswer
 

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.   }

mood
Publicité
Posté le 29-01-2008 à 15:40:03  profilanswer
 

n°1678578
omega2
Posté le 29-01-2008 à 15:49:40  profilanswer
 

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.

n°1678888
merlu20
Posté le 30-01-2008 à 10:06:10  profilanswer
 

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)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
Problème de chargement de donnée dans une listeprobleme frame
probleme installation python3000configuration de mysql avec asterisk dans tribox
Probleme de mise en page differente sous IE7 et FirefoxProblème de lenteur d'un site sous IE7 et pas sur IE6, FF2, Safari ...
Help !! Problème de linkage (je crois)Récuperer et afficher plusieurs lignes de données
Probleme identification apres login[PHP-MySQL] : Problème de connexion à la base de données sous Linux
Plus de sujets relatifs à : Problème de connexion à une base de données MySQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR