Récupérer les values des checkbox dans un fichier modifier ?

Eléphant du PHP | 96 Messages

10 févr. 2006, 12:14

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

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 12:18

Est-ce que à chacun de tes checkbox tu lui as associé un champ dans ta base ?

Eléphant du PHP | 96 Messages

10 févr. 2006, 12:22

Salut, oui un champ unique.
Par exemple :

Code : Tout sélectionner

<INPUT type="checkbox" name="jour_dde[]" value="Tous les jours"> <br /> &nbsp;&nbsp;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 /> &nbsp;&nbsp;Le matin : <INPUT type="checkbox" name="jour_dde[]" value="le matin"> &nbsp;&nbsp;L'aprés-midi : <INPUT type="checkbox" name="jour_dde[]" value="l\'aprés-midi">

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 12:32

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 ?

Eléphant du PHP | 96 Messages

10 févr. 2006, 12:36

Les valeurs lundi, mardi...etc sont enregistrées dans un champ unique
"jour_dde".

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

10 févr. 2006, 12:42

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)

Eléphant du PHP | 96 Messages

10 févr. 2006, 18:21

Je ne récupére rien... même pas une erreur ! :cry:
<?php
			$casecochee=(isset($_POST['jour_mairie'])) ? $_POST['jour_mairie'] : "";
			$checked=(isset($_POST['checked'])) ? $_POST['checked'] : "";			 			    
   		 $checked=""; 
			if(($casecochee)) 
			$checked="checked";?>   

<br />  
			&nbsp;&nbsp;<strong>Tous les jours :
			<input type="checkbox" name="jour_mairie[]" value="Tous les jours" <?php echo ($casecochee) ? "checked" : ""?>>			
			<br />

Eléphant du PHP | 101 Messages

10 févr. 2006, 21:06

faut que tu utilises la fonction explode sur la variable avant de tester si l'utilisateur à coché telle ou telle case : x

Eléphant du PHP | 96 Messages

13 févr. 2006, 19:05

Bon ! je m'y remet et je tourne en rond... :cry:
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++) 
{ 
} 
} 
?>
&nbsp;&nbsp;<strong>Tous les jours :
			<input type="checkbox" name="jour_mairie[]" value="Tous les jours"<?php if(was_selected("Tous les jours")) { echo " checked"; } ?>>			
			<br />
&nbsp;&nbsp;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 ! :?:

Eléphant du PHP | 101 Messages

13 févr. 2006, 20:00

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

Eléphant du PHP | 96 Messages

14 févr. 2006, 18:02

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>&nbsp;&nbsp;<u>Jours d'ouverture de la mairie :</u>&nbsp;&nbsp; ( <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 ! :(

Eléphant du PHP | 96 Messages

15 févr. 2006, 14:58

Un petit UP ! on ne sait jamais si quelqu'un passe par là... :)

Eléphant du PHP | 101 Messages

15 févr. 2006, 15:10

c'est le code complet ou juste une partie ? jvois pas ta requête sql pour reprendre les valeurs des case cochées

Eléphant du PHP | 96 Messages

16 févr. 2006, 19:44

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>&nbsp;&nbsp;<u>Jours d'ouverture de la mairie :</u>&nbsp;&nbsp; ( <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é.

Eléphant du PHP | 96 Messages

18 févr. 2006, 18:06

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>&nbsp;&nbsp;<u>Jours d'ouverture de la mairie :</u>&nbsp;&nbsp; ( <font color="red">Cochez les jours correspondants</font> )</strong> 
         <br /> 
         <br />  
&nbsp;&nbsp;<strong>Tous les jours : 
<input type="checkbox" name="jour_mairie[]"<?php if($jour_mairie_sql == "Tous les jours"){echo" CHECKED";}?>> 
         <br />                      
&nbsp;&nbsp;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";}?>>&nbsp;&nbsp; 
         <br /> 
&nbsp;&nbsp;Le matin : 
<INPUT type="checkbox" name="jour_mairie[]" <?php if($jour_mairie_sql == "le matin"){echo" CHECKED";}?>> 
&nbsp;&nbsp;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 ?
:?: :?: