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

PHP & Base de données Discussion :

Connexion d'un utilisateur à BDD [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 14
    Par défaut Connexion d'un utilisateur à BDD
    Bonjour à tous,

    Etant nouveau sur ce forum j'espère pouvoir trouver laide dont j'ai besoin mais aussi en apporter à la hauteur de mes connaissances.

    Je vous expose mon problème :

    J'ai créer dans phpmyadmin une BDD regroupant deux BDD, protégé par un mot de passe et nom grâce au privilège (en vue de les joindre) !
    Ma première BDD est correctement lié mais la seconde pose problème.

    Je rencontre néanmoins une erreur que j'essaye de résoudre sans succès :

    Access denied for user '...'@'localhost' (using password: NO)
    voici mon code :

    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
    <?php
     
    // on teste si le visiteur a soumis le formulaire
    if (isset($_POST['commande']) && $_POST['commande'] == 'commande') {
    // on teste l'existence de nos variables. On teste également si elles ne sont pas vides
    	if ((isset($_POST['homme']) && !empty($_POST['homme'])) && (isset($_POST['quantiteh']) && !empty($_POST['quantiteh']))) {
    // on teste les deux mots de passe
     
    		$base = mysql_connect ('localhost carole', 'acces_site', 'password');
    		mysql_select_db ('commande', $base);
     
    		$homme = mysql_real_escape_string($_POST['homme']);
    		$quantiteh = mysql_real_escape_string($_POST['quantiteh']);
    		$id = $_SESSION['id'];
     
     
    	$sql = 'INSERT INTO commande (id_commande,id,homme,quantiteh) VALUES ("","$id", "$homme", "$quantiteh")';
    	mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
    	$id = mysql_insert_id();
     
    }
    }
    ?>
    Cordialement, Je remercie d'avance ceux qui m'aideront.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ca m'ettonerait que ton serveur soit "localhost carole".

    Tu devrais afficher les erreurs quand tu developpes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 14
    Par défaut
    Enfaite je n'ai jamais encore effectuer de requête sur une BDD en regroupant deux, quel est la syntaxe à respecter alors j'ai ma BDD carole avec deux table dedans carole et commande !
    J'ai effectué un privilège sur carole, cela s'adresse à la BDD global (regroupant les deux) ou a la table carole unique ?

    je ne connais pas la syntaxe pour cibler la seconde table ...

    Merci pour ta réponse rapide, si je ne met pas 'localhost carole' il me met comme message no database selected !

    Comment afficher les erreurs excuse moi mais je suis novice !

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    tu confonds le serveur (localhost), la base donnée (carole) et les table s (commande et carole)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mysql_connect ('localhost', 'acces_site', 'password');
    mysql_select_db ('carole');
    $sql = 'INSERT INTO commande (id_commande,id,homme,quantiteh) VALUES ("","$id", "$homme", "$quantiteh")';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 14
    Par défaut
    Ca marche ! Merci pour cette réponse ! Le sujet est résolu

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 14
    Par défaut
    Désolé c'est encore moi j'ai un petit soucis j'essaye d'attraper l'id (utilisateur) de ma première table pour qu'il s'intègre dans la seconde, il me servira pour voir les commandes associés à l'ID et donc d'avoir les nom,....

    J'ai tout essayé mais la je ne vois vraiment plus ! Aucune Erreur

    PHP:

    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
    <?php
    session_start();
    // on teste si le visiteur a soumis le formulaire
    if (isset($_POST['commande']) && $_POST['commande'] == 'commande') {
    // on teste l'existence de nos variables. On teste également si elles ne sont pas vides
    	if ((isset($_POST['homme']) && !empty($_POST['homme'])) && (isset($_POST['quantiteh']) && !empty($_POST['quantiteh']))) {
    // on teste les deux mots de passe
     
    		$base = mysql_connect ('localhost', 'acces_site', 'password');
    		mysql_select_db ('carole', $base);
     
    		$homme = $_POST['homme'];
    		$quantiteh = mysql_real_escape_string($_POST['quantiteh']);
    		// $id ='SELECT id, id FROM carole,commande ';
    		$id=$_SESSION['id'];
     
     
     
    	$sql = 'INSERT INTO commande (id_commande,id,homme,quantiteh) VALUES ("", "$id", "$homme", "$quantiteh")';
    	mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
     
     
    }
    }
    ?>

    HTML :

    Code html : 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
    <fieldset id="rows0">
        <ul>
            <li>
                <br/>
                <br/>
                <br/>
                <form  method="POST" action="#">
                    <select id="homme" name="homme" class="col-xs-5 col-sm-6 col-lg-6">
                        <option value="chemise">Chemise</option>
                        <option value="chemise pliée">Chemise pliée</option>
                        <option value="veste">Veste</option>
                        <option value="pantalon">Pantalon</option>
                        <option value="cravate">Cravate</option>
                        <option value="pull">Pull, Gilet</option>
                        <option value="blouson">Blouson</option>
                        <option value="blouson">Blouson 3/4</option>
                        <option value="impermable">Imperméable</option>
                        <option value="manteau">Manteau</option>
                        <option value="doudoune">Doudoune</option>
                    </select>
                    <input type="number" min="1" id="quantiteh" name="quantiteh" placeholder="Quantité" class="col-xs-5 col-sm-4 col-lg-4"/>
                    <button type ="submit" class="btn btn-primary" name="commande" value="commande">Continuer</button>
                </form>
            </li>
        </ul>
    </fieldset>

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    On est défini $_SESSION['id'] ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 14
    Par défaut
    J'ai recommencé en utilisant PDO cela marche, je post la réponse pour les passants :

    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
    <?php
    session_start();
    // on teste si le visiteur a soumis le formulaire
    if (isset($_POST['commande']) && $_POST['commande'] == 'commande') {
    // on teste l'existence de nos variables. On teste également si elles ne sont pas vides
    	if ((isset($_POST['homme']) && !empty($_POST['homme'])) && (isset($_POST['quantiteh']) && !empty($_POST['quantiteh']))) {
    // on teste les deux mots de passe
     
     
    		$homme = $_POST['homme'];
    		$quantiteh = $_POST['quantiteh'];
    		$id = 'SELECT id FROM carole';
    		// Connection au serveur
    		  $dns = 'mysql:host=****;dbname=****';
    		  $utilisateur = '****';
    		  $motDePasse = '****';
    		  $connection = new PDO( $dns, $utilisateur, $motDePasse );
     
     
    		$sql = 'INSERT INTO commande (id,homme,quantiteh) VALUES (:id, :homme, :quantiteh)';
    		$stmt = $connection->prepare($sql);
    		$stmt->execute(array(':id' => $id, ':homme' => $homme, ':quantiteh' => $quantiteh));
     
     
    }
    }
    ?>
    Tout s'insère bien dans la table. Mon id_commande s'incrèmente bien mais l'ID que j'essaye d'insérer provenant de l'autre table ne marche pas ...
    Si quelqu'un à la solution...

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $id = 'SELECT id FROM carole';
    Ce n'est pas comme ça qu'on execute une requête et qu'on lit les résultats.

    De plus, si c'est l'id de l'utilisateur connecté que tu souhaites inserer, comme tu l'avais bien amorçé, cet id doit être stocké en session au moment ou l'utilisateur s'authentifie afin justement de pouvoir être réutilisé ailleurs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 14
    Par défaut
    C'est bon cela fonctionne parfaitement merci à toi !!!!

    il faut rajouter : $id = $_SESSION['id'];

    sans oublier le session_start();

  11. #11
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 14
    Par défaut
    J'ai encore un petit problème je cherche à créer un formulaire d'authentification, qui regarde l'existence du username, password dans ma base de données, si ok on se connect sinon on est redirigé !

    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
    <?
    session_start();
    // On récupère ce que l'utilisateur à saisi, si il n'a rien saisi (login ou mot de passe) on le renvoi sur la page de 
    //création de compte
    // on teste si le visiteur a soumis le formulaire de connexion
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
    if ((isset($_POST['username']) && !empty($_POST['username'])) && (isset($_POST['password']) && !empty($_POST['password']))) {
     
     
    		  $dns = 'mysql:host=localhost;dbname=**';
    		  $utilisateur = '**';
    		  $motDePasse = '**';
     
    		  $username = $_POST['username'];
    		  $password = base64_encode(sha1($_POST['password']));
     
    			$_SESSION["password"]=$password;
    			$_SESSION["username"]=$username;
     
    			try {$connection = new PDO( $dns, $utilisateur, $motDePasse );}
    			catch (Exception $e) {die("L'accès à la base de donnée est impossible.");}
     
    			if(($_SESSION["password"] == "") or($_SESSION['username'] == "")) {
    			    echo "veuillez saisir un login et un mot de passe";
    			}
    			else {
    			    $sql = "SELECT COUNT(*) FROM carole WHERE login='".$_SESSION["password"]."' AND password='".$_SESSION["username"]."'";
    			    $stmt = $connection->query($sql)->fetch();
    			    if ($stmt['COUNT(*)'] == 1)
    			        header('Location:membre.php');
    			    elseif ($_SESSION['username'] == "admin" && $_SESSION['password']=="carole") {
    			    	header('Location:admin.php');
    			    }
    			    else {
    			    	header('Location:add_userform.php');
    			    }
    			}
    }
    }
    ?>
    je n'arrive pas à résoudre l'erreur :

    [15-Jan-2014 11:41:00 Europe/Berlin] PHP Fatal error: Call to a member function fetch() on a non-object in /Applications/MAMP/htdocs/carole/formulaire/auth.php on line 28

    Si quelqu'un peu m'aider !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/05/2008, 16h15
  2. [MySQL] connexion utilisateurs BDD
    Par fasyr dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/10/2007, 21h00
  3. Connexion Impossible a la BDD entre 2pc relié encâble croisé
    Par baba dans le forum Connexion aux bases de données
    Réponses: 8
    Dernier message: 20/02/2007, 23h40
  4. Réponses: 28
    Dernier message: 28/07/2005, 14h12

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