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 :

boucle while et mysql_fetch_array [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 15
    Points : 17
    Points
    17
    Par défaut boucle while et mysql_fetch_array
    Bonjour,

    je suis coincée depuis ce matin sur ce problème, j'ai beaucoup chercher mais j'ai rien trouver c'est pourquoi je viens vers vous pour demander de l'aide..

    j'ai 2 requêtes, une qui affiche tout les modules (result) et l'autre qui affiche les modules d'un utilisateurs spécifique (req4) ce que je veux faire avec ce code c'est afficher tout les modules et coché les modules de l'utilisateur choisis
    mais ce code affiche les modules de l'utilisateur choisi seulement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    while (($dataa=mysql_fetch_array($result)) && ($data4=mysql_fetch_array($req4)))
    {
      ?>
      <input class="inscri" type='checkbox' name='nommodule[]' value="<?php echo $dataa['nommodule']; ?>" <?php if( isset($_GET['login'])) {if ($data4['nommodule'] ==  $dataa['nommodule']) { ?> checked <?php } else{ ?> unchecked <?php }} ?> > <?php echo $dataa['nommodule']; ?>
      <?php
     
    } ?>
    une deuxieme question, je sais que je peux pas utilisé mysql_fetch_array 2 fois, mais je veux savoir comment faire pour afficher le résultat de la requête (req4) a l'intérieure et a l'extérieure de cette boucle while ?
    j’espère que j'ai été claire. Merci

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Déjà n'utilise pas des nommages comme "$dataa", ça ne veut rien dire.
    Ensuite travaille avec les id et pas avec les nom.

    Pour la performance, on n'imbrique pas des requêtes, et si tu veux réutiliser le résultat, il suffit de le stocker :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // On récolte tous les modules 
    while ($row=mysql_fetch_array($result_module)) {
       $tblModule[$row['idmodule']] = $row['nommodule'];
    }
     
    // On récolte tous les modules de l'utilisateur
    while ($row = mysql_fetch_array($result_utilisateur)) {
        $tblModule_User[] = $row['idmodule'];
    }
     
    foreach ($tblModule as $id=>$nom) {
         $checked = (in_array($id, $tblModule_User)) ? ' checked="checked" ' : '';
         echo '<input class="inscri" type="checkbox" name="nommodule[]" value="' . $id . '"' . $checked . '/>' . $nom;
    }
    Tout de même, l'extenstion mysql est obsolète, il faut passer à PDO.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Déjà n'utilise pas des nommages comme "$dataa", ça ne veut rien dire.
    Ensuite travaille avec les id et pas avec les nom.

    Pour la performance, on n'imbrique pas des requêtes, et si tu veux réutiliser le résultat, il suffit de le stocker :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // On récolte tous les modules 
    while ($row=mysql_fetch_array($result_module)) {
       $tblModule[$row['idmodule']] = $row['nommodule'];
    }
     
    // On récolte tous les modules de l'utilisateur
    while ($row = mysql_fetch_array($result_utilisateur)) {
        $tblModule_User[] = $row['idmodule'];
    }
     
    foreach ($tblModule as $id=>$nom) {
         $checked = (in_array($id, $tblModule_User)) ? ' checked="checked" ' : '';
         echo '<input class="inscri" type="checkbox" name="nommodule[]" value="' . $id . '"' . $checked . '/>' . $nom;
    }
    Tout de même, l'extenstion mysql est obsolète, il faut passer à PDO.
    Bonjour,

    Merci pour la réponse et le temps accordé..
    Pour les noms, je vais les changer c'est juste que sur ma page j'utilise beaucoup de requetes ce qui fais je manque d'inspiration pour choisir les noms
    et pour le code je l'ai essayé il m'affiche un seul module alors que j'ai 4 et c'est même pas le module module le l'utilisateur que je veux
    je vous montre mes 2 requêtes :
    Cette requete affiche tout les modules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $result = 'SELECT module.nommodule FROM module
      INNER JOIN societe ON module.idsociete = societe.idsociete
      where societe.nomsociete = "'.$_SESSION['nomsociete'].'"';
    Et cella affiche seulement les modules d'un utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$sql4 = 'SELECT users.nomusers, users.mdp, users.role, module.nommodule FROM users inner join usermodule on users.idusers=usermodule.idusers inner join module on usermodule.idmodule=module.idmodule WHERE mail="'.mysql_escape_string($_GET['login']).'"';
    Je veux afficher tout les modules, et coché les modules de l'utilisateur que j'ai choisi

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Il manque l'id du module dans les deux requêtes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Il manque l'id du module dans les deux requêtes.
    Ca marche maintenant, Merciiiiiiiii beaucoup

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

Discussions similaires

  1. 2 boucle while pour même mysql_fetch_array
    Par babali33 dans le forum Langage
    Réponses: 3
    Dernier message: 29/04/2009, 15h52
  2. [MySQL] gestion d'affichage entre deux boucle while mysql_fetch_array()
    Par tkwleboss dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/11/2007, 21h37
  3. [MySQL] mysql_fetch_array et boucle while
    Par Momodedf dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/08/2007, 16h30
  4. [MFC] Dialog dans une boucle while
    Par oxor3 dans le forum MFC
    Réponses: 5
    Dernier message: 23/04/2004, 22h51
  5. [débutant]Documentation? boucle "while"? Session?
    Par o151181 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 19/01/2004, 15h20

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