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

  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

  7. #7
    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 a peu près ce que j'avais réussi a faire mais

    Je comprend pas ou placer le while

    Car je peux pas changer le foreach ($reponse4 AS $donnees2)

    Si je place le while dedans, il veut pas car pas assez de row

    Si je le place autre part, j'ai "Undefined variable: tblChecked" et "in_array() expects parameter 2 to be array" sur le if

  8. #8
    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
    Il faut le mettre avant.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    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
    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
    		<form method="post" name="formre" id="formre" >
    		<p>
    <?php		
    		while ($row = $reponse5->fetch()) 
    			{
    			$tblChecked[] = $row['Id_R'];
    			}
    		foreach ($reponse4 AS $donnees2)	
    			{
    			$check = "";
    			if (in_array($donnees2['Id_R'], $tblChecked))
    				{
    				$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>
    Comme ça donc ? car là j'ai " Undefined variable: tblChecked" et " in_array() expects parameter 2 to be array"

    Même en le mettant juste après la requête sql

  10. #10
    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
    ou est la requete qui correspond $reponse5 ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $reponse5 = $bdd->prepare('
    		Select dbo.Copie.Id_Ins, dbo.Copie.Id_E, dbo.Copie.Id_Q, dbo.Copie.Id_R
    		FROM dbo.Copie
    		Where dbo.Copie.Id_Ins = :idins
    		AND dbo.Copie.Id_Q = :idq
    		');
    $reponse5->execute(array(
    		'idins' => session_id(),
    		'idq' => $_POST['subqu'],
    		));
    Au début de la page ou se trouve le formulaire

  12. #12
    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
    Le while va juste en dessous.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    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 ce que j'avais directement fais, mais idem, "Undefined variable: tblChecked" et " in_array() expects parameter 2 to be array"

  14. #14
    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
    Debug en faisant preuve de logique : si tblChecked ne se remplit pas c'est que le fetch ne recolte rien et donc que la requete soit ne retourne rien soit ne fonctionne pas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    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
    En fait c'est ce que je m'étais dis

    "comment la variable peut retourner un résultat si la requête est vide"

    Du coup j'avais mis un id fixe et enregistré des id pour que la requête retourne quelque chose

    Mais.. je me suis trompé dans l'id.

    Donc je cherchais pour rien (il est tard je pense)

    Effectivement ça marche, j'ai plus qu'à faire des isset pour les erreurs

    Merci beaucoup pour ta vitesse de réponse et le suivi du problème !

    EDIT : pas des isset sinon le in_array va pas aimer

+ 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