Page 1 sur 1

Checkbox ne passant pas lors de la validation

Posté : 06 sept. 2011, 13:27
par Teenoo
Bonjour,

j'ai créé un long et lourd formulaire qui me pose quelques soucis au niveau de mes checkbox... Impossible de les garder en mémoire après validation et de récupérer la valeur. Je retourne le soucis dans tous les sens je ne trouve aucune solution : ce n'est pas un soucis de compatibilité PHP4/5, pas un problème de code car sous OVH (en PHP5) il marche mais pas sur Hostpapa ni sur mon serveur local (PHP5 tous les deux). #-o

Une idée ? Je deviens chèvre !

Merci beaucoup :D

Re: Checkbox rebelles

Posté : 06 sept. 2011, 19:14
par moogli
salut,

une idée simple : utilisation d'une méthode de codage qui n'est "universelle" en gros je pense à un codage pour registers globals = on alors que ce n'est pas le cas par défaut de php et donc la différence est dû a une configuration des serveurs différentes :)

@+

Re: Checkbox rebelles

Posté : 07 sept. 2011, 15:11
par Teenoo
Hum... j'y ai pensé mais je bloque du coup sur ce morceau de code.
<?php for($id=0;$id<count($list['f_26']);$id++){
if($f_26[$id]==1){$ct="checked";}
print("<input ".$ct." type='checkbox' name='f_26[$id]' value='1' border='0'><label class='case'>".$list[f_26][$id]."</label>");
unset($ct);
}?>
Le but étant que "checked" soit inséré et reste après validation du formulaire car du coup ce dernier ne peut jamais être envoyé (les choix par case étant obligatoire). Si j'enlève le caractère obligatoire bien sûr la valeur n'est pas récupéré dans le mail.

Code de la liste à afficher :
$list['f_26']=array("SA","SARL","EIRL","EI","Autre");
Code pour l'intégration dans le mail :
for($id=0; $id<count($list['f_26']); $id++){
			if($f_26[$id]==1){
				$corps.="Forme Juridique : ".$list['f_26'][$id]."\n";
			}
		}
Merci pour vos lumières :D

Remarque : pas de soucis avec les "input text" et "textarea"

Re: Checkbox rebelles

Posté : 09 sept. 2011, 09:23
par Teenoo
Petit up car mon sujet semble être tombé dans l'oublie et j'ai grandement besoin de vos conseils :wink: Merci!

EDIT : exemple de formulaire sur le même moule.
<?php
// Couleur du texte des champs si erreur saisie utilisateur
$color_font_warn="#FF0000";
// Couleur de fond des champs si erreur saisie utilisateur
$color_form_warn="#FFCC66";
// Ne rien modifier ci-dessous si vous n’êtes pas certain de ce que vous faites !
$list['f_1']=array("mouton", "chat", "canard");
if(isset($_POST['submit'])){
	$erreur="";
	// Nettoyage des entrées
	while(list($var,$val)=each($_POST)){
	if(!is_array($val)){
		$$var=strip_tags($val);
	}else{
		while(list($arvar,$arval)=each($val)){
				$$var[$arvar]=strip_tags($arval);
			}
		}
	}
	// Formatage des entrées
	$f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_2)));
	// Verification des champs
	if(!$f_1){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Test &raquo; requiert au moins une sélection.</span>";
		$errf_1=1;
	}
	if(strlen($f_2)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Test &raquo; est vide ou incomplet.</span>";
		$errf_2=1;
	}
	if($erreur==""){
		// Création du message
		$titre="Message de votre site";
		$tete="From:[email protected]\n";
		for($id=0; $id<count($list['f_1']); $id++){
			if($f_1[$id]==1){
				$corps.="Test : ".$list['f_1'][$id]."\n";
			}
		}
		$corps.="Test : ".$f_2."\n";
		if(mail("[email protected]", $titre, stripslashes($corps), $tete)){
			$ok_mail="true";
		}else{
			$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
		}
	}
}
?>

<head><style type="text/css" media="screen">
INPUT { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
SELECT { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
TEXTAREA { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
.txterror { color: black; font-size: 11px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
.txtform { color: black; font-size: 12px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
</style></head>

<body><? if($ok_mail=="true"){ ?>
	<table width='100%' border='0' cellspacing='1' cellpadding='1'>
		<tr><td><span class='txtform'>Le message ci-dessous nous a bien été transmis, et nous vous en remercions.</span></td></tr>
		<tr><td>&nbsp;</td></tr>
		<tr><td><tt><?echo nl2br(stripslashes($corps));?></tt></td></tr>
		<tr><td>&nbsp;</td></tr>
		<tr><td><span class='txtform'>Nous allons y donner suite dans les meilleurs délais.<br>A bientôt.</span></td></tr>
	</table>
<? }else{ ?>
<form action='<? echo $PHP_SELF ?>' method='post' name='Form'>
<table width='100%' border='0' cellspacing='1' cellpadding='1'>
<? if($erreur){ ?><tr><td colspan='2' bgcolor='red'><span class='txterror'><font color='white'><b>&nbsp;ERREUR, votre message n'a pas été transmis</b></font></span></td></tr><tr><td colspan='2'><ul><?echo$erreur?></ul></td></tr><?}?>
<tr><td colspan='2'><span class='txterror'>Les champs marqué d'un * sont obligatoires</span></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Test* :</span></td><td>
<table border='0' cellspacing='0' cellpadding='0'>
<? for($id=0;$id<count($list['f_1']);$id++){
if($f_1[$id]==1){$ct="checked";}
print("<tr><td><input ".$ct." type='checkbox' name='f_1[$id]' value='1' border='0'></td><td><span class='txtform'>".$list[f_1][$id]."</span></td></tr>");
unset($ct);
}?>
</table>
</td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Test* :</span></td><td><input type='text' style='width:200 <?if($errf_2==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_2' value='<?echo stripslashes($f_2);?>' size='24' border='0'></td></tr>
<tr><td align='right' width='30%'></td><td><input type='submit' name='submit' value='Envoyer' border='0'></td></tr>
</table>
</form>
<? } ?></body>