Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1784 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Comment savoir quelle case sont cochées ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment savoir quelle case sont cochées ?

n°568140
Michrone
MVFLCQLEV
Posté le 16-11-2003 à 16:10:58  profilanswer
 

Bonjour,
 
Etant enièrement débuttant en php, ma question risque de paraitre simple (voir simpliste).
 
J'ai fait un query me renvoyant une liste de nom.  J'affiche cette liste dans une page(via un FORM), et à coté de chaque nom, je met une case à cocher.  en dessous se trouve un bouton 'supprimer'.
 
Lorsque l'on clique sur le bouton, ca doit supprimer les enregistrement qui sont coché.  
Ma question est la suivante:  Comment faire pour connaitre les élément coché ?
 
Mon query avec l'affichage du tableau(en résumé)
 
 

Code :
  1. ...
  2. <FORM ACTION="delete.php" METHOD=POST>
  3. ...
  4. <?
  5. while($row = mysql_fetch_array($result)){
  6.         echo $row['id'];
  7.   echo '<td><input name="evenement" type=checkbox value "0">';
  8.   }
  9. ?>
  10. <br>
  11. <center><input name="submit" type=submit value="Supprimer"></center>
  12. </FORM>


 
 
Un lien vers une page qui fait ça simplement devrait déjà m'aider largement.


Message édité par Michrone le 16-11-2003 à 16:13:10
mood
Publicité
Posté le 16-11-2003 à 16:10:58  profilanswer
 

n°568142
Hermes le ​Messager
Breton Quiétiste
Posté le 16-11-2003 à 16:13:56  profilanswer
 

Michrone a écrit :

Bonjour,
 
Etant enièrement débuttant en php, ma question risque de paraitre simple (voir simpliste).
 
J'ai fait un query me renvoyant une liste de nom.  J'affiche cette liste dans une page(via un FORM), et à coté de chaque nom, je met une case à cocher.  en dessous se trouve un bouton 'supprimer'.
 
Lorsque l'on clique sur le bonton, ca doit supprimer les enregistrement qui sont coché.  
Ma question est la suivante:  Comment faire pour connaitre les élément coché ?
 
Mon query avec l'affichage du tableau(en résumé)
 
 

Code :
  1. ...
  2. <FORM ACTION="delete.php" METHOD=POST>
  3. ...
  4. <?
  5. while($row = mysql_fetch_array($result)){
  6.              echo $row['id'];
  7.   echo '<td><input name="evenement" type=checkbox value "0">';
  8.   }
  9. ?>
  10. <br>
  11. <center><input name="submit" type=submit value="Supprimer"></center>
  12. </FORM>


 


 
Imaginons que tu aies 10 cases à cocher.
 
Elles ont pour name="case1", name="case2" etc...
 
Pour récupérer les valeurs, tu fais donc une boucle qui va lister la récupération de chaque $_POST[case1] $_POST[case2] etc...
 
Donc, tu vas devoir utiliser une variable dynamique. genre : ${"case".$i} ou $i représente le compteur dans ta boucle.

n°568143
Michrone
MVFLCQLEV
Posté le 16-11-2003 à 16:15:23  profilanswer
 

Ok.  J'avais essayer cela, mais j'obtenais toujours une erreur PHP.  J'ai dû mal m'y prendre.  

n°568147
Ayuget
R.oger
Posté le 16-11-2003 à 16:32:50  profilanswer
 

n'oublie pas que si une checkbox est cochée, la variable $_POST['caseX'] aura comme valeur "on". Sinon elle sera vide.

n°568150
Hermes le ​Messager
Breton Quiétiste
Posté le 16-11-2003 à 16:46:06  profilanswer
 

Ayuget a écrit :

n'oublie pas que si une checkbox est cochée, la variable $_POST['caseX'] aura comme valeur "on". Sinon elle sera vide.


 
elle aura surtout la valeur qu'il aura indiqué avec value...  :whistle:

n°568151
Michrone
MVFLCQLEV
Posté le 16-11-2003 à 16:48:44  profilanswer
 

Décidément, je pige rien..
Au moment de la cr&ation de mon tableau, j'ai donc ajouter ceci
 
$num = $row['id'];
echo '<td><input name=${"evenement".$num} type=checkbox value "0">';  
 
Je suppose que X case à cocher sont créées, et qu'elle s'appelle evenementX  (X représente un nombre)
 
Je ne connais pas ce nombre à l'avance.
 
Ensuite, quand je fais un
 
echo $_POST["evenement46"]; je reçois:
Notice: Undefined index: evenement46 in ...  
 
Je sais que l'élément 46 a dû être créer(puisque $row['id'] 46 existe)
 
Si je fais  
echo $evenement46;
Là, c'est  
Notice: Undefined variable: evenement46;
 

n°568152
Hermes le ​Messager
Breton Quiétiste
Posté le 16-11-2003 à 16:52:03  profilanswer
 

fais :
 
$a = "evenement"."$num";
$b = ${$a};
 
pour voir...

n°568153
Michrone
MVFLCQLEV
Posté le 16-11-2003 à 16:54:25  profilanswer
 

Pareil:
 
Undefined variable: evenement2
 
Pourtant, l'indice 2 est bien le dernier élément de mon tableau.
 


Message édité par Michrone le 16-11-2003 à 16:57:47
n°568160
omega2
Posté le 16-11-2003 à 17:24:41  profilanswer
 

Si c'est pas coché, il me semble que la case du tableau est pas créé.

n°568170
Ayuget
R.oger
Posté le 16-11-2003 à 17:43:56  profilanswer
 

Hermes le Messager a écrit :


 
elle aura surtout la valeur qu'il aura indiqué avec value...  :whistle:  


mouais :D

mood
Publicité
Posté le 16-11-2003 à 17:43:56  profilanswer
 

n°568209
mrbebert
Posté le 16-11-2003 à 18:27:13  profilanswer
 

Y a une "astuce" avec les cases à cocher.
Pour une case ayant le nom nom_case et la valeur value_case :
- si elle est cochée -> il existe un $_POST['nom_case'], qui a la valeur 'value_case'
- si elle n'est pas cochée, il n'y a rien
 
if (isset($_POST['nom_case'])) {
    echo "case cochée, avec la valeur " . $_POST['nom_case'];
} else {
    echo "la case n'était pas cochée";
}


Message édité par mrbebert le 16-11-2003 à 18:27:46
n°568233
Michrone
MVFLCQLEV
Posté le 16-11-2003 à 18:42:21  profilanswer
 

Rien à faire.
 
Visiblement, c'est à la création de ma variable que ça nje va pas.
 
Je dois donc créer x checkbox.
 
Il a l'air de le faire, mais quand j'essaie de "lire" leur valeur, il considère toujours qu'elles sont "pas cochée".
 
A mon avis, elles sont "pas cochées" parce qu'elles n'existent pas...
 
J'ai fait(entre autre)
 
echo '<td><input name=${"evenement".$num} type=checkbox value "0">';  
 
J'espèrais avoir  
 
evenment1
evenment2
evenement46
 
Mais apparement, ce n'est pas le cas.
 
Existe-til une possibilité pour voir ce qui est créé ?

n°568245
mrbebert
Posté le 16-11-2003 à 18:45:53  profilanswer
 

Déja, vérifie que le code HTML du formulaire est bon. (dans le navigateur, affichage->source)

n°568248
Hermes le ​Messager
Breton Quiétiste
Posté le 16-11-2003 à 18:46:23  profilanswer
 

Michrone a écrit :


 

Code :
  1. echo '<td><input name=${"evenement".$num} type=checkbox value "0">';


 


 
N'importe quoi franchement.  :pfff:  
 
 

Code :
  1. echo "<td><input name=\"".${"evenement".$num}."\" type=\"checkbox\"  value \"0\">";


 
Essayes ça déjà...

n°568254
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 16-11-2003 à 18:49:17  profilanswer
 

value=\"0\", non ? :??: Paske sans le =, j'sais pas si le browser va être hyper d'accord :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°568256
Michrone
MVFLCQLEV
Posté le 16-11-2003 à 18:49:25  profilanswer
 

J'avais dit que j'y connaissais rien...
Sinon, ça fait ça quand je tape ton code:
Notice: Undefined variable: evenement47
etc etc pour les autres numéros.
 
Ils doivent servirent à quoi les \ et "" que tu as ajouter ?


Message édité par Michrone le 16-11-2003 à 18:54:30
n°568259
Hermes le ​Messager
Breton Quiétiste
Posté le 16-11-2003 à 18:55:49  profilanswer
 

Version corrigée :
 
 

Code :
  1. $var_inter = "evenement"."$num";
  2. echo "<td><input name=\"".${$var_inter}."\" type=\"checkbox\"  value=\"0\">";


 
Et maintenant ?

n°568263
mrbebert
Posté le 16-11-2003 à 18:59:32  profilanswer
 

Tu as vérifié que le code HTML du formaulaire était bon ?
Ca ne sert à rien de tester la réception si le formulaire n'est pas correct [:proy]

n°568269
Hermes le ​Messager
Breton Quiétiste
Posté le 16-11-2003 à 19:02:26  profilanswer
 

Tiens oui d'ailleurs... Poste nous le code complet pour une fois, parce que je sens que sinon, demain on sera toujours là...

n°569166
Michrone
MVFLCQLEV
Posté le 17-11-2003 à 17:13:11  profilanswer
 

Voilà le code complet de la page:
 

Code :
  1. <HTML>
  2. <HEAD>
  3. <TITLE> Supprimer des anniversaires enregistrés </TITLE>
  4. </HEAD>
  5. <BODY>
  6. <FORM ACTION="delete.php" METHOD=POST>
  7. <?
  8.    include ( './include/mysql.inc.php' );
  9.    $link = mysql_connect ($host, $user, $pass) or die ('Erreur : ' . mysql_error());
  10.    mysql_select_db($db) or die ('Erreur :' . mysql_error());
  11.    $select = "SELECT id, event, naissance FROM  mich_anniversaire where specialevent = '0' ORDER BY naissance DESC";
  12.    $result = mysql_query($select, $link) or die ('Erreur SQL: ' . mysql_error());
  13.    $total = mysql_num_rows($result);
  14.    if ($total != 0){     
  15.       echo '<strong><font color="#CC0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">';
  16.   echo "Voici la liste des personnes qui sont inscrites dans la liste";
  17.   echo '</font></strong>';
  18.   echo '<br>';
  19.   echo '<br>';
  20.   echo '<font color="#CC0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">';
  21.   echo '<table width="50%" height="100%" border="2" cellpadding="1" cellspacing="1" bordercolor="#FF3300">';
  22.       while($row = mysql_fetch_array($result)){
  23.          $compteur = $row['id'];
  24.   $year  = substr($row['naissance'], 0, 4);
  25.   $month = substr($row['naissance'], 5, 2);
  26.          $day   = substr($row['naissance'], 8, 2);
  27.   $anniversaire = $day.'/'.$month.'/'.$year;
  28.   echo '<tr>';
  29.   echo '<td>';
  30.   echo '<font color="#CC0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">';
  31.          echo $row['id'];
  32.   echo '</font>';
  33.   echo '</td>';
  34.   echo '<td>';
  35.   echo '<font color="#CC0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">';
  36.          echo $row['event'];
  37.   echo '</font>';
  38.   echo '</td>';
  39.   echo '<td>';
  40.   echo '<font color="#CC0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">';
  41.   echo " est né le " .$anniversaire;
  42.   echo '</font>';
  43.   echo '</td>';
  44.   $num = $row['id'];
  45.   $var_inter = "evenement".$num;
  46.          echo "<td><input name=\"".${$var_inter}."\" type=\"checkbox\"  value=\"0\">";
  47.   echo '<br>';
  48.   echo '</td>';
  49.   echo '</tr>';
  50.   }
  51.   echo '</table>';
  52.    }
  53.    echo ;
  54.   
  55. ?>
  56. <br>
  57. <center><input name="submit" type=submit value="Supprimer"></center>
  58. </FORM>
  59. </body>
  60. </html>


 
Le formulaire est affiché correctement avec ce code.(enfin, en apparence, j'obtiens bien ce que je veux)


Message édité par Michrone le 17-11-2003 à 17:14:08
n°569356
Michrone
MVFLCQLEV
Posté le 17-11-2003 à 21:01:23  profilanswer
 

Personne ne sait ?

n°569400
noizing
milk it
Posté le 17-11-2003 à 22:31:24  profilanswer
 

Ayuget a écrit :

n'oublie pas que si une checkbox est cochée, la variable $_POST['caseX'] aura comme valeur "on". Sinon elle sera vide.


 
pour utiliser comme variable $_POST['caseX'] il faut que le php.ini  soit sur "off" dans register_globals  nan  :heink:  
 
parcque sur ovh par ex c'est "on" alors que quand t'installe easyphp 1.7 c'est sur "off"
 
combien ça ma fait perdre du temps ça  :fou:


Message édité par noizing le 17-11-2003 à 22:34:45
n°569409
omega2
Posté le 17-11-2003 à 22:37:38  profilanswer
 

noizing a écrit :


 
pour utiliser comme variable $_POST['caseX'] il faut que le php.ini  soit sur "off" dans register_globals  nan  :heink:  

Tu peux utiliser $_POST que ce soit on ou off, mais si c'est off, c'est le seul moyen (en dehors de $HTTP_POST_VARS) de récupérer les donné passé en post.

n°569514
impulse
Posté le 18-11-2003 à 10:01:01  profilanswer
 

Tu peux faire comme ça sinon =>
 

Code :
  1. ...
  2. if (!isset($_POST['id']))
  3. {
  4.     header('Location: validate.php');
  5.     exit;
  6. }
  7. foreach($_POST['id'] as $Id)
  8. {
  9.     ...
  10. }
  11. ...


 
et :
 

Code :
  1. ...
  2. <tr>
  3. <td class="validate"><input class="validate" type="checkbox" name="id[]" value="1" /></td>
  4. <td class="validate">Validate.jpg</td>
  5. </tr>
  6. <tr>
  7. <td class="validate"><input class="validate" type="checkbox" name="id[]" value="2" /></td>
  8. <td class="validate">ValidateAll.jpg</td>
  9. </tr>
  10. <tr>
  11. <td class="validate"><input class="validate" type="checkbox" name="id[]" value="3" /></td>
  12. <td class="validate">ValidateAllDisabled.jpg</td>
  13. </tr>
  14. ...


 
En gros tu donnes le meme nom a toutes tes checkboxes => checkbox_name[] et ensuite tu utilises un foreach pour recuperer toutes les values. Dans ton cas c'est surement plus pratique d'utiliser un array html pour recuperer ta liste de noms.

n°569549
Mara's dad
Yes I can !
Posté le 18-11-2003 à 10:57:27  profilanswer
 

+1, c'est comme çà qu'il faut faire avec les checkbox/radio !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°570128
Michrone
MVFLCQLEV
Posté le 18-11-2003 à 17:50:24  profilanswer
 

Ok, un grand merci.

n°570209
mrbebert
Posté le 18-11-2003 à 20:54:21  profilanswer
 

impulse a écrit :

...
 
En gros tu donnes le meme nom a toutes tes checkboxes => checkbox_name[] et ensuite tu utilises un foreach pour recuperer toutes les values. Dans ton cas c'est surement plus pratique d'utiliser un array html pour recuperer ta liste de noms.

intéressant :)  :jap:

n°570288
Michrone
MVFLCQLEV
Posté le 18-11-2003 à 22:58:22  profilanswer
 

Intéressant et surtout ça marche :-)

n°570290
mrbebert
Posté le 18-11-2003 à 22:58:50  profilanswer
 

Michrone a écrit :

Intéressant et surtout ça marche :-)

c'est un plus appréciable :lol:

n°570664
aspegic500​mg
Posté le 19-11-2003 à 13:12:43  profilanswer
 

mrBebert a écrit :

c'est un plus appréciable :lol:  


 
Surtout que quand le nombre de case à cocher n'est jamais le meme (formulaire généré dynamiquemen), ca doit etre une galere pas possible car le script de traitement du formulaire ne sait pas combien il doit tester de valeurs, alors qu'avec un tableau c tout bete :)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Comment savoir quelle case sont cochées ?

 

Sujets relatifs
une fonction pour savoir si un objet existe?[JS] savoir si qqchose saisi dans formulaire en quittant la page
Comment savoir si une cellule est protégée en VBA sous Excel2000?[PHP] Savoir combien de tps passe 1 visiteur sur le site
Savoir la taille en pixel que prendra un texte dans une police xSwitch et Case
afficher un texte dans une case selon le choix d'une listetout ce que vous avez toujours voulu savoir sur le CLASSPATH
[PHP] Comment faites vous pour savoir quel champ n'est pas renseigné ?[PHP] savoir si un champs est vide ou pas...
Plus de sujets relatifs à : Comment savoir quelle case sont cochées ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR