Probleme vérification checkbox

Signaler
Messages postés
44
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
17 février 2006
-
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
-
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

Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
??

a mon avis le problème est dans le formulaire
Messages postés
44
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
17 février 2006

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

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>
Messages postés
44
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
17 février 2006

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.
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
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 !!
Messages postés
44
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
17 février 2006

/* 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
Messages postés
44
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
17 février 2006

sinon dans le code source, ils ont tous le même name : "caz[]"
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
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
Messages postés
44
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
17 février 2006

ç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 ;)
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
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...
Messages postés
44
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
17 février 2006

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")
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
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++];
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
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>
Messages postés
44
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
17 février 2006

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
...
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
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>