Probleme vérification checkbox

cs_cassecroute Messages postés 44 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 17 février 2006 - 9 janv. 2006 à 15:30
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 10 janv. 2006 à 19:54
bonjour,

je reprends un code. En fait dans un tableau il y a tous les clients de la boite qui apparaissent, j'ai rajouté une checkbox en face de chaque client. ensuite un bouton 'générer facture' doit permet de facturer certains clients, ceux qui sont cochés.

pour faire le formulaire voilà le code :



dans la page de traitement, la personne avant moi avait mis cela, qui permet de récupérer les clients à facturer, mais moi je dois rajouter la vérification de la checkbox:

foreach($_POST as $item => $valeur_fac)
{if (isset($_POST[$item]))
{ if ( strstr($item, 'genere_fac') != FALSE)


J'ai mis :

$i = 0; //initialise la variable i
foreach($_POST as $item => $valeur_fac)
{if (isset($_POST[$item]))
{ if ($caz[$i]=="vrai") // vérifie que la case est coché, enfin je pense
{ if ( strstr($item, 'genere_fac') != FALSE
{
$i++ //tout à la fin du processus, mais peut etre pas utilise car il y a un foreach
}
}
}
}

Donc voila je vous demande votre avis, car quand je coche, il ne se passe pas ce qui devrait y avoir.

17 réponses

sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
9 janv. 2006 à 15:56
??

a mon avis le problème est dans le formulaire
0
cs_cassecroute Messages postés 44 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 17 février 2006
9 janv. 2006 à 16:00
si tu parles du '"' qui manque après checkbox, c'est une faute ;) sinon explique ce que tu trouve étrange.
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
9 janv. 2006 à 16:15
il faudrait voir le code html du <form>
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
9 janv. 2006 à 16:18
ce que je trouve etrange c'est ... name="caz[]"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_cassecroute Messages postés 44 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 17 février 2006
9 janv. 2006 à 16:21
comme dit plus haut, le code ne vient de moi, et j'ai remarqué donc en fait je comprends pas tout lol, mais en gros d'un côté il y a la form qui contient seulement le nom de ma colonne de mon tableau.

Puis dans une autre page et là php, contient ma checkbox :

</td>
0
cs_cassecroute Messages postés 44 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 17 février 2006
9 janv. 2006 à 16:24
le name="caz[]" est mis car il y aura plusieur checkbox, car l'entreprose possède plusieurs clients. Mais n'arrive pas à faire en sorte qu'il m'affiche ce que je veux, pour les clients ayant leur case cochée.

Si vous voulez, j'ai changé d'approche et j'ai mis celà :

$case=$_POST[caz];
{ if (!empty($case))

dans ce cas là il n'affiche rien si je ne coche pas, mais si je ne coche qu'une seule case, il m'affiche des information pour tous les clients et pas seulement celui ayant la case cochée.
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
9 janv. 2006 à 16:33
jette un oeil au source de la page une fois affichée et regarde les names des cases à cocher
à mon avis, caz[] ne va pas s'incrémenter tout seul
si je comprends bien, il faut que tu aies caz[0], caz[1], caz[2] etc... pour les nom des cases à cocher ???

il faudrait voir le code du formulaire, le
</td>
doit se trouver dans une boucle, non ?

alors voyons la boucle !!
0
cs_cassecroute Messages postés 44 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 17 février 2006
9 janv. 2006 à 16:39
/* construction de la ligne du tableau */
if($res_fac_list['etat_compte_id_etat'][$indx] == 4)
$nouv_lign="<tr bgcolor='#FFFF00'>";
elseif($res_fac_list['etat_compte_id_etat'][$indx] == 6)
$nouv_lign="<tr bgcolor='#EFEFEF'>";
else $nouv_lign="<tr>";

$cons_tel = get_Fact_telephonie($CON,$res_fac_list['id_compte'][$indx],$_GET['mois_deb_fac'],$_GET['annee_deb_fac']);
$use_tel = use_Telephonie($CON,$res_fac_list['id_offre'][$indx]);

//Accepter la facturation du client
$test_compte = Test_compte($res_fac_list['id_compte'][$indx],$CON,$res_fac_list['activ_desactiv'][$indx],$mois,$annee,$use_tel,$res_fac_list['etat_compte_id_etat'][$indx],$res_fac_list['date'][$indx]);
if($test_compte == TRUE){

$nouv_lign.="
<td>




</td>
<td>".$res_fac_list['id_compte'][$indx]."</td>
<td>".$res_fac_list['nom'][$indx]."</td>
<td>".$res_fac_list['prenom'][$indx]."</td>
<td width='100'>".$action."</td>


}//--FIN FOR_EACH

Désolé mais je ne peux pas tout mettre ... car on ne me le permet pas
0
cs_cassecroute Messages postés 44 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 17 février 2006
9 janv. 2006 à 16:41
sinon dans le code source, ils ont tous le même name : "caz[]"
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
9 janv. 2006 à 16:52
j'aurais aimé voir la balise form et
et le début de la boucle for each

mais à mon avis, il faut inclure un compteur ($i)

"."."</td> etc...

j'ai arrêté la chaine pour des facilités de concatenation
les cases à cocher devraient avoir les noms caz[0], caz[1] etc...
quand tu affiches le source
0
cs_cassecroute Messages postés 44 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 17 février 2006
9 janv. 2006 à 16:59
ça c'est le code de traitement avec le foreach :

foreach($_POST as $item => $valeur_fac)
{if (isset($_POST[$item]))
$case=$_POST[caz];
{ if (!empty($case))
{ if ( strstr($item, 'genere_fac') != FALSE) // (le début est "genere_fac" puis "N")
{ // générer la facture N pour un montant = $prix_facN
$rest_id = substr($item, 10);
$new_id = "prix_fac".$rest_id;
//$ok_pour_ce_prix = $$new_id;
//$t[] = $_POST[$new_id];
$ok_pour_ce_prix = $_POST[$new_id];
//echo ("******** on facture l'id n° $rest_id au tarif : $ok_pour_ce_prix

");
$telephonie = $_POST["telephonie_".$rest_id];
$cons_tel = $_POST["cons_tel_".$rest_id];

// on met ces variables dans un tableau pour les afficher pour VERIFICATION
include("../../connex_2.php"); // connexion à la base de données DU SITE B2C
unset($TABLE,$COND,$CHAMPS,$AGREGATE,$result);
$TABLE="compte";
$CHAMPS="compte.id_compte";
$COND="compte.personne_idpersonne ='".$rest_id."'";
$result=SQL_SELECT($CON,$TABLE,$CHAMPS,$COND,$AGREGATE);
$rest_compte = $result['id_compte'][0];
if(empty($cons_tel)) $cons_tel = 0;
$ok_pour_ce_prix -= $cons_tel;
$tab_a_fact[] = array( $rest_compte, $ok_pour_ce_prix, $telephonie , $cons_tel);

}
}
}
}

et avec ton incrémentation j'ai bien des caz[] différents, j'ai des nombres différents je veux dire ;)
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
9 janv. 2006 à 17:12
je parlais de la boucle de chargement des lignes contenant les cases à cocher (incluses dans le <form>)
si tu as bien les noms caz[0], caz[1] etc

ton test caz[$i] doit marcher maintenant...
0
cs_cassecroute Messages postés 44 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 17 février 2006
9 janv. 2006 à 17:20
hé bien non ça ne marche pas, là quand je coche une case, je n'ai aucune info qui s'affiche alors qu'avant je les avais tous(bien que je veuille que ceux cochés), donc je sais pas quoi faire.

tu parlais bien de : { if ($caz[$i]=="vrai")
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
9 janv. 2006 à 17:29
il faut faire une boucle dans un javascript (sur le submit)
pour alimenter réellement la valeur des cases à cocher
si checked --> value=true

sinon elles seront toutes initialisées à 'vrai'

et puis
$case=$_POST[caz]; // te renvoie un tableau entier
essaie
$case=$_POST[caz][$i++];
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
9 janv. 2006 à 18:39
Salut,

pourquoi tu ne ferais pas ça :

if(isset($_POST['caz']) AND is_array($_POST['caz']))
while(liste(,$valeur)=each($_POST['caz']))
{
echo $valeur,'
';
}

ça va te lister les valeurs, ensuite je pense que tu sauras les récupérer ;-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
cs_cassecroute Messages postés 44 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 17 février 2006
10 janv. 2006 à 10:43
anthomicro, ce qui m'intéresse c'est juste que dans la boucle foreach que mon prédécesseur a mis, je rajoute une condition comme quoi la checkbox de la ligne est cochée ou non ... mais peut etre que ce que tu as marqué pourrait me servir, mais là j'ai trop de mal à rentrer dans le code, vu que que ce n'est pas de moi
...
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 janv. 2006 à 19:54
bah en fait si tu connais toutes les valeurs de tes checkbox qu'on été affichées, tu pourras le faire en refaisant la manip via php qui affichait les checkbox, et les checkbox cochées sont celles que tu récupères via ma méthode :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Rejoignez-nous