impossible de connecter

Eléphant du PHP | 50 Messages

19 sept. 2006, 22:16

Bonjour,
Je n'arrive pas a faire de connexion a ma BD
voila le message
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'docteurpc67'@'localhost' (using password: NO) in C:\wamp\www\DocteurPC\Admin\BaseDeDonnee.php on line 29
Impossible de se connecter à la base de données
Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\DocteurPC\Admin\login.php on line 13

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\wamp\www\DocteurPC\Admin\login.php on line 13
Erreur SQL !
select pwd from tbl_user where login='dom'
Access denied for user 'ODBC'@'localhost' (using password: NO)
Merci de votre aide
Aprés un accident cranien j'ai quelques difficulé visuel et de comprehenssion, excusez moi pour les fautes est mes difficulté a comprendre. Merci

Mammouth du PHP | 19672 Messages

19 sept. 2006, 22:35

Faudrait qu'on voie le code correspondant à cette erreur, la ligne et le fichier sont indiqués. N'oublie pas de masquer le mot de passe le cas échéant.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 50 Messages

19 sept. 2006, 22:40

Voila le code
<?php

class BaseDeDonnee {
   
   var $adresseServeur;
   var $nomBase;
   var $nomUser;
   var $motDePasse;
   
   var $database;
   var $erreur;

   function BaseDeDonnee( )
   {
   $this->adresseServeur = "localhost";
   $this->nomBase = "docteurpc67";
   $this->nomUser = "root";
   $this->motDePasse = ""; 
  
   }

   function seConnecter() {
     
     //création de la connexion
     $this->database = mysql_connect($this->adresseServeur, $this->nomBase, $this->motDePasse);   

     if( ! $this->database){
      echo 'Impossible de se connecter à la base de données';
      return 0;
     }

     // selection de la bdd       
     if( !mysql_select_db($this->nomBase, $this->database))
     { 
      echo( mysql_error($this->bdd) );
      return 0;
     }       

  }
  function seDeconnecter() {
   mysql_close($this->database);
  }  
  function requete($requete) {
   $resultat = mysql_query ($requete);
   return $resultat;
  }
}
?>
Aprés un accident cranien j'ai quelques difficulé visuel et de comprehenssion, excusez moi pour les fautes est mes difficulté a comprendre. Merci

Eléphant du PHP | 50 Messages

19 sept. 2006, 22:42

est la page login

<?php

// pensez a ouvrir une connexion vers mysql ici
require_once ('BaseDeDonnee.php');

$DB = new BaseDeDonnee();
$DB->seConnecter();

if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
  extract($_POST);
  // on recupère le password de la table qui correspond au login du visiteur
  $sql = "select pwd from tbl_user where login='".$login."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

  $data = mysql_fetch_assoc($req);

  if($data['pwd'] != $pass) {
    echo '<p>Mauvais login / password. Merci de recommencer</p>';
    include('login.htm'); // On inclus le formulaire d'identification
    exit;
  }
  else 
  {
    session_start();
    $_SESSION['login'] = $login;
    
    echo '<p>Identification réussis !</p>';
	
  }    
}
else {
  echo '<p>Vous avez oublié de remplir un champ.</p>';
   include('login.htm'); // On inclut le formulaire d'identification
   exit;
}


?>
Aprés un accident cranien j'ai quelques difficulé visuel et de comprehenssion, excusez moi pour les fautes est mes difficulté a comprendre. Merci

Mammouth du PHP | 19672 Messages

19 sept. 2006, 23:06

Ok, effectivement, c'est plus facile de comprendre pourquoi ça marche pas. Tu utilises ta classe pour te connecter. Très bien, maintenant, tu as un objet pour ta connexion. Là où ça se gâte, c'est qu'ensuite tu ne l'utilises plus pour utiliser des fonctions MySQL. Par exemple, tu mets ceci :
<?php
//...
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
//...
?>
Mais de cette manière là, ton objet ne te sert strictement à rien.

L'idée d'utiliser une classe pour accéder aux données, c'est mieux si les méthodes sont dans la classe.

Il serait donc logique que tu transposes ta fonction dans une méthode d'exécution de la requête. On va transformer ça de la manière suivante, lis biens les commentaires que j'ai ajouté dans le code :

-1- la classe :
<?php

class BaseDeDonnee {

    var $adresseServeur;
    var $nomBase;
    var $nomUser;
    var $motDePasse;

    var $database;
    var $erreur;
    
    var $exec; // ressource d'exécution de requête

    function BaseDeDonnee( )
    {
        $this->adresseServeur = "localhost";
        $this->nomBase = "docteurpc67";
        $this->nomUser = "root";
        $this->motDePasse = "";

    }

    function seConnecter() {

        //création de la connexion
        $this->database = mysql_connect($this->adresseServeur, $this->nomBase, $this->motDePasse);

        if( ! $this->database){
            echo 'Impossible de se connecter à la base de données';
            return 0;
        }

        // selection de la bdd
        if( !mysql_select_db($this->nomBase, $this->database))
        {
            echo( mysql_error($this->bdd) );
            return 0;
        }

    }
    function executer($sql)
    {
        $reussi = false;
        if(false !== ($this->exec = mysql_query($sql)))
        {
            $reussi = true;
        }
        else
        {
            $this->erreur = 'Erreur SQL !<br>'. $sql .'<br>'. mysql_error();
        }
        return $reussi;
    }
    
    function listedonnees()
    {
        $retour = false;
        /* On tente de récupérer les données */
        if(false !== ($donnees = mysql_fetch_assoc($this->exec)))
        {
            /* On assigne les données pour le retour */
            $retour = $donnees;
        }
        else
        {
            $this->erreur = 'Erreur SQL !<br>'. $sql .'<br>'. mysql_error();
        }
        /* On retourne les données s'il n'y a pas eu de problème, sinon on retournera FALSE */
        return $retour;
    }
    
    function seDeconnecter() {
        mysql_close($this->database);
    }
    function requete($requete) {
        $resultat = mysql_query ($requete);
        return $resultat;
    }
}
?>
Et ensuite ta page :
<?php

// pensez a ouvrir une connexion vers mysql ici
require_once ('BaseDeDonnee.php');

$DB = new BaseDeDonnee();
$DB->seConnecter();

if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']))
{
    extract($_POST);
    // on recupère le password de la table qui correspond au login du visiteur
    $sql = "select pwd from tbl_user where login='".$login."'";
    /* On appelle une méthode de la classe pour exécuter la requête qu'on envoie en paramètre */
    $req = $DB->executer($sql);
    /* On vérifie le retour avant de continuer */
    if(false !== $req)
    {
        /* l'exécution de la requête est correcte : on utilise une autre méthode pour récupérer le retour */
        $data = $DB->listedonnees();
        if(false !== $data)
        {
            if($data['pwd'] != $pass) 
            {
                echo '<p>Mauvais login / password. Merci de recommencer</p>';
                include('login.htm'); // On inclus le formulaire d'identification
                exit;
            }
            else
            {
                session_start();
                $_SESSION['login'] = $login;
        
                echo '<p>Identification réussis !</p>';
        
            }
        }
        else
        {
            /* La récupération des données a échoué, on récupère le message d'erreur pour affichage (débuggage seulement) */
            echo($DB->erreur);
        }
    }
    else
    {
        /* L'exécution de la requête a échoué, on récupère le message d'erreur pour affichage (débuggage seulement) */
        echo($DB->erreur);
    }
}
else
{
    echo '<p>Vous avez oublié de remplir un champ.</p>';
    include('login.htm'); // On inclut le formulaire d'identification
    exit;
}


?>
VOilà, teste ça et n'hésite pas à demander des explications si un point t'échappe ou te semble abstrait, il y aura toujours quelqu'un dans les parages pour te remettre sur le chemin ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 50 Messages

20 sept. 2006, 09:35

Sniff cela marche pas non plus je recois le meme message.
Petite question.
Je possede plusieurs pc, celui sur lequels j'ai ce probleme viens d'etre reinstalle et j'ai mis la news version de wamp ( V 1.6.1)
sur mon 2 pc j'ai la version V 1.4.4 et sur celui mon code fonctionne correctement. Ai -je oublier un truc quand j'ai fais mon instalation ? je sais pas modifier le php.ini ????
Merci de ton aide sympa de ta parts.
Aprés un accident cranien j'ai quelques difficulé visuel et de comprehenssion, excusez moi pour les fautes est mes difficulté a comprendre. Merci

Mammouth du PHP | 19672 Messages

20 sept. 2006, 11:13

Bon, j'ai fait ça vite fait hier soir sans trop aller dans le détail, voici avec quelques corrections :
- La classe :
<?php
class BaseDeDonnee 
{
    var $adresseServeur;
    var $nomBase;
    var $nomUser;
    var $motDePasse;

    var $database;
    var $erreur;
    
    var $exec; // ressource d'exécution de requête

    function BaseDeDonnee( )
    {
        $this->adresseServeur = "localhost";
        $this->nomBase = "docteurpc67";
        $this->nomUser = "root";
        $this->motDePasse = "";

    }

    function seConnecter()
    {
        //création de la connexion
        $this->database = mysql_connect($this->adresseServeur, $this->nomBase, $this->motDePasse);

        if(false === $this->database)
        {
            $this->erreur = "Impossible de se connecter au serveur ". $this->adresseServeur ." :\n". mysql_error();
            return false;
        }

        // selection de la bdd
        if(false === mysql_select_db($this->nomBase))
        {
            $this->erreur = "Impossible de se connecter à la base de données :\n". mysql_error();
            return false;
        }
    }

    function executer($sql)
    {
        $reussi = false;
        if(false !== ($this->exec = mysql_query($sql)))
        {
            $reussi = true;
        }
        else
        {
            $this->erreur = 'Erreur SQL !<br>'. $sql .'<br>'. mysql_error();
        }
        return $reussi;
    }
    
    function listedonnees()
    {
        $retour = false;
        /* On tente de récupérer les données */
        if(false !== ($donnees = mysql_fetch_assoc($this->exec)))
        {
            /* On assigne les données pour le retour */
            $retour = $donnees;
        }
        else
        {
            $this->erreur = 'Erreur SQL !<br>'. $sql .'<br>'. mysql_error();
        }
        /* On retourne les données s'il n'y a pas eu de problème, sinon on retournera FALSE */
        return $retour;
    }
    
    function seDeconnecter() 
    {
        mysql_close($this->database);
    }
    
    function requete($requete) 
    {
        $resultat = mysql_query ($requete);
        return $resultat;
    }
}
?>
N'oublie pas de remettre ton mot de passe éventuellement;

- Le code de ta page :
<?php
/* Pensez a inclure la classe de connexion vers mysql ici */
require_once ('BaseDeDonnee.php');

$DB = new BaseDeDonnee();
$cnx = $DB->seConnecter();
if(false !== $cnx)
{
    if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']))
    {
        extract($_POST);
        // on recupère le password de la table qui correspond au login du visiteur
        $sql = "select pwd from tbl_user where login='".$login."'";
        /* On appelle une méthode de la classe pour exécuter la requête qu'on envoie en paramètre */
        $req = $DB->executer($sql);
        /* On vérifie le retour avant de continuer */
        if(false !== $req)
        {
            /* l'exécution de la requête est correcte : on utilise une autre méthode pour récupérer le retour */
            $data = $DB->listedonnees();
            if(false !== $data)
            {
                if($data['pwd'] != $pass) 
                {
                    echo '<p>Mauvais login / password. Merci de recommencer</p>';
                    include('login.htm'); // On inclus le formulaire d'identification
                    exit;
                }
                else
                {
                    session_start();
                    $_SESSION['login'] = $login;
            
                    echo '<p>Identification réussie !</p>';
            
                }
            }
            else
            {
                /* La récupération des données a échoué, on récupère le message d'erreur pour affichage (débuggage seulement) */
                echo($DB->erreur);
            }
        }
        else
        {
            /* L'exécution de la requête a échoué, on récupère le message d'erreur pour affichage (débuggage seulement) */
            echo($DB->erreur);
        }
    }
    else
    {
        echo '<p>Vous avez oublié de remplir un champ.</p>';
        include('login.htm'); // On inclut le formulaire d'identification
        exit;
    }
}
else
{
    /* La connexion au serveur ou à la base a échoué, on récupère le message d'erreur pour affichage (débuggage seulement) */
    echo($DB->erreur);
}
?>
Ça m'étonnerait quand même que ça ne fonctionne pas ce coup là :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 50 Messages

20 sept. 2006, 11:26

hélas non voila le message recu.

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'docteurpc67'@'localhost' (using password: NO) in C:\wamp\www\DocteurPC\Admin\BaseDeDonnee.php on line 26
Impossible de se connecter au serveur localhost : Access denied for user 'docteurpc67'@'localhost' (using password: NO)
Aprés un accident cranien j'ai quelques difficulé visuel et de comprehenssion, excusez moi pour les fautes est mes difficulté a comprendre. Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

20 sept. 2006, 11:34

Ce message d'erreur veut dire que tu t'es planté dans ton nom d'utilisateur/mot de passe MySQL ;)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 50 Messages

20 sept. 2006, 11:45

non je viens de recontrole s'est le bon user et mot de passe en plus cela fonctionne sur l'ancienne version de wamp. je pense a un prob de config de la nouvelle version mais je ne sais pas ou
Aprés un accident cranien j'ai quelques difficulé visuel et de comprehenssion, excusez moi pour les fautes est mes difficulté a comprendre. Merci

Mammouth du PHP | 843 Messages

20 sept. 2006, 12:04

a tu essayer de comparer les php.ini et my.ini entre tes deux PC...

essaye aussi de re-re-re-passer en revue tes infos de connection sql au cas où

c'est vrai que c'est bizzard si ça marche sur un pc mais pas l'autre :-k
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Eléphant du PHP | 184 Messages

20 sept. 2006, 12:15

Est ce que ton serveur mySQL est démarré?
Image

Eléphant du PHP | 50 Messages

20 sept. 2006, 12:23

oui serveur ok
es ce que le fichier ini de la version 1.4 et le meme que la news version ?
Aprés un accident cranien j'ai quelques difficulé visuel et de comprehenssion, excusez moi pour les fautes est mes difficulté a comprendre. Merci

Mammouth du PHP | 843 Messages

20 sept. 2006, 12:29

eesaye de comparer les .ini avec un logiciel de comparaison...

sinon si ce n'est pas trop contraignant pour toi, essaye de reinstaller l'ancienne version de wamp comme çà tu sera fixé ;)

ou encore une p'tite recherche sur les changement entre les deux version de wamp... :-k
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 19672 Messages

20 sept. 2006, 13:54

réinstalle rien du tout, essaye sans mot de passe du tout, je parie que l'installation n'en comporte pas. Éventuellement, remplace le num de l'utilisateur par "root" toujours sans mot de passe et si ça marche pâs encore avec le mot de passe que tu as indiqué lors de l'instalation le cas échéant.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: