Page 1 sur 2
Récupérer les values des checkbox dans un fichier modifier ?
Posté : 10 févr. 2006, 12:14
par Kimble
Bonjour,
L'utilisateur rempli des champs de formulaire et coche des checkbox...
L'envoi s'effectue parfaitement et remplis la BD.
Mais si l'utilisateur veut par exemple à travers un fichier modifier_mairie .php, modifier ses données, comment faire pour récupérer les cases cochées dans les checkbox ? En fait quelles soit cochées ? J'arrive à récupérer toutes les valeurs sauf que les checkbox ne sont pas cochées ! Une idée ? merci.
Kimble
Posté : 10 févr. 2006, 12:18
par charabia
Est-ce que à chacun de tes checkbox tu lui as associé un champ dans ta base ?
Posté : 10 févr. 2006, 12:22
par Kimble
Salut, oui un champ unique.
Par exemple :
Code : Tout sélectionner
<INPUT type="checkbox" name="jour_dde[]" value="Tous les jours">
<br />
Lundi :
<INPUT type="checkbox" name="jour_dde[]" value="Lundi">
Mardi :
<INPUT type="checkbox" name="jour_dde[]" value="Mardi">
Mercredi :
<INPUT type="checkbox" name="jour_dde[]" value="Mercredi">
Jeudi :
<INPUT type="checkbox" name="jour_dde[]" value="Jeudi">
Vendredi :
<INPUT type="checkbox" name="jour_dde[]" value="Vendredi">
Samedi :
<INPUT type="checkbox" name="jour_dde[]" value="Samedi">
<br />
Le matin :
<INPUT type="checkbox" name="jour_dde[]" value="le matin">
L'aprés-midi :
<INPUT type="checkbox" name="jour_dde[]" value="l\'aprés-midi">
Posté : 10 févr. 2006, 12:32
par charabia
Oui là c'est ton formulaire, mais je veux dire dans ta base de données. Là ils ont le même nom sous forme de tableau name="jour_dde[]", mais dans la BDD tu récupères toutes les données dans un seul champ ou un champ pour lundi, un autre pour mardi...etc ?
Posté : 10 févr. 2006, 12:36
par Kimble
Les valeurs lundi, mardi...etc sont enregistrées dans un champ unique
"jour_dde".
Posté : 10 févr. 2006, 12:42
par Ryle
dans ta balise checkbox, tu peux ajouter l'attrbut "checked" pour dire que celui est coché par défaut. Il te suffit alors de lire en base les résultat et de tester pour chaque case si celle-ci doit être chochée ou pas :
<?
$checked="";
if(($maCaseDoitEtreCochée)
$checked="checked";
?>
<input type="checkbox" ... <?php echo $checked ?> >
ou plus rapidement
<input type="checkbox" ... <?php echo ($maCaseDoitEtreCochée) ? "checked" : ""?> >
A toi de déterminer ensuite si $maCaseDoitEtreCochée est vrai ou pas, en fonction de la valeur contenu dans ton champ

(en gros pour la case lundi, si ton champ contient la valeur du lundi, alors elle doit être cochée)
Posté : 10 févr. 2006, 18:21
par Kimble
Je ne récupére rien... même pas une erreur !
<?php
$casecochee=(isset($_POST['jour_mairie'])) ? $_POST['jour_mairie'] : "";
$checked=(isset($_POST['checked'])) ? $_POST['checked'] : "";
$checked="";
if(($casecochee))
$checked="checked";?>
<br />
<strong>Tous les jours :
<input type="checkbox" name="jour_mairie[]" value="Tous les jours" <?php echo ($casecochee) ? "checked" : ""?>>
<br />
Posté : 10 févr. 2006, 21:06
par - HXSS -
faut que tu utilises la fonction explode sur la variable avant de tester si l'utilisateur à coché telle ou telle case : x
Posté : 13 févr. 2006, 19:05
par Kimble
Bon ! je m'y remet et je tourne en rond...
je ne connais pas du tout la syntaxe avec un EXPLODE mais j'ai trouvé
un script sur la toile :
<?php
function was_selected($option)
{
GLOBAL $jour_mairie;
for ($j=0; $j<count($jour_mairie); $j++)
return TRUE;
}
$jour_mairie = isset($_POST['jour_mairie']) ? $_POST['jour_mairie'] : "";
if($jour_mairie)
{
for ($i=0; $i<count($jour_mairie); $i++)
{
}
}
?>
<strong>Tous les jours :
<input type="checkbox" name="jour_mairie[]" value="Tous les jours"<?php if(was_selected("Tous les jours")) { echo " checked"; } ?>>
<br />
Lundi :
<INPUT type="checkbox" name="jour_mairie[]" value="Lundi"<?php if(was_selected("Lundi")) { echo " checked"; } ?>>
Mardi :
<INPUT type="checkbox" name="jour_mairie[]" value="Mardi"<?php if(was_selected("Mardi")) { echo " checked"; } ?>>
Le probléme est que je récupére bien les valeurs des checkbox même quand elle ne contiennent aucunes donnée dans BD...c'est à dire quelles sont toutes cochées !

Posté : 13 févr. 2006, 20:00
par - HXSS -
pour rentrer la valeur de tes ckeckbox dans ta bdd tu fais bien un implode non ?
enfin je sais pas je m'y connais pas beaucoup mais moi c'est comme ça que j'ai fait, ensuite pour reprendre les valeurs de ma bdd je fais un explode sur la variable de ma requête et je teste avec in_array is_array...
tu peux voir mon bout de code ici
http://www.phpfrance.com/forums/voir_su ... texte-.php
ça marche mais je sais pas si c'est la meilleure façon : O
Posté : 14 févr. 2006, 18:02
par Kimble
J'ai regardé ton code et j'ai fait ceci :
<?php
$jour_mairie = isset($_POST['jour_mairie']) ? $_POST['jour_mairie'] :NULL;
$casecochee = (isset($jour_mairie)) ? explode(', ', $jour_mairie) : "";
$checked=(isset($_POST['checked'])) ? $_POST['checked'] : "";
$checked="";
?>
<strong> <u>Jours d'ouverture de la mairie :</u> ( <font color="red">Cochez les jours correspondants</font> )</strong>
<br />
<br />
<input type="checkbox" name="casecochee[]" value="Tous les jours" <?PHP if (is_array($casecochee)) { if (in_array("Tous les jours",$casecochee)) echo "checked=\"checked\""; } ?> />
La case n'est toujours pas cochée...démoralisé je suis !

Posté : 15 févr. 2006, 14:58
par Kimble
Un petit UP ! on ne sait jamais si quelqu'un passe par là...

Posté : 15 févr. 2006, 15:10
par - HXSS -
c'est le code complet ou juste une partie ? jvois pas ta requête sql pour reprendre les valeurs des case cochées
Posté : 16 févr. 2006, 19:44
par Kimble
Mon fichier modifier_mairie.php
<?php
form_modif_mairie("index.php?liste=modifier_mairie&formulaire_m=mairies_info","patros_m",$mairie_courant);?>
Qui appelle le formulaire
<?php
function form_modif_mairie($action,$select1,$mairie_courant="")
{
$jour_mairie = isset($_POST['jour_mairie']) ? $_POST['jour_mairie'] :NULL;
$casecochee = (isset($jour_mairie)) ? explode(', ', $jour_mairie) : "";
$checked=(isset($_POST['checked'])) ? $_POST['checked'] : "";
$checked="";
$req=mysql_query("select * from mairies_info where id='$mairie_courant'");
$result=mysql_fetch_array($req);
?>
<td><strong><font color="red">Mairie de :</font></strong></td><td><input disabled name="mairie" tabindex="1" type="text" id="mairie" value="<? echo $result['mairie'] ?>"/></td>
<br />
<br />
<strong> <u>Jours d'ouverture de la mairie :</u> ( <font color="red">Cochez les jours correspondants</font> )</strong>
<input type="checkbox" name="casecochee[]" value="Tous les jours" <?PHP if (is_array($casecochee)) { if (in_array("Tous les jours",$casecochee)) echo "checked=\"checked\""; } ?> />
Je ne trouve pas pourquoi cette pt1 de checkbox n'est pas cochée alors qu'il y a l'info dans la BD ! En plus, j'ai trop de boulot en ce moment pour pouvoir m'y pencher sérieusement, alors je répond de façon épisodique...désolé.
Posté : 18 févr. 2006, 18:06
par Kimble
Je reviens avec mon probléme, j'ai fait ceci mais ça ne marche pas :
<?php $jour_mairie = isset($_POST['jour_mairie']) ? $_POST['jour_mairie'] :NULL;
$jour_mairie_sql = (isset($jour_mairie)) ? explode(', ', $jour_mairie) : "";
$req=mysql_query("select '.jour_mairie_sql.', mairie, dde, ad_mairie, ad_dde, cp_mairie, cp_dde, tel_mairie, tel_dde, fax_mairie, fax_dde, site_web, idpatro, instructeur, heure_mairie, heure_dde from mairies_info where id='$mairie_courant'"); ?>
<form>
<strong> <u>Jours d'ouverture de la mairie :</u> ( <font color="red">Cochez les jours correspondants</font> )</strong>
<br />
<br />
<strong>Tous les jours :
<input type="checkbox" name="jour_mairie[]"<?php if($jour_mairie_sql == "Tous les jours"){echo" CHECKED";}?>>
<br />
Lundi :
<INPUT type="checkbox" name="jour_mairie[]" <?php if($jour_mairie_sql == "Lundi"){echo" CHECKED";}?>>
Mardi :
<INPUT type="checkbox" name="jour_mairie[]" <?php if($jour_mairie_sql == "Mardi"){echo" CHECKED";}?>>
Mercredi :
<INPUT type="checkbox" name="jour_mairie[]" <?php if($jour_mairie_sql == "Mercredi"){echo" CHECKED";}?>>
Jeudi :
<INPUT type="checkbox" name="jour_mairie[]" <?php if($jour_mairie_sql == "Jeudi"){echo" CHECKED";}?>>
Vendredi :
<INPUT type="checkbox" name="jour_mairie[]" <?php if($jour_mairie_sql == "Vendredi"){echo" CHECKED";}?>>
Samedi :
<INPUT type="checkbox" name="jour_mairie[]" <?php if($jour_mairie_sql == "Samedi"){echo" CHECKED";}?>>
<br />
Le matin :
<INPUT type="checkbox" name="jour_mairie[]" <?php if($jour_mairie_sql == "le matin"){echo" CHECKED";}?>>
L'aprés-midi :
<INPUT type="checkbox" name="jour_mairie[]" <?php if($jour_mairie_sql == "l\'aprés-midi"){echo" CHECKED";}?>>
</strong>
</form>
Qu'est ce qu'il ce passe ?
