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 :

[SQL] Résultat d'une requête SQL dans un tableau php et boucle while sur ce tableau


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut [SQL] Résultat d'une requête SQL dans un tableau php et boucle while sur ce tableau
    Voila je vous mets 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
    24
    $sql="SELECT `nom_CDS` FROM `chef_de_service`" or die (mysql_error());
    $resultat=mysql_query($sql);
    $use = mysql_fetch_assoc($resultat);//on stock la liste des nom de chef de service dans un tableau
    		
    $i=0;
    while($user != $use[$i])) // on vérifie si le nom d'utilisateur entré est présent dans notre tableau
    	{
    	$i=$i+1;
    	}
    	if ($user = $use[$i])
    		{
    		$j=0;
    		$sql2='SELECT Mot_de_passe FROM chef_de_service WHERE nom_CDS = '.$user.''or die (mysql_error());	
    			$resultat2=mysql_query($sql); 
    			$mdp = mysql_fetch_assoc($resultat2); //on stock le mot de passe correspondant à l'utilisateur si celui-ci existe.
    			while($mot_de_passe != $mdp[$j])
    			{
    			$j=$j+1;
    			}
    			if ($mot_de_passe = $mdp[$j])
    			{// si le nom d'utilisateur et le mot sont bons, on affiche la page cachée
    				?>
    etc...

    Au fait j'ai un formulaire d'identification ou l'utilisateur doit entré son nom et son mot de passe pour pouvoir accéder aux pages suivantes. Je récupère donc la saisie de l'utilisateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $user = $_POST['user'];
        $mot_de_passe = $_POST['mot_de_passe'];
    et je veux vérifier s'il est présent dans la base et de même pour le mot de passe. J'ai fait ce code mais il ne marche pas !! Pouvez-vous m'aidez svp ??

    Voici l'erreur trouvé:
    Parse error: parse error in u:\pc\Lisa_Lovna\site php\new 3.php on line 25
    A savoir que la ligne 25 est la ligne de mon while
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while($user != $use[$i])) // on vérifie si le nom d'utilisateur entré est présent dans notre tableau

  2. #2
    Membre averti Avatar de Asmodean
    Profil pro
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Points : 378
    Points
    378
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $use = mysql_fetch_assoc($resultat);
    renvoie les résultats de la requête un par un. Si tu veux vraiment un tableau il faut donc soit faire une boucle dessus genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while( $use[] = mysql_fetch_assoc($resultat))
    A moins qu'il esite une fonction pour tout récupérer dans un tableau je ne la connait pas.
    Such is the situation in our Fallen Galaxy

  3. #3
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Pour le parse error : tu as mis une parenthese en trop a la fin de ta ligne (tu en ouvres une pour le while et en fermes 2).

    Et pour compléter ce que dit Asmodean, ton mysql_fetch_assoc() te retourne la première ligne de ton résultat sous forme d'un tableau associatif. Dans ton cas, ca te retournera un tableau associatif avec une seule clé : Nom_CDS.
    donc tu fais ca

    Citation Envoyé par Asmodean
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while( $use[] = mysql_fetch_assoc($resultat))
    et après tu récupère le nom du chef de service dans

  4. #4
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while( $use[] = mysql_fetch_assoc($resultat))
    Cette ligne permet de créer un tableau use[] avec tous les resultats de ma requête ?
    Que dois-je mettre dans le while ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while( $use[] = mysql_fetch_assoc($resultat))
                     {
    
                 je dois mettre quelque-chose ici                 
                    
                     }
    Parce-que je dois comparé chaque élement du tableau avec la donnée du formulaire, c'est à dire avec $user car $user = $_POST['user'];


    Je reste encore dans le flou
    Merci pour vos réponses.

  5. #5
    Membre averti Avatar de Asmodean
    Profil pro
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Points : 378
    Points
    378
    Par défaut
    Normalement juste le while permet de rentrer tous les résultats de la requête dans un tableau. Et il n'y a rien à mettre dans le while.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while( $use[] = mysql_fetch_assoc($resultat));
    (ne pas oublier le ; à la fin)
    Such is the situation in our Fallen Galaxy

  6. #6
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par Asmodean
    Normalement juste le while permet de rentrer tous les résultats de la requête dans un tableau. Et il n'y a rien à mettre dans le while.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while( $use[] = mysql_fetch_assoc($resultat));
    (ne pas oublier le ; à la fin)

    Ok donc grace à cette ligne de code j'obtiens un tableau $use[] avec le resultat de ma requête. Déjà une chose de faite merci!

    Maintenant j'aimerais comparé chacune des données présentes dans le tableau avec la donnée entrée dans le formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	$i=0;
    	while($user != $use[i]) // on vérifie si le nom d'utilisateur entré est présent dans notre tableau
    		{
    		$i=$i+1;
    		}
    		if ($user = $use[$i]) // c'est à dire que l'élement à été trouvé
    			{
                                           . . . 
                                           }
                              else // la donnée n'a pas été trouvé dans le résultat de la requête
                                   {
     
                                   }
    Le code ci dessus convient-il ou non ?

  7. #7
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Quel est l'intérêt de mettre l'ensemble des résultats dans un tableau puis de reparcourir ce tableau pour faire des tests Autant faire les tests lors du bouclage sur mysql_fetch_assoc...

    Pour savoir si le nom existe en bas il faut que tu fasses directement ta requête avec le nom en filtre, si ta requête renvoie un enregistrement le nom existe sinon il n'existe pas. Pas besoin de charger toute la table et de comparer les enregistrements un par un...
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  8. #8
    Membre averti Avatar de Asmodean
    Profil pro
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Points : 378
    Points
    378
    Par défaut
    Ca me parait correct... Mais dans la requête ca aurait été aussi bien en fait.

    Sinon attention a bien utilisé $i dans ton while et non $use[i].

    Mais sinon si $use est bien un tableau a une dimension il existe la fonction in_array qui marche comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if( in_array($use,"Mon chef de service") ) ...
    Such is the situation in our Fallen Galaxy

  9. #9
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Merci Amara pour ta réponse mais je ne vois pas comment faire!
    Je suis nooby dans le php et donc je ne comprends pas trop le terme filtre etc... Pourrait-tu me dire la méthode à adopté?
    Merci beaucoup

  10. #10
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par Asmodean
    Ca me parait correct... Mais dans la requête ca aurait été aussi bien en fait.

    Sinon attention a bien utilisé $i dans ton while et non $use[i].

    Mais sinon si $use est bien un tableau a une dimension il existe la fonction in_array qui marche comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if( in_array($use,"Mon chef de service") ) ...
    Sachant que $user = $_POST['user']; le code serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (in_array($use,$user ))

  11. #11
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Je reformule ma question pour Amara car je pense que je ne m'exprime pas clairement du tout

    Comment faire pour voir si la donnée du formulaire est présente dans le resultat de ma requête SQL sans passé par un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="SELECT `nom_CDS` FROM `chef_de_service`" or die (mysql_error());
    ??

    Je pense que c'est assez simple mais je bloque depuis un moment! Je n'arrive pas à voir apres une requete si une donnée appartient a ma base ou non.
    Merci encore !

  12. #12
    Membre averti Avatar de Asmodean
    Profil pro
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Points : 378
    Points
    378
    Par défaut
    Voilà...

    Mais comme l'a dit Amara avec le SQL ca serait plus simple.

    Tu as juste a faire une requet du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql="SELECT `nom_CDS` FROM `chef_de_service` WHERE nom_CDS='$user'" or die (mysql_error());
    Et après avoir exécuté ta requête tu dois faire un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if( mysql_fetch_array($resultat) )
    {
    //alors il est dedans
    }
    Such is the situation in our Fallen Galaxy

  13. #13
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Merci Asmodean pour l'idée je vois tout à fait ce que tu veux dire! Je vais test ca de suite et si ca marche un grand grand merci à vous ! Et un grand merci pour l'aide apporté je vous redis ca dans 2 minutes.

  14. #14
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par Asmodean
    Voilà...

    Mais comme l'a dit Amara avec le SQL ca serait plus simple.

    Tu as juste a faire une requet du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql="SELECT `nom_CDS` FROM `chef_de_service` WHERE nom_CDS='$user'" or die (mysql_error());
    Et après avoir exécuté ta requête tu dois faire un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if( mysql_fetch_array($resultat) )
    {
    //alors il est dedans
    }
    Je n'ai donc plus besoin du While() !!
    Ca fait plaisir si ca marche !!

  15. #15
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    MERCI !!!!!!!!!!!!!!!
    Je sais pas quoi vous dire, depuis ce matin je suis dessus et en quelques minutes vous trouvez tout ! Heureux de faire partis du forum et de rencontrer des personnes comme vous!

    Merci encore!!

  16. #16
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Asmodean a bien expliqué ce que je voulais dire avec mon histoire de filtre.

    Il y a encore plus clean c'est d'utiliser mysql_num_rows une fois la requête exécutée (au lieu de faire un test sur mysql_fetch_array). Si ça retourne 0 c'est que aucun enregistrement ne correspond à la requête, donc le nom n'existe pas.

    Bon courage pour la suite.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

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

Discussions similaires

  1. Insérer le résultat d'une requête Oracle dans une table MS SQL
    Par Ninjazz dans le forum Accès aux données
    Réponses: 1
    Dernier message: 20/03/2007, 10h32
  2. [SQL-VBA] récupérer le résultat d'une requète SQL dans un fichier txt
    Par djidanestribbal dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 13/02/2007, 16h25
  3. [MySQL] Comparer dans un if le résultat d'une requête sql
    Par ledu_alexandre dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/01/2007, 05h24
  4. Réponses: 10
    Dernier message: 04/01/2007, 15h32
  5. récupérer le résultat d'une requête sql dans un edit
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/07/2005, 15h07

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