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 :

probléme de if et checkbox


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut probléme de if et checkbox
    Je desire recuper l'etat d'une checbox

    j'ai fais quelque recherche et j'ai pu voir que l'on pouvait recuperer l'etat comme ceci

    isset($_POST['$Software_id']) == true
    J'ai essayer de l'appliquer mais il y a quelque chose que je ne cmprends pas...

    mes valeurs de checkbox etant chargé de maniere automatique comment puis je voir si au moins une sont cochées...

    j'ai essayer comme ceci mais il ne rentre pas dans la boucle et pourtant une case est cochée.
    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
     
     
    <?
     if (isset($_POST['$Software_id']) == true)
     {
      foreach ($_POST["software_id"] as $Software_id2)
        {   
          // Connecxion au serveur mysql
          $connect=mysql_connect('localhost','root','') or die ("Erreur de connexion avec le serveur Mysql.");		
     
          // Connexion a la base de donnée : softlist
          mysql_select_db('softlist',$connect) or die ("Erreur de connexion a la base de donnée.");
     
          $reponse = mysql_query("SELECT Software, Description FROM t_software WHERE Software_id='$Software_id2'");
          $donnees = mysql_fetch_array($reponse);
          $Software = $donnees['Software'];
          $Description = $donnees['Description'];
     
          echo "$Software_id2,$Software,$Description<br>";	 
     
        }
       	echo getenv("HTTP_HOST");	
     }
     
     
    else echo "Veuillez coché au moins une checkbox svp" 	
    ?>
    merci[/code]

  2. #2
    Membre chevronné

    Inscrit en
    Octobre 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 363
    Par défaut
    la fonction isset() ne t'indique que si la variable existe, quelque soit sa valeur (0 ou 1) si il y a un élément avec ce nom dans ton formulaire ta condition sera toujours bonne.

    De plus il est inutile de spécifier == true, un simple if( isset($variable)) suffit puisque a fonction isset() renvoi true ou false.

    fais un print_r($_POST) pour verifier l'index des variables post que tu récupère pour ton traitement. Il y a ptet un $ en trop non?

  3. #3
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump('<pre>', $_POST["software_id"], '</pre>');
    te retourne quoi ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut
    il me retourne

    string(5) "
    "
    array(1) {
    [0]=>
    string(2) "10"
    }
    string(6) "
    "
    euh je comprends pas la....

  5. #5
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Et tu es sûr qu'il rentre pas dans la boucle ???

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut
    certain il me renvoye toujours le message :

    Veuillez coché au moins une checkbox svp

  7. #7
    Membre chevronné

    Inscrit en
    Octobre 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 363
    Par défaut
    Justement il y rentre jamais...

    fais un echo de $_POST['$Software_id'] pour voir si tu a bien un 1, et si tu a une erreur verifie l'intiotulé de ton index

  8. #8
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Tu as un problème ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isset($_POST['$Software_id'])
    => 1) tu utilises des quotes et ta variable $Software_id ne sera pas interpretée et 2) l'index du test isset n'est pas le meme que le foreach

    Pas bien reveillé moi ce matin...

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut
    ou je me doute que le problémes viens de la mais comment i remedier?

    comment faire pour voir si les checkbox sont cochées ou pas... c'etait ma premiere question

    merci

  10. #10
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Quel est le code html de tes checkbox ?

  11. #11
    Membre chevronné

    Inscrit en
    Octobre 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 363
    Par défaut
    à l'évidence ici le problème n'est pas de verifier si un checkbox est coché ou non puisque ca bloque avant.

    if (isset($_POST['$Software_id']) == true)

    y a un problème là dedans.

    D'ailleurs tu n'y test pas si la checbox est cochée mais si elle existe...

  12. #12
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Citation Envoyé par 10-nice
    D'ailleurs tu n'y test pas si la checbox est cochée mais si elle existe...
    Ca reviens au même. Exite == cochée. Existe pas == pas cochée.

  13. #13
    Membre chevronné

    Inscrit en
    Octobre 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 363
    Par défaut
    Ha bon ?

    Qu'elle soit checked ou pas la checkbox elle a un nom dans le formulaire et est bien envoyé avec toutes les variables post, ensuite suivant son état sur la page elle aura en valeur 1 ou 0.

    Donc le test effectué ici va dire si la checkbox est présente sur la page et non sa valeur.

  14. #14
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    non. Si elle n'est pas cochée le navigateur ne renverra pas la valeur. C'est comme les boutons submit. Si tu ne cliques pas dessus, ils ne sont pas envoyés, nommés ou pas.

    De plus la valeur reçues n'est pas forcément 1, par défaut c'est "on", et tu peux changer le comportement en fixant l'attribut value de l'input.

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut
    je dois mettre ceci alors ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (($_POST['$Software_id']) == true)
    jem'embrouille un peu avec les checked , esxiste existe pas

  16. #16
    Membre chevronné

    Inscrit en
    Octobre 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 363
    Par défaut
    Au temps pour moi Mr N.

    et ceci devrait suffir : if ( isset($_POST['$Software_id']))

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut
    je vous met le code complete peut etre que vous comprendrais mon cas

    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
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    <html>
     
    <head>
    <style>
    	<!-- 
    	.conteneur 
    	{
    	border-style: solid; 
    	border-width: 1px; 
    	border-color: #009933;
        }  
    .Style6 {color: #000000}
     
    	-->
    </style>
     
    </head>
    <body>
     
     
    <table class="conteneur" width="95%" align="center" cellpadding="1" cellspacing="1">
    <tr><td bgcolor="">
     
     <table width="100%" align="center">
    	<tr>
    		<td width="20%"><img src="logo.bmp" border="0"></td>
    		<td width="80%" colspan="3" class="conteneur"><center><font size="6" color="#000099">Software Installation</font></center></td>
    	</tr>
    	<tr class="conteneur">
    		<td width="100%" height="30" colspan="4"></td>
    	</tr>
     
    	<!-- Menu !-->
     
    	<tr>
            <td width="10%" class="conteneur"><center>Soft Id :</center></td> 	
    		<td width="15%" class="conteneur"><center>Programmes :</center></td>
    		<td width="70%" class="conteneur"><center>Description :</center></td>
    		<td width="5%" class="conteneur"><center>Selection :</center></td>
    	</tr>
     
    	<!-- Fin Menu !-->
     
    	<tr class="conteneur">
    		<td width="100%" height="30" colspan="4"></td>
    	</tr>
     
    	<!-- Liste Des Programmes !-->
     
    <form action="softlist.php" method="post">
     
    	<?
    // Connecxion au serveur mysql
    $connect=mysql_connect('localhost','root','') or die ("Erreur de connexion avec le serveur Mysql.");		
     
    // Connexion a la base de donnée : Softlist
    mysql_select_db('softlist',$connect) or die ("Erreur de connexion a la base de donnée.");
     
    $select="SELECT * FROM `t_software`";
    $resultat=mysql_query("$select;");
    $rang=mysql_num_rows($resultat);
     
    for ($i=0;$i<$rang;$i++)
    {
    $Software_id=mysql_result($resultat,$i,"Software_id"); 
    $Software=mysql_result($resultat,$i,"Software");
    $Description=mysql_result($resultat,$i,"Description");
     
    echo"  
    <tr> 
        <td width=10%><center>".($i+1)."</center></td> 
        <td width=15%><center>".$Software."</center></td>
    	<td width=70%><center>".$Description."</center></td>
    	<td width=5%><center><input type=checkbox name=software_id[] value=".$Software_id."></center><br></td>  
    	
    </tr>"
    ;}
     
    ?>	
     
     
     
    	<!-- Fin Liste Des Programmes !-->
     
    	<tr class="conteneur">
    		<td width="100%" height="20" colspan="4"></td>
    	</tr>
     
    	<!-- Bouton Sousmettre !-->
     
    	<tr>
    	    <td align="center" colspan="3" class="conteneur">Nom : &nbsp;&nbsp;&nbsp;<input type="text" title="indiquez ici votre nom" name="nom">&nbsp;&nbsp;&nbsp;Prenom :&nbsp;&nbsp;&nbsp;<input type="text" name="prenom" title="indiquez ici votre prenom">&nbsp;&nbsp;&nbsp;Numéro du pc :&nbsp;&nbsp;&nbsp;<input type="text" name="npc" title="indiquez ici votre numero de pc.Si vous ne le savez pas allez voir dans Start > Setting >Control Panel > system > Computer name. Et entrer le nom commencant par TERD + 7 chiffres."size="11" maxlength="11"></td>
    		<td align="center" colspan="1" class="conteneur"><input type="submit" value="Envoyer"></td>
     
    	</tr>
    	</form>					
    	<!-- Fin Bouton Sousmettre !-->
     
    	<tr class="conteneur">
    		<td width="100%" height="20" colspan="4"></td>
    	</tr>
     
    	<tr class="conteneur">
    		<td width="100%" height="20" colspan="4">
     
    <?
    if (isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['npc']) && $_POST['nom']!="" && $_POST['prenom']!="" && $_POST['npc']!="")
    {  
     $nom=$_POST['nom'];
     $prenom=$_POST['prenom'];	
     $npc=$_POST['npc'];   
     
     //if (($_POST['Software_id']) == true) 
     
      //{
         foreach ($_POST["software_id"] as $Software_id2)
          {   
           // Connecxion au serveur mysql
           $connect=mysql_connect('localhost','root','') or die ("Erreur de connexion avec le serveur Mysql.");		
     
           // Connexion a la base de donnée : softlist
           mysql_select_db('softlist',$connect) or die ("Erreur de connexion a la base de donnée.");
     
           $reponse = mysql_query("SELECT Software, Description FROM t_software WHERE Software_id='$Software_id2'");
           $donnees = mysql_fetch_array($reponse);
           $Software = $donnees['Software'];
           $Description = $donnees['Description'];
      	   $test= getenv("HTTP_HOST");	
           echo "$Software_id2,$Software,$Description<br>";	 
     
          }
          // liste des destinataires du message
         $adresse="mail"; 
     
         // titre du message : zone sujet
         $sujet="Demande de Software";
     
        // contenu du message
        $corps="$Software_id2,$Software,$Description \n si vous recevez ce message ... c'est que tout fonctionne bien "; 
     
       // Création de l'entête du message
       // cette entete contient l'email de l'expéditeur ainsi que l'email pour la réponse.
        $entete="$user";
     
       // envoi du mail
        mail ($adresse,$sujet,$corps,$entete);   
     
     // }
     
     // echo "<center><font size=3 color=Red><i>Veuillez coché au moins une checkbox.</i></font></center>";	
     
    }
      else
      echo "<center><font size=3 color=Red><i>Veuillez completer tous les champs avant d'envoyer votre demande.</i></font></center>";
     
      // Fermeture de la base de donnée
      mysql_close($connect);
     
     
    ?> 	 </td>
    	</tr>
     
    	<tr class="conteneur">
    		<td width="100%" height="20" colspan="4"></td>
    	</tr>
     
     
    	<!-- Info Webmaster !-->
     
    	<tr>
    		<td align="center" colspan="4" class="conteneur">© 2006  Update On 29 February 2006 By Webmaster</td>
     
    	</tr>
    </table>
     
     
    </td></tr>
    </table>  
    </body>	  
    </html>

  18. #18
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Citation Envoyé par Mr N.
    Quel est le code html de tes checkbox ?

  19. #19
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type=checkbox name=software_id[] value=".$Software_id.">
    Déjà il faut mettre des guillemets ou quotes (au choix, perso je préfère les premiers) autour de tes attributs en html =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='checkbox' name='software_id[]' value='".$Software_id."'>
    ensuite tu testes simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (isset($_POST['software_id']))  {
       foreach($_POST['software_id'] as $software_id) {
       ...
    EDIT: oublie du isset

  20. #20
    Membre chevronné Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Par défaut
    tex checkbox ont le nom
    dont tu dois tester l'existence de cette variable postée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isset($_POST['software_id'])
    sans le $

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/02/2008, 10h47
  2. Problème de choix avec checkBox STRUTS
    Par bobic dans le forum Struts 1
    Réponses: 1
    Dernier message: 14/08/2007, 16h27
  3. Problème avec label de checkBox persistant
    Par julien.63 dans le forum Flash
    Réponses: 1
    Dernier message: 26/07/2007, 15h08
  4. [Tableaux] problème de rechargement de checkbox
    Par mitch46000 dans le forum Langage
    Réponses: 4
    Dernier message: 24/05/2007, 15h07
  5. Problème simple avec des checkbox
    Par nanor21 dans le forum Langage
    Réponses: 2
    Dernier message: 07/05/2006, 00h26

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