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

Langage PHP Discussion :

garder la checkbox cochée


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut garder la checkbox cochée
    bonjour,

    j'ai une case a cochée qui est générèe automatiquement dans un champ de mon formulaire (tableau dynamique) et j(aimerai que quand cette case soit cochée ,elle le reste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="resolu[]" id="resolu" value=<?php echo $Resultat['NUM']; ?> />
    merci pour votre aide

  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
    Ou est enregistré le fait que la checkbox a été cochée ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    normalement c'est enregistree dans la base de donnée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(isset($_POST['resolu']) ){$resolu = "oui" ;}
    else{$resolu = "non" ;}
    $sql2=$pdo->prepare("UPDATE messages SET RESOLU =:resolu, LOGIN=:login where NUM= '".$Resultat['NUM']."'  " ) or die (print_r($pdo->errorinfo())) ;
    $sql2->execute(array(
        ':resolu'=>$resolu,
        ':login'=>$login
    )) ;

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

    1/ ...name="resolu[]"... : les [] font supposer que tu as plusieurs cases avec ce name.

    Auquel cas, je t'ai déjà expliqué que $_POST['resolu'] est un array() !
    Et qu'il contient les valeurs des cases COCHEES UNIQUEMENT.
    On utilisera alors :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(isset($_POST['resolu']) )
    {
       foreach($_POST['resolu'] as $casecochee)
       {
          ...

    Si tu n'as qu'une seule case, autant mettre ...name="resolu"... !


    2/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql2=$pdo->prepare("UPDATE messages SET RESOLU =:resolu, LOGIN=:login where NUM= '".$Resultat['NUM']."'  " ) or die (print_r($pdo->errorinfo())) ; 
    $sql2->execute(array( 
                         ':resolu'=>$resolu,
                         ':login'=>$login
    					                      )) ;
    Je t'ai AUSSI DEJA dit qu'il ne faut pas préparer une requête A MOITIE !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $sql2=$pdo->prepare("UPDATE messages SET RESOLU =:resolu, LOGIN=:login where NUM= :NUM  " ) or die (print_r($pdo->errorinfo())) ; 
    $sql2->execute(array( 
                         ':resolu'=>$resolu,
                         ':login'=>$login,
                         ':NUM'=>$Resultat['NUM']
    		)) ;
    Dernière modification par Invité ; 21/04/2015 à 20h17.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    j'ai une question car la éffectivement je ne comprends pas , quelle est la différence entre ces 2 écritures car pour moi novice c'est la même chose : NUM= '".$Resultat['NUM']."' et NUM= :NUM ':NUM'=>$Resultat['NUM'] ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Le fait de préparer la requête, et donc la sécuriser.

    Car ça évite les risques d'injection SQL.
    Si tu mets une variable (à fortiori un $_POST !!) directement dans la requête, le risque existe !

    Un autre avantage des requêtes préparées : elles peuvent servir plusieurs fois !

    Si tu as plusieurs SELECT/UPDATE/INSERT à faire, par exemple, avec des valeurs différentes :
    • UN SEUL prepare(...)
    • plusieurs execute(...)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    merci beaucoup pour cet eclaircissement,

  8. #8

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    une autre question dans mon input est ce que je peux rajouter du php pour que ma case reste cochée du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="resolu[]" id="resolu" value=<?php echo $Resultat['NUM']; if $casecochee=="oui"  {'checked="checked"'} ?> />

  10. #10
    Invité
    Invité(e)
    Par défaut
    Il manque des bouts de code :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="resolu[]" id="resolu" value="<?php echo $Resultat['NUM']; ?>"<?php if ($casecochee=="oui")  { echo ' checked="checked"'} ?> />

    Et comme je te l'ai dit, si tu n'as qu'une seule case, autant mettre : ...name="resolu"....

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    a chaque fois qu'un enregistrement s'ajoute, dans ma colonne RESOLU s'ajoute une checkbox.donc je suis bien dans ce cadre la name="resolu[]" non????

  12. #12
    Invité
    Invité(e)
    Par défaut
    A toi de nous expliquer dans quel contexte se trouve cet input !
    • dans une liste (tableau <table>) où on peut modifier plusieurs lignes (avec des NUM différents ?) ?

    Auquel cas, il vaudrait mieux écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="resolu[<?php echo $Resultat['NUM']; ?>]" id="resolu" value="oui"<?php if ($casecochee=="oui")  { echo ' checked="checked"'} ?> />
    Et récupérer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 
    if(isset($Resultat['resolu']))
    {
       // ici, le prepare(...)
       foreach( $Resultat['resolu'] as $NUM => $resolu)
       {
         // ici, execute(...) pour chaque case cochée récupérée
       }
    }

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    mon input se trouve dans une boucle while d'une table. pour moi quand je selectionne une checkbox elle agit en fonction de son enregistrement via son id (NUM)

    Code php : 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <?php
    while($Resultat =$sql->fetch())
     
    	 {
    	     $couleur="#FF0320" ; 
    	if (!empty($Resultat['COMMENTAIRES']) AND($Resultat['RESOLU']=="oui"))
     
    		          {
    		          $couleur="#03FF24"	;
    		          }
    		        elseif (!empty($Resultat['COMMENTAIRES']))
    		               {
    	                	$couleur="#FA9C05"	;
     
    	                    }
     
     
     ?>
    <tr>
    	<td style="background-color:<?php echo $couleur;?>"><?php echo $Resultat['NUM']; ?></td>
    	<td style="background-color:<?php echo $couleur;?>"><?php echo $Resultat['COMMENTAIRES']; ?></td>
    	<td style="background-color:<?php echo $couleur;?>"><a href="./images/<?php echo $Resultat['PIECES_JOINTES']; ?>".php?"><?php echo $Resultat['PIECES_JOINTES']; ?></a></td> 	
    	<td style="background-color:<?php echo $couleur;?>"><input type="checkbox" name="resolu[]" id="resolu" value=<?php echo $Resultat['NUM']; ?> /></td>	
       	<td style="background-color:<?php echo $couleur;?>"><?php echo $Resultat['LOGIN']; ?></td> 
     
    </tr>	
    <?php
    }
     
     
    if(isset($_POST['resolu']) )
    {
    	foreach($_POST['resolu'] as $casecochee)
    	{
    	$casecochee=="oui";
    	}     
     
    }
     
    $sql2=$pdo->prepare("UPDATE messages SET RESOLU =:resolu, LOGIN=:login where NUM=:NUM  " ) or die (print_r($pdo->errorinfo())) ; 
    $sql2->execute(array( 
                         ':resolu'=>$casecochee,
                         ':login'=>$login,
    		      ':NUM'=>$Resultat['NUM']
    					                      )) ;

  14. #14
    Invité
    Invité(e)
    Par défaut
    Où sont les balises <form ...>...</form> ??

    Si tu veux de meilleures réponses => donne de meilleures questions !!

    + améliore l'indentation !!

    + ne mélange pas "traitement " et "affichage" !

    Si tu veux que le visiteur VOIT le résultat de son choix, il faut faire le traitement AVANT l'afffichage.
    => Dans le cas où traitement et affichage se font sur la même page.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    voici le 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    <?php
    session_start();
    if(isset($_POST['Logout']))
    {
    unset($_SESSION['code']);
    }
    if(!isset($_SESSION['code']))
    {
    header("location:login.php")	;
    }
     
     
     
    require_once("connexionMysql.inc.php");
     
    $commentaires = ( !empty($_POST['commentaires'])) ? $_POST['commentaires'] : ''; 
    $sql=$pdo->query( "SELECT * FROM messages " );
     
    ?>
     
     
    <form name="form1" method="post" action="TEST.php">
     
    <table width="1200" border="1" cellspacing="1" cellpadding="8">
     
    <tr>
        <td BGCOLOR="#F8F8D0">Numéro</td>    	
    	<td BGCOLOR="#F8F8D0">Commentaires</td>
    	<td BGCOLOR="#F8F8D0">Pièces Jointes</td>	
    	<td BGCOLOR="#F8F8D0">Résolu</td>
    	<td BGCOLOR="#F8F8D0">Effectué par:</td>
     
    </tr>
    <?php
     
     
     while($Resultat =$sql->fetch())
     
    	 {
    	     $couleur="#FF0320" ; 
    	           if (!empty($Resultat['COMMENTAIRES']) AND($Resultat['RESOLU']=="oui"))
     
    		          {
    		          $couleur="#03FF24"	;
    		          }
    		        elseif (!empty($Resultat['COMMENTAIRES']))
    		               {
    	                	$couleur="#FA9C05"	;
     
    	                        }
     
     
     ?>
    <tr>
    	<td style="background-color:<?php echo $couleur;?>"><?php echo $Resultat['NUM']; ?></td>	
    	<td style="background-color:<?php echo $couleur;?>"><?php echo $Resultat['COMMENTAIRES']; ?></td>
    	<td style="background-color:<?php echo $couleur;?>"><a href="./images/<?php echo $Resultat['PIECES_JOINTES']; ?>".php?"><?php echo $Resultat['PIECES_JOINTES']; ?></a></td> 
     
    	<td style="background-color:<?php echo $couleur;?>"><input type="checkbox" name="resolu[<?php echo $Resultat['NUM']; ?>]" id="resolu" value="oui"<?php if ($resolu=="oui")  { echo ' checked="checked"';} ?> /></td>
     
       	<td style="background-color:<?php echo $couleur;?>"><?php echo $Resultat['LOGIN']; ?></td> 
     
    </tr>	
    <?php
          }
     
     
    if(isset($Resultat['RESOLU']) )
    {
    	foreach($Resultat['RESOLU'] as $NUM=> $resolu)
    	{
     
    	$resolu=="oui"  ;   
     
            }
    }
     
    $sql2=$pdo->prepare("UPDATE messages SET RESOLU =:resolu, LOGIN=:login where NUM=:NUM  " ) or die (print_r($pdo->errorinfo())) ; 
    $sql2->execute(array( 
                         ':resolu'=>$resolu,
                         ':login'=>$login,
    		      ':NUM'=>$Resultat['NUM']
    					                      )) ; 
     
     
     
    ?>
     
    </table>
    	<br/>
    	<p>
    	     <label>
                 <input type="submit" name="bouton"  value="Envoyer" />
                 </label>
    	</p>
    </form>

  16. #16
    Invité
    Invité(e)
    Par défaut
    Ne mélange pas les majuscules et minuscules...

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    en fait les champs de ma tables sont en majuscules et les inputs du formulaires sont en minuscules
    peux tu m'expliquer cette partie la?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($Resultat['RESOLU'] as $NUM=> $resolu)

  18. #18
    Invité
    Invité(e)
    Par défaut
    Revoyons le principe.

    Si ta page s'appelle "TEST.php", et que "formulaire et traitement sont sur cette page (ce qui est, à mon avis, une bonne chose) :

    1/ tu fais le traitement AVANT d'afficher le formulaire.
    Ce qui implique de tester si le formulaire a été soumis !
    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
    <?php
    // traitement ?
    if(isset($_POST['bouton'])) // (pas terrible, comme nom de submit !)
    {
       // Là, on traite si formulaire soumis
       // ..............
    }
    ?>
    <DOCTYPE .............>
    <html>
    .........
    <body>
    .........
    <!-- ICI, le formulaire ! -->
    <form name="form1" method="post" action="TEST.php">
     
    ...............
     
                 <input type="submit" name="bouton"  value="Envoyer" />
                 </label>
    	</p>
    </form>
     
     
    </body>
    </html>

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    ainsi cela serait plus adequat?

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    <?php
    session_start();
        if(isset($_POST['Logout']))
          {
           unset($_SESSION['code']);
          }
        if(!isset($_SESSION['code']))
          {
           header("location:login.php")	;
          }
     
     
     
    require_once("connexionMysql.inc.php");
     
    	$commentaires = ( !empty($_POST['commentaires'])) ? $_POST['commentaires'] : ''; 
            $sql=$pdo->query( "SELECT * FROM messages " );
     
     
     
    if(isset($Resultat['resolu']) )
    {
     
    	foreach($Resultat['resolu'] as $NUM=> $resolu)
    	{
     
    $sql2=$pdo->prepare("UPDATE messages SET RESOLU =:resolu, LOGIN=:login where NUM=:NUM  " ) or die (print_r($pdo->errorinfo())) ;  
    $sql2->execute(array( 
                         ':resolu'=>$Resolu,
                         ':login'=>$login,
    					 ':NUM'=>$Resultat['NUM']
    					                      )) ; 
     
     
        } 
    }	
     
    ?>
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
    </head>
     
    <body>
    <form  name="form1" method="post" action="TEST.php">
     
    <table width="1200" border="1" cellspacing="1" cellpadding="8">
     
        <tr>
            <td BGCOLOR="#F8F8D0">Numéro</td>    	
    	<td BGCOLOR="#F8F8D0">Commentaires</td>
    	<td BGCOLOR="#F8F8D0">Pièces Jointes</td>	
    	<td BGCOLOR="#F8F8D0">Résolu</td>
    	<td BGCOLOR="#F8F8D0">Effectué par:</td>
     
        </tr>
    <?php
     
     
     while($Resultat =$sql->fetch())
     
    	 {
    	     $couleur="#FF0320" ; 
    	           if (!empty($Resultat['COMMENTAIRES']) AND($Resultat['RESOLU']=="oui"))
     
    		          {
    		          $couleur="#03FF24"	;
    		          }
    		        elseif (!empty($Resultat['COMMENTAIRES']))
    		               {
    	                	$couleur="#FA9C05"	;
     
    	                        }
     
     
     ?>
        <tr>
    	<td style="background-color:<?php echo $couleur;?>"><?php echo $Resultat['NUM']; ?></td>	
    	<td style="background-color:<?php echo $couleur;?>"><?php echo $Resultat['COMMENTAIRES']; ?></td>
    	<td style="background-color:<?php echo $couleur;?>"><a href="./images/<?php echo $Resultat['PIECES_JOINTES']; ?>".php?"><?php echo $Resultat['PIECES_JOINTES']; ?></a></td> 
     
    	<td style="background-color:<?php echo $couleur;?>"><input type="checkbox" name="resolu[<?php echo $Resultat['NUM']; ?>]" id="resolu" value="oui"<?php if ($resolu=="oui")  { echo ' checked="checked"';} ?> /></td>
     
       	<td style="background-color:<?php echo $couleur;?>"><?php echo $Resultat['LOGIN']; ?></td> 
     
       </tr>	
    <?php
          }
     
    ?>
     
    </table>
    	<br/>
    	<p>
    	     <label>
                 <input type="submit" name="bouton"  value="Envoyer" />
                 </label>
    	</p>
    </form>
    </body>
    </html>

  20. #20
    Invité
    Invité(e)
    Par défaut
    ???

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. checkbox garder la case cochée après validation
    Par laurentbatch dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 08/08/2013, 19h37
  2. [XL-2003] Garder CheckBox coché après unload d'userform
    Par Invité(e) dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/12/2009, 15h20
  3. garder des checkbox cochés lorsque l'on change de page
    Par barouz dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 29/06/2007, 17h21
  4. Réponses: 9
    Dernier message: 12/01/2005, 17h00
  5. [XML][XSL]afficher une checkbox cochée
    Par kirk80 dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/09/2004, 17h49

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