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 :

Checkbox cochée en fonction de la db


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 12
    Par défaut Checkbox cochée en fonction de la db
    Bonjour ,

    J'ai crée un système d'hobby pour mes utilisateurs , je souhaite afficher tout les hobby de ma db et coché que ceux que possède l'utilisateurs

    Voici ma requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT hobby.id as idhobby hobby.nom AS nomHobby FROM liaison1,hobby,membre WHERE id_membre = $affMembre->id AND id_hobby = hobby.id AND membre.id = id_membre;
    Ensuite j'effectue ceci pour afficher les donnée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><label><?php echo $affHobbyModif->nomHobby?></label><input type="checkbox" value="<?php echo $affHobbyModif->idhobby?>" <?php if($affcheck->id_membre == $affPreModif->id) {echo "checked='checked'";} ?>/></p>
    Quand je fais ceci ca m'affiche que les checkbox cochée et pas les autres .

    Merci pour votre aide .

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- La requête est mauvaise.

    Actuellement, tu as :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT hobby.id as idhobby hobby.nom AS nomHobby 
    FROM liaison1,hobby,membre 
    WHERE id_membre = $affMembre->id 
    AND id_hobby = hobby.id 
    AND membre.id = id_membre;

    Il est préférable d'utiliser les JOINTURES SQL :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT HH.id as idhobby HH.nom AS nomHobby 
    FROM hobby HH
    INNER JOIN liaison1 LL
      ON LL.id_hobby = HH.id
    INNER JOIN membre MM
      ON  LL.id_membre = MM.id
    WHERE LL.id_membre = $affMembre->id ;

    2- Bien faire la différence entre INNER JOIN et LEFT JOIN

    Dans ton cas, si on écrit "INNER JOIN...", alors on obtient le résultat que tu as : UNIQUEMENT CEUX qui ont un hobby d'enregistré.
    Pour "élargir" aux membres qui n'ont pas (encore) de hobby enregistré : "LEFT JOIN...".


    3- A priori, essaie :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT HH.id as idhobby HH.nom AS nomHobby 
    FROM hobby HH
    LEFT JOIN liaison1 LL
      ON LL.id_hobby = HH.id
    LEFT JOIN membre MM
      ON  LL.id_membre = MM.id
    WHERE LL.id_membre = $affMembre->id ;

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 12
    Par défaut Tester
    Bonjour ,

    Cela fonctionne mais ca n'affiche pas les hobby qui ne sont pas possédé par l'utilisateur , le but est que tous les hobby de la db s'affiche mais que ceux possédé soit coché .

  4. #4
    Invité
    Invité(e)
    Par défaut
    ...Cela fonctionne...
    Laquelle ??


    Il faut alors 2 requêtes.

    1- Toutes les checkbox :

    SELECT HH.id as idhobby HH.nom AS nomHobby
    FROM hobby HH;

    2- les checkbox cochées, pour un membre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT HH.id as idchecked
    FROM hobby HH
    INNER JOIN liaison1 LL
      ON LL.id_hobby = HH.id
    INNER JOIN membre MM
      ON  LL.id_membre = MM.id
    WHERE LL.id_membre = $affMembre->id ;
    La 1ère affiche toutes les checkbox, la 2ème coche celles qui le sont.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 12
    Par défaut Sur la bonne voie
    Merci pour ton aide , je suis sur la bonne voie , voici mon code entier :

    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
    <?php
    			$seltous ="SELECT hobby.id as idhobby, hobby.nom AS nomHobby 
    				FROM hobby;";
     
    			$exeseltous = mysqli_query($connect,$seltous);
     
    			$selHobbyModif = "SELECT hobby.id as idchecked,id_membre
    			FROM hobby
    			INNER JOIN liaison1
      			ON liaison1.id_hobby = hobby.id
    			INNER JOIN membre 
      			ON  liaison1.id_membre = membre.id
    			WHERE liaison1.id_membre = $affPreModif->id;
    			";
     
    			$exeHobbyModif = mysqli_query($connect,$selHobbyModif);
     
    			while($affHobbyModif = mysqli_fetch_object($exeseltous)) {
     
     
    		?>
     
    		<p><label><?php echo $affHobbyModif->nomHobby?></label><input type="checkbox" value="<?php echo $affHobbyModif->idhobby?>" <?php while($affhobcheck = mysqli_fetch_object($exeHobbyModif)) { echo "checked='checked'";} ?>/></p>
     
    		<?php
    		}
    		mysqli_free_result($exeHobbyModif);
     
    		?>
    Le problème est celui-ci à présent : j'ai 2 hobby dans ma db , bowling et piscine .

    l'utilisateur 1 à les 2 hobby
    l'utilisateur 2 à que bowling

    Pour l'utilisateur 1 , seul le bowling est coché et pas le piscine ...

    merci .

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bon.

    Au lieu de donner les infos au compte-goutte, merci d'expliquer ce que tu veux faire vraiment !

    • C'est une "fiche membre" (un seul membre) ?
    • C'est un "listing des membres" (tous) ?
    • $affPreModif->id sort d'où ?
    • ...

    ET AUSSI : AFFICHE les résultats de tes 2 requêtes !
    Il faut au moins que tu saches ce qu'ils contiennent pour comprendre comment les utiliser.

Discussions similaires

  1. Telecharger des fichiers en fonction des checkbox cochées
    Par simos dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/01/2009, 15h25
  2. Réponses: 0
    Dernier message: 13/01/2009, 11h47
  3. fonction qui calcule le nombre de checkbox cochés
    Par namstou3 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/10/2007, 13h55
  4. Réponses: 2
    Dernier message: 10/06/2007, 19h41
  5. fonction pour compter le nombre de checkbox coché ?
    Par Death83 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/09/2005, 11h28

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