Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/01/2008, 10h32   #1
Membre à l'essai
 
Inscription : juillet 2005
Messages : 127
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 127
Points : 24
Points : 24
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 :

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
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 :
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);
    }
  }
merlubreizh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2008, 10h05   #2
Membre éprouvé
 
Homme
Inscription : avril 2005
Messages : 611
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Turquie

Informations forums :
Inscription : avril 2005
Messages : 611
Points : 459
Points : 459
alors en faite tu fait un appel de ta méthode en static
Code :
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 :
1
2
3
 
$dbal = new dbal();
$dbal->query($sql);
maximenet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2008, 10h13   #3
Membre à l'essai
 
Inscription : juillet 2005
Messages : 127
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 127
Points : 24
Points : 24
Merci
merlubreizh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h55.


 
 
 
 
Partenaires

Hébergement Web