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 checked si l'id est dans la base [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Par défaut Checkbox checked si l'id est dans la base
    Bonsoir,

    J'ai un menu déroulant qui offre plusieurs choix qui amènent des checkbox ou radio

    Si on coche quelque chose, puis qu'on change de choix dans le menu, les id des checkbox/radio sont enregistrés dans la base (via Jquery et sql)

    Maintenant j'aimerais que quand on reviennent sur un choix, les cases soit déjà cochées si l'id est dans la base

    Ça fonctionne bien pour les radio, mais pour les checkbox, si plusieurs id on été choisis, ça n'affichera cochée que le premier de ces id (si on en coche trois, seul le premier s'affichera

    Je me demande donc ou est-ce que je me suis trompé ?

    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
    		<form method="post" name="formre" id="formre" >
    		<p>
    <?php		
    		foreach ($reponse4 AS $donnees2)	
    			{
    			$check = "";
    			if ($donnees3['Id_R'] == $donnees2['Id_R'])
    				{
    				$check ="checked='checked'";
    				}
    ?>			
    				<input type="checkbox" name="rep[]" id="<?php echo $donnees2['Id_R'] ?>" <?php echo $check ?> /><label for="<?php echo $donnees2['Id_R'] ?>"><?php echo $donnees2['Libelle'] ?></label> <?php echo $donnees2['Id_R'] ?><br />
    <?php			
    				}
    ?>
    		</p>
    		</form>
    donneesX et reponseX sont des requêtes sql..

    Je ne comprend pas pourquoi, une seule case est cochée lorsque ce sont des checkbox, le foreach devrait fonctionner non ?

  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
    Tu ne fais la comparaison qu'avec $donnees3['Id_R'].
    Tu peux mettre tout tes Id cochés dans un tableau et faire le test avec in_array().
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Par défaut
    Salut, merci de ta réponse

    $donnees3 est le résultat d'un $donnees3 = $reponse5->fetch();

    $reponse5 étant le résultat d'une requête sql listant tout les id correspondant dans la base

    Ce n'est pas la bonne méthode ?

  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
    fetch() ne donne qu'un seul enregistrement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Par défaut
    C'est pour ça que je l'ai placé dans une boucle

    Mais puisque visiblement ça ne marchera pas comme ça

    Pourrais tu m'expliquer comment utiliser le in_array() ?

    Tu peux mettre tout tes Id cochés dans un tableau et faire le test avec in_array().
    Je dois mettre le résultat de la requête sql qui cherche les id cochés dans un tableau

    Puis utiliser in_array() a la place de if ($donnees3['Id_R'] == $donnees2['Id_R']) ?

    Je suis pas sur d'avoir bien compris

  6. #6
    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 collectes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ($row = $reponse5->fetch()) {
       $tblChecked[] = $row['Id_R'];
    }
    Pour vérifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (in_array($donnees2['Id_R'], $tblChecked))
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. afficher une photo dont le chemin est dans la base de donné
    Par mvc_dev dans le forum ASP.NET MVC
    Réponses: 2
    Dernier message: 09/03/2011, 16h44
  2. Réponses: 4
    Dernier message: 04/08/2010, 14h15
  3. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  4. Checkbox checked dans l'évènement MouseDown
    Par abbd dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/06/2008, 09h53
  5. voir comment est alimentée une vue qui est dans dba_objects
    Par meufeu dans le forum Administration
    Réponses: 15
    Dernier message: 06/10/2004, 17h27

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