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

  FORUM HardWare.fr
  Programmation
  PHP

  resultats checkbox indexées [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

resultats checkbox indexées [résolu]

n°799460
boulax
Inserer phrase hype en anglais
Posté le 19-07-2004 à 11:58:30  profilanswer
 

voila je retrouve plus un vieu post on l'on m'apprenait que l'on pouvait indexer des champs d'un formulaire en html pour récupérer les valeurs dans un tableau php.

Code :
  1. <input type="text" name="nom[]" value="julien"/>
  2. <input type="text" name="nom[]" value="marie"/>
  3. <input type="text" name="nom[]" value="julie"/>
  4. <?
  5.      print_r($_POST["nom"])
  6. /*
  7.      $_POST["nom"][0] => "julien"
  8.      $_POST["nom"][1] => "marie"
  9.      $_POST["nom"][2] => "julie"
  10. */
  11. ?>


J'aime bien ce concept, c'est pratique. Seulement j'ai constaté un problème assez génant lorsque j'ai des checkbox, quelque soit la case cochée, le tableau récupéré met à "on" la premiere checkbox :??:
 
C'est a dire que si je fais:

Code :
  1. for ( $i=0; $i < count($_POST["checktruc"]); $i++ )
  2. {
  3.         if ( $_POST["checktruc"][$i] == "on" ) // case cochée
  4.         {
  5.                //traitement
  6.         }
  7. }


 
- 0 cases cochées : ok
- 1 case cochée : "on" est sur la case d'indice 0
- N case cochées : idem
 
C'est moi qui débloque ou bien :heink:


Message édité par boulax le 19-07-2004 à 15:10:47

---------------
Posté depuis des chiottes, sales. Me gusta.
mood
Publicité
Posté le 19-07-2004 à 11:58:30  profilanswer
 

n°799463
simogeo
j'ai jamais tué de chats, ...
Posté le 19-07-2004 à 12:01:48  profilanswer
 

ca vient d'ou ce on ? [:mlc]
 
 

Code :
  1. for ( $i=0; $i < count($_POST["checktruc"]); $i++ )
  2.   {
  3.             if ( $_POST["checktruc"][$i] === true ) // case cochée
  4.             {
  5.                      //traitement
  6.             }
  7.   }


 


Message édité par simogeo le 19-07-2004 à 12:02:09

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°799484
boulax
Inserer phrase hype en anglais
Posté le 19-07-2004 à 12:11:44  profilanswer
 

simogeo a écrit :

ca vient d'ou ce on ? [:mlc]
 
 

Code :
  1. for ( $i=0; $i < count($_POST["checktruc"]); $i++ )
  2.   {
  3.             if ( $_POST["checktruc"][$i] === true ) // case cochée
  4.             {
  5.                      //traitement
  6.             }
  7.   }



 
bah "on" c'est ce que m'affiche  un echo $_POST["checktruc"][$i]; d'une case cochée.... J'ai essayée ta syntaxe, il n'entre pas dans la condition quelque soit le nombre de cases cochées ....


---------------
Posté depuis des chiottes, sales. Me gusta.
n°799497
boulax
Inserer phrase hype en anglais
Posté le 19-07-2004 à 12:20:14  profilanswer
 

D'ailleurs c'est quoi cet opérateur "===" ??? Quand je met le "==" classique, ca rentre dans la condition mais avec les problèmes cités au premier post.
 
On dirait que le tableau n'est pas trié car !
 


 
case 0 [X]
case 1 [ ]
case 2 [ ]


 
resultats :
$_POST["case"][0] est à true (ou "on" aussi)
$_POST["case"][1] est à false
$_POST["case"][2] est à false
 


 
case 0 [X]
case 1 [ ]
case 2 [X]


 
resultats :
$_POST["case"][0] est à true (ou "on" aussi)
$_POST["case"][1] est à true (ou "on" aussi)
$_POST["case"][2] est à false
 
 


 
case 0 [X]
case 1 [X]
case 2 [ ]


 
resultats :
$_POST["case"][0] est à true (ou "on" aussi)
$_POST["case"][1] est à true (ou "on" aussi)
$_POST["case"][2] est à false
 


 
case 0 [ ]
case 1 [ ]
case 2 [X]


 
resultats :
$_POST["case"][0] est à true (ou "on" aussi)
$_POST["case"][1] est à false
$_POST["case"][2] est à false
 
 :pt1cable:


Message édité par boulax le 19-07-2004 à 12:21:14

---------------
Posté depuis des chiottes, sales. Me gusta.
n°799507
simogeo
j'ai jamais tué de chats, ...
Posté le 19-07-2004 à 12:34:36  profilanswer
 

boulax > je crois que tu n'as pas compris le fonctionnement
 

boulax a écrit :

D'ailleurs c'est quoi cet opérateur "===" ??? Quand je met le "==" classique, ca rentre dans la condition mais avec les problèmes cités au premier post.
 
On dirait que le tableau n'est pas trié car !
 


 
case 0 [X]
case 1 [ ]
case 2 [ ]


 
resultats :
$_POST["case"][0] est à true (ou "on" aussi)
$_POST["case"][1] est à false
$_POST["case"][2] est à false
 
 
echo $_POST["case"][0] t'affichera 0
 
 


 
case 0 [X]
case 1 [ ]
case 2 [X]


 
resultats :
$_POST["case"][0] est à true (ou "on" aussi)
$_POST["case"][1] est à true (ou "on" aussi)
$_POST["case"][2] est à false


 
[g]echo $_POST["case"][0] t'affichera 0
echo $_POST["case"][1] t'affichera 2[/g]
 
case 0 [X]
case 1 [X]
case 2 [ ]


 
resultats :
$_POST["case"][0] est à true (ou "on" aussi)
$_POST["case"][1] est à true (ou "on" aussi)
$_POST["case"][2] est à false
 
echo $_POST["case"][0] t'affichera 0
echo $_POST["case"][1] t'affichera 1

 


 
case 0 [ ]
case 1 [ ]
case 2 [X]


 
resultats :
$_POST["case"][0] est à true (ou "on" aussi)
$_POST["case"][1] est à false
$_POST["case"][2] est à false
 
echo $_POST["case"][0] t'affichera 2
 
 
 :pt1cable:


 
t'as compris maintenant ?


Message édité par simogeo le 19-07-2004 à 12:35:20

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°799510
ApheX_TwiN
Posté le 19-07-2004 à 12:36:44  profilanswer
 

Le comparateur === est specifique aux valeurs booléennes et plus sécurisée.

n°799511
simogeo
j'ai jamais tué de chats, ...
Posté le 19-07-2004 à 12:39:53  profilanswer
 

ApheX_TwiN a écrit :

Le comparateur === est specifique aux valeurs booléennes et plus sécurisée.


 
non, mais il compare aussi le type
 

Code :
  1. 1 == true; // ok
  2. 1 === true // pas ok


 


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°799518
ApheX_TwiN
Posté le 19-07-2004 à 12:47:36  profilanswer
 

Ah bon ? je ne savais pas.. Merci !

n°799525
boulax
Inserer phrase hype en anglais
Posté le 19-07-2004 à 12:59:18  profilanswer
 

simogeo a écrit :

boulax > je crois que tu n'as pas compris le fonctionnement
 
 


case 0 [ ]
case 1 [ ]
case 2 [X]


 
resultats :
$_POST["case"][0] est à true (ou "on" aussi)
$_POST["case"][1] est à false
$_POST["case"][2] est à false

echo $_POST["case"][0] t'affichera 2

 


 
Désolé mais non, moi je n'ai pas ca.... j'ai pas inventé les resultats que j'ai mis hein... j'ai bel et bien "on" dans $_POST["case"][0] si je coche UNE case, quelque soit la case d'ailleurs.
 
( le test == true fonctionne mais le test ===true non ... )


---------------
Posté depuis des chiottes, sales. Me gusta.
n°799527
simogeo
j'ai jamais tué de chats, ...
Posté le 19-07-2004 à 13:03:42  profilanswer
 

:o
 
 

Code :
  1. for ( $i=0; $i < count($_POST["checktruc"]); $i++ )
  2.    echo $_POST["checktruc"][$i];
  3. }


 
t'as compris maintenant ? [:mlc]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
mood
Publicité
Posté le 19-07-2004 à 13:03:42  profilanswer
 

n°799528
jagstang
Pa Capona ಠ_ಠ
Posté le 19-07-2004 à 13:05:02  profilanswer
 

simogeo a écrit :

non, mais il compare aussi le type
 

Code :
  1. 1 == true; // ok
  2. 1 === true // pas ok



oui, de même que  
 
$var = 9 ;
 
$var == "9"  --> true
$var === "9" --> false  


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°799529
simogeo
j'ai jamais tué de chats, ...
Posté le 19-07-2004 à 13:07:31  profilanswer
 

JagStang a écrit :

oui, de même que  
 
$var = 9 ;
 
$var == "9"  --> true
$var === "9" --> false


 
tootafé mr Toc [:itm]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°799532
jagstang
Pa Capona ಠ_ಠ
Posté le 19-07-2004 à 13:08:58  profilanswer
 

simogeo a écrit :

tootafé mr Toc [:itm]

[:mlc]


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°799535
boulax
Inserer phrase hype en anglais
Posté le 19-07-2004 à 13:13:10  profilanswer
 

simogeo a écrit :

:o
 
 

Code :
  1. for ( $i=0; $i < count($_POST["checktruc"]); $i++ )
  2.    echo $_POST["checktruc"][$i];
  3. }


 
t'as compris maintenant ? [:mlc]


 
Serieux tu me prends pour une buse ou quoi ?
 
je recommence

Code :
  1. for ( $i=0; $i < count($_POST["checktruc"]); $i++ )
  2.     echo $_POST["checktruc"][$i] ." ". $i ."<br/>";


 
Toujours avec mes trois cases
 
case 1 [X]
case 2 [ ]
case 3 [ ]
 
affichage :

Code :
  1. on 0


 
case 1 [X]
case 2 [X]
case 3 [ ]
 
affichage :

Code :
  1. on 0
  2. on 1


 
case 1 [X]
case 2 [X]
case 3 [X]
 
affichage :

Code :
  1. on 0
  2. on 1
  3. on 2


 
case 1 [ ]
case 2 [X]
case 3 [ ]
 
affichage :

Code :
  1. on 0


 
case 1 [ ]
case 2 [ ]
case 3 [X]
 
affichage :

Code :
  1. on 0


case 1 [ ]
case 2 [X]
case 3 [X]
 
affichage :

Code :
  1. on 0
  2. on 1


 
case 1 [X]
case 2 [ ]
case 3 [X]
 
affichage :

Code :
  1. on 0
  2. on 1


 
[:mlc]  
 
Alors je veux bien qu'il me mette que les cases cochées mais si je peu pas les avoir indexées ds le même ordre que la page je fais comment pour savoir lesquelles c'est mmm ?


---------------
Posté depuis des chiottes, sales. Me gusta.
n°799544
simogeo
j'ai jamais tué de chats, ...
Posté le 19-07-2004 à 13:23:06  profilanswer
 

ben si, t'es quand même un boulet [:spamafote]
 
http://julp.developpez.com/php/formulaires/#5
 
t'as précisé les élements value à tes checkbox ?
 
sinon, bazarde ton code ici  :o


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°799548
boulax
Inserer phrase hype en anglais
Posté le 19-07-2004 à 13:29:09  profilanswer
 

simogeo a écrit :


t'as précisé les élements value à tes checkbox ?
 


 
Non, allons nous peut etre avancer dans ce dialogue de sourds ? :)
 
Voila ca marche, je récupère les valeurs dans le tableau maintenant.
Merci


---------------
Posté depuis des chiottes, sales. Me gusta.
n°799565
simogeo
j'ai jamais tué de chats, ...
Posté le 19-07-2004 à 13:51:38  profilanswer
 


 
southpark inside [:itm]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°799624
Mara's dad
Yes I can !
Posté le 19-07-2004 à 15:09:07  profilanswer
 

En fait ce qui se passe est très simple à comprendre :
 
Le navigateur n'envoie QUE les cases cochées donc si tu as 3 cases:
 
<input type="checkbox" name="box[]">Option 1<br>
<input type="checkbox" name="box[]">Option 2<br>
<input type="checkbox" name="box[]">Option 3<br>
 
et que tu coches les cases 1 et 3, ton script PHP reçois selement 2 variables, ce qui revient à écrire :
 
$_POST['box'][] = 'on';
$_POST['box'][] = 'on';
 
Ce qui est équivalent à ton problème. Mais avec les values, on s'en sort :
 
<input type="checkbox" name="box[]" value="1">Option 1<br>
<input type="checkbox" name="box[]" value="2">Option 2<br>
<input type="checkbox" name="box[]" value="3">Option 3<br>
 
Toujours avec les cases 1 et 3, c'est équivalent à :
$_POST['box'][] = 1;
$_POST['box'][] = 3;
 
L'autre solution, c'est de mettre les indices :
 
<input type="checkbox" name="box[0]">Option 1<br>
<input type="checkbox" name="box[1]">Option 2<br>
<input type="checkbox" name="box[2]">Option 3<br>
 
Et donc cette fois, plus de problème :
 
$_POST['box'][0] => 'on'
$_POST['box'][1] => n'existe pas
$_POST['box'][2] => 'on'
 
for ( $i=0; $i < 3; $i++ )
{
   if( isset( $_POST["box"][$i] ) ) // case cochée car variables existe
   {  
      //traitement, la case cochée est la numéro $i
   }
}  
 
Il faut juste savoir combien de cases à cocher il y a au départ. Mais ça en général tu le sais !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.

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

  resultats checkbox indexées [résolu]

 

Sujets relatifs
[résolu]"Focus" sur une ligne à l'affichage d'un menu déroulant[php-mysql] probleme de décryptage de mots de passe [resolu]
[resolu]replace dans une chaineTableau[variable] incompatible en C++ ??? :| [Résolu]
[Résolu] Une erreur est survenue : voulez vous effectuer un débogage?[résolu] Aide pour webmaster debutant
Problème avec un unlink() ... [Résolu][Juste un "s" en +, trop bete][Résolu] Insérer variable dans "value" dans un formulaire
[Résolu] Insérer variable dans une URL ![Résolu] Mouvement de la souris au-dessus d'un contrôle CStatic
Plus de sujets relatifs à : resultats checkbox indexées [résolu]


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