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 :

Probleme dans mysql_fetch_array()


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 233
    Par défaut Probleme dans mysql_fetch_array()
    Salut,

    je veux creer une page d'authentification avec php/mysql,tout d'abord voila le 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
    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
    70
    71
    72
     
    <?php
    session_start();
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Identification</title>
    </head>
     <?php
     /* Paramètres de configuration et de connexion à la base de données.
     * À personnaliser
     */
    $host='127.0.0.1';
    $user='root';
    $pass='';
    $db='impression';
     
    /* Connexion à la base de données. */
    if ( !mysql_connect($host, $user, $pass) ) {
    	$retour=FALSE;
    } else {
    	$retour = TRUE;
    }
    if ( !mysql_select_db ($db) ) {
    	exit ( 'Impossible de sélectionner la base' . $db);
    }
     
     
    if(isset($_POST['envoyer']))
    {
    if($_POST && !empty($_POST['login']) && !empty($_POST['pass1']))
    {
     
     
    $con="select login,pass1 from client";
    mysql_query($con);
    $rqt3=mysql_fetch_array($con);
    $login = mysql_real_escape_string(htmlspecialchars($_POST['login']));
    $pass1 = mysql_real_escape_string(htmlspecialchars($_POST['pass1']));
    $logi =$rqt3['login'];
    $pas=$rqt3['pass'] ;
     
     
        if(($logi == $login) && ( $pass1 == $pas))
        {
     
            $_SESSION['_pass1'] = $pass1;
    	//echo "<p>connexion valide</p>";
    	echo "<script >document.location.replace(\"accueil.php\" );
            </script> ";
    	$testt=1;
    	}
    		else
    			$testt=2;
    			echo "<script >alert(\"Login et/ou mot de pass incorrecte\")</script> ";
    	//echo '<p style="color:red">Mauvais login ou mot de passe</p>';
    	include("main.php");
            exit();
    }
    else
    echo "<script >alert(\"Veuillez remplir leschamps!!\")</script> ";
    //echo '<p style="color:red">Veuillez remplir les champs!!</p>';
     include("accueil.php");
            exit();
    }
    ?>
    <body>
    </body>
    </html>
    et quand je remplie le login et le mot de passe pour s'identifier,voila l'erreur qui m'affiche :
    Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in C:\EasyPHP-5.3.2i\www\site-impression\index.php on line 39 et en plus d'un fenetre m'indiquant que le login et le mot de passe est incorrect

    Alors ou est le probleme?

    et merci a vos reponses

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Par défaut
    C'est normal tu envoie ta requête dans ton mysql_fetch_array().
    Il faut que tu lui passe le résultat de mysql_query()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $conn = "SELECT ...";
    $result = mysql_query($conn);
    $rqt3 = mysql_fetch_aray($result);
    par contre si tu es sur que le résultat de ta requête ne renvoi qu'un enregistrement, un mysql_fetch_row() serait surement plus approprié.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 233
    Par défaut
    Merci pour ta reponse et maintenant a produit un autre erreur c 'est qu'il m'affiche aucun erreur mais la fenetre me dit que le login et le mot de passe est incorrect alors j'ai fais mysql_fetch_row au lieu de mysql_fetch_array comme vous m'avez dis mais maintenant m'a affiche d'autres erreurs le voici:

    Notice: Undefined index: login in C:\EasyPHP-5.3.2i\www\site-impression\identification.php on line 42

    Notice: Undefined index: pass1 in C:\EasyPHP-5.3.2i\www\site-impression\identification.php on line 43



    Donc ou est le probleme?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Par défaut
    Pour commencer si tu utilie mysql_fetch_row() au lieu de mysql_fetch_array() il te faut changer la récupération de tes données en base. mysql_fetch_row() retourne un tableau indexé numériquement.

    Un peu de code pour te montrer :

    Au lieu de faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $rqt3 = mysql_fetch_row($result);
    $logi = $rqt3['login'];
    $pas = $rqt3['pass'];
    il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $rqt3 = mysql_fetch_row($result);
    $logi = $rqt3[0];
    $pas = $rqt3[1];
    Si ça ne supprime tes erreurs, essaie d'afficher le contenu de tes variables pour voir si elles sont bien renseignées avec les bonnes valeurs.

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,
    Tu peux utiliser mysql_fetch_array mais le problème vient du fait que dans ta requête select tu récupères la colonne "pass1" et ensuite tu tentes de le récupérer le résultat dans le tableau avec "pass".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $con="select login,pass1 from client";
    $result=mysql_query($con);
    $rqt3=mysql_fetch_array($result);
    $logi =$rqt3['login'];
    $pas=$rqt3['pass1'] ;
    Tu dois seulement utiliser le même nom que la colonne de la table (pass ou pass1) dans la requête et la récupération $rqt3.
    Mais en voyant ce que tu veux faire, tu dois comparer directement les valeurs postés avec ceux de la base dans la requête.

    A+.

  6. #6
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Il n'y a théoriquement pas besoin de récupérer les login/pass dans la base de donnée pour faire des comparaison plus loin, il est bien plus simple de vérifier directement leur existance dans la Bdd :

    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
     
    if (isset($_POST['envoyer'], $_POST['login'], $_POST['pass1']) && !empty($_POST['login']) && !empty($_POST['pass1'])) {
        $query = "SELECT COUNT(*) AS total FROM client WHERE login = '".$_POST['login']."' AND pass1 = '".$_POST['pass1']."'";
        $rs_total = mysql_query($query) or die('Erreur : '.mysql_error());
        $total = mysql_fetch_array($rs_total);
     
        if ((int)$total['total'] > 0) {
            // Ok
        }
        else {
            // Erreur : login ou pass incorrecte
        }
    }
    else {
        // Erreur (veuillez saisir un login/pass)
    }

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

Discussions similaires

  1. Probleme dans request.QueryString("chaine")
    Par soufienne dans le forum ASP
    Réponses: 8
    Dernier message: 24/08/2004, 14h49
  2. Probleme dans une procedure stockée
    Par malbaladejo dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 07/07/2004, 14h08
  3. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51
  4. Probleme dans une clause like !
    Par adil dans le forum Langage SQL
    Réponses: 6
    Dernier message: 15/07/2003, 16h47
  5. Probleme dans ma requete
    Par Kuroro dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/07/2003, 11h14

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