IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[POO] Connexion à une base de données


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 157
    Points : 69
    Points
    69
    Par défaut [POO] Connexion à une base de données
    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 :

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    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);
        }
      }

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Points : 502
    Points
    502
    Par défaut
    alors en faite tu fait un appel de ta méthode en static
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $result = dbal::query($sql);
    Alors qu'elle n'est pas déclaré en static dans la class
    soit tu modifie ta class et tu met du static
    soit tu instancie un objet dans ton code d'appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $dbal = new dbal();
    $dbal->query($sql);

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 157
    Points : 69
    Points
    69
    Par défaut
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connexion à une base de donnée en POO via file.ini
    Par Eric5031 dans le forum Langage
    Réponses: 3
    Dernier message: 16/04/2015, 10h46
  2. [PHP 5.2] POO et connexion à une base de données dans une fonction
    Par tolwin dans le forum Langage
    Réponses: 5
    Dernier message: 09/11/2012, 11h39
  3. [POO] Classe de connexion à une base de données
    Par iwf-fr dans le forum Langage
    Réponses: 3
    Dernier message: 13/11/2007, 13h55
  4. Delphi Connexion à une base de donnée distante par TCP/IP
    Par viecel dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/01/2005, 19h19
  5. Réponses: 3
    Dernier message: 29/03/2004, 18h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo