PHP connexion à la bdd

Eléphant du PHP | 89 Messages

07 févr. 2010, 19:46

Bonjour
J'ai un message d'erreur lorsque j'essaye de lancer ce script.

Voici le code de ma Connexion.class.php connexion.
<?php

class Connexion {

private $sgbdLogin;
private $sgbdMotDePasse;
private $sgbdServer;

public function __construct ($login, $mdp, $serveur) {

$this->sgbdLogin=$login;
$this->sgbdMotdePasse=$mdp;
$this->sgbdServer=$serveur;

 }
 
public function Connecter() {

try {

$connexion= mysql_connect($this->sgbdLogin, $this->sgbdMotDePasse, $this->sgbdServer);
 if (!$connexion) {
throw new exception ('Impossible de se connecter à la base de donnée');
}
echo 'Connexion réussi avec succès';
}

catch (Exception $e) {

echo 'Une erreur a été genérée:';
echo "<br/>";
$e->getMessage();
}
 }

function public Deconnecter () {
mysql_close ($this->connexion);
}
}
?>
et voici mon fichier principal
<?php

include ("./Connexion.class.php");

$login=xxx;
$mdp=xxx;
$serveur=localhost;

$database= new Connexion ($login,$mdp,$serveur);
$database-> Connecter();
$database-> Deconnecter();
?>
J'ai le message d'erreur suivant: Parse error: parse error in D:\Programme\EasyPHP5.3.0\www\Connexion_object\Connexion.class.php on line 16

Pouvez vous m'aider svp?
Cordialement

ViPHP
ViPHP | 5462 Messages

07 févr. 2010, 20:38

oui ta une erreur ligne 16 :mrgreen:

Eléphant du PHP | 89 Messages

07 févr. 2010, 20:39

ah oui, mais la quelle :p

ViPHP
ViPHP | 5462 Messages

07 févr. 2010, 21:29

ah oui, mais la quelle :p
bah de syntax, on vois bien que l'accolade est de trop, t'utilise quelle éditeur ?

Eléphant du PHP | 89 Messages

07 févr. 2010, 23:34

Notepad ++, vous pouvez me dire quelle accolade svp?

ViPHP
ViPHP | 5462 Messages

08 févr. 2010, 01:05

Notepad ++, vous pouvez me dire quelle accolade svp?
bah la ligne 16 surprime le, tu vois qu'il ferme la class ?

Eléphant du PHP | 89 Messages

08 févr. 2010, 11:47

Bonjour,
A votre avis si j'utilise Eclipse PHP, est ce que les erreurs de ce types, je pourrais les déceler ?
Cordialement

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

08 févr. 2010, 12:46

Avant de penser utiliser un IDE, pense à indenter ton code.
Par exemple, si je prend le code de départ et que je l'indente correctement, voici le résultat :
<?php

class Connexion {

	private $sgbdLogin;
	private $sgbdMotDePasse;
	private $sgbdServer;

	public function __construct ($login, $mdp, $serveur) {
		$this->sgbdLogin=$login;
		$this->sgbdMotdePasse=$mdp;
		$this->sgbdServer=$serveur;
	}
	 
	public function Connecter() {
		try {
			$connexion= mysql_connect($this->sgbdLogin, $this->sgbdMotDePasse, $this->sgbdServer);
			if (!$connexion) {
				throw new exception ('Impossible de se connecter à la base de donnée');
			}
			echo 'Connexion réussi avec succès';
		}
		catch (Exception $e) {
			echo 'Une erreur a été genérée:';
			echo "<br/>";
			$e->getMessage();
		}
	}

	function public Deconnecter () {
		mysql_close ($this->connexion);
	}
}
?>
Et là, pour savoir si tu as tout fermé ou pas, c'est beaucoup plus simple.
De plus, avec Notepad++, en posant le curseur sur une accolade, il te montre l'accolade ouvrante la plus proche, ce qui doit aussi te permettre de t'assurer que ton code est bien formaté.

Par contre, en prenant le code de départ, je ne trouve pas de soucis d'accolades :? j'ai raté un truc ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 89 Messages

08 févr. 2010, 12:50

Oui c'est vrai que j'oubli toujours d'indenter le code, c'est tellement mieux comme ca.
Mais c'est vrai que avec notepad, j'utilise souvent la méthode du curseur mais je n'ai déceler aucun problème.
A voir

Cordialement

Eléphant du PHP | 89 Messages

10 févr. 2010, 01:36

Bonsoir à tous,

J'ai corrigé une faute dans ma class Connexion. J'ai appeler function public au lieu de public function avant dernière ligne.
Mais c'est n'est pas résolu pour autant.
<?php

class Connexion {

        private $sgbdLogin;
        private $sgbdMotDePasse;
        private $sgbdServer;
        
        
        public function __construct ($login, $mdp, $serveur) {
                $this->sgbdLogin=$login;
                $this->sgbdMotdePasse=$mdp;
                $this->sgbdServer=$serveur;
        }
         
        public function Connecter() {
               try {
                        $link= mysql_connect($this->sgbdLogin, $this->sgbdMotDePasse, $this->sgbdServer);
                        if (!$link) {
                               throw new exception ('Impossible de se connecter à la base de donnée');
                        }
                        echo 'Connexion réussi avec succès';
                }
                catch (Exception $e) {
                        echo 'Une erreur a été genérée:';
                        echo "<br/>";
                        $e->getMessage();
                }
        }

        public function Deconnecter () {
                mysql_close ($this->link);
        }
}
?>
mon index
<?php

include ("./Connexion.class.php");

$login='root';
$mdp='mrlover';
$serveur='localhost';

$database= new Connexion ($login,$mdp,$serveur);
$database-> Connecter();
$database-> Deconnecter();

?>
Puis j'ai les messages d'erreur suivant:

Warning: mysql_connect() [function.mysql-connect]: php_network_getaddresses: getaddrinfo failed: Hôte inconnu. in D:\Programme\EasyPHP5.3.0\www\nv\Connexion.class.php on line 18

Warning: mysql_connect() [function.mysql-connect]: [2002] php_network_getaddresses: getaddrinfo failed: Hôte inconnu. (trying to connect via tcp://root:3306) in D:\Programme\EasyPHP5.3.0\www\nv\Connexion.class.php on line 18

Warning: mysql_connect() [function.mysql-connect]: php_network_getaddresses: getaddrinfo failed: Hôte inconnu. in D:\Programme\EasyPHP5.3.0\www\nv\Connexion.class.php on line 18
Une erreur a été genérée:

Notice: Undefined property: Connexion::$link in D:\Programme\EasyPHP5.3.0\www\nv\Connexion.class.php on line 32

Warning: mysql_close() expects parameter 1 to be resource, null given in D:\Programme\EasyPHP5.3.0\www\nv\Connexion.class.php on line 32
Pouvez vous m'aider s'il vous plait?

ViPHP
ViPHP | 5462 Messages

10 févr. 2010, 02:03

http://www.php.net/mysql_connect

sont pas dans le bon ordre les parametres

il faut : server, login, pass

dans ton code c'est : login, pass, server

Eléphant du PHP | 89 Messages

10 févr. 2010, 12:59

Merci beaucoup, en regardant la doc j'ai vu l'importance de les mettre dans le bon ordre.
Mais j'ai un autre problème:
<?php

class Connexion {

        private $sgbdLogin;
        private $sgbdMotDePasse;
        private $sgbdServer;
        
        public function __construct ($serveur,$login,$mdp) {
                $this->sgbdLogin=$login;
                $this->sgbdMotdePasse=$mdp;
                $this->sgbdServer=$serveur;
        }
         
        public function Connecter() {
               try {
                        $link= mysql_connect($this->sgbdServer,$this->sgbdLogin,$this->sgbdMotDePasse );
                        if (!$link) {
                               throw new exception ('Impossible de se connecter à la base de donnée');
                        }
                        echo 'Connexion réussi avec succès';
                }
                catch (Exception $e) {
                        echo 'Une erreur a été genérée:';
                        echo "<br/>";
                        $e->getMessage();
                }
        }

        public function Deconnecter () {
                mysql_close ($this->link);
        }
}
?>

Warning: mysql_connect() [function.mysql-connect]: Accès refusé pour l'utilisateur: 'root'@'@localhost' (mot de passe: NON) in D:\Programme\EasyPHP5.3.0\www\nv\Connexion.class.php on line 17
Une erreur a été genérée:
Notice: Undefined property: Connexion::$link in D:\Programme\EasyPHP5.3.0\www\nv\Connexion.class.php on line 31
Warning: mysql_close() expects parameter 1 to be resource, null given in D:\Programme\EasyPHP5.3.0\www\nv\Connexion.class.php on line 31


J'utilise Easyphp, et j'ai changer le mot de passe, pourtant j'arrive bien à me connecter en mode dos avec cette commande -u root -p xxxxxxx
Est ce que je doit créer une variable link?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 févr. 2010, 13:14

http://www.php.net/mysql_connect

sont pas dans le bon ordre les parametres
Je profite de cette intervention pour rappeler que les messages d'erreur sont parlants et donne la source du problème dans la plupart des cas.
Ici,
Warning: mysql_connect() [function.mysql-connect]: [2002] php_network_getaddresses: getaddrinfo failed: Hôte inconnu. (trying to connect via tcp://root:3306) in D:\Programme\EasyPHP5.3.0\www\nv\Connexion.class.php on line 18
Si on lit le message, on peut voir que mysql_connect a essayé de se connecter à l'hôte "tcp://root:3306".

Et dans ton dernier message d'erreur, si on regarde bien, on vois qu'il a tenté de se connecter avec "'root'@'@localhost'" (un @ de trop).
Tu n'aurais pas donné "@localhost" comme host par hasard ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 89 Messages

10 févr. 2010, 16:33

Bonjour,

Merci de m'avoir répondu. Je n'ai pas mis de @ pour localhost.
Ca doit être une autre erreur sans doute, mais je n'arrive pas a résoudre ce problème.
Cordialement

ViPHP
ViPHP | 5462 Messages

10 févr. 2010, 16:51

Bonjour,

Merci de m'avoir répondu. Je n'ai pas mis de @ pour localhost.
Ca doit être une autre erreur sans doute, mais je n'arrive pas a résoudre ce problème.
Cordialement
mais la class elle est pour toi ou pas, parce que ca existe deja : PDO (http://php.net/manual/fr/book.pdo.php)