Bad arguments sur un implode...

Eléphant du PHP | 96 Messages

12 janv. 2006, 18:52

Bonjour,
L'utilisateur rempli un formulaire avec des champs ainsi que des cases à
cocher...L'enregistrement dans la BD se fait bien et sans aucune erreur.
Mais si l'utilisateur oublie de cocher une case, j'obtiens ce type d'erreur :

Notice: Undefined index: jour_mairie in d:\easyphp\www\..\ajout_mairie.php on line 39

Warning: (): . in d:\easyphp\www\..\ajout_mairie.php on line 39

Notice: Undefined index: jour_dde in d:\easyphp\www\..\ajout_mairie.php on line 40

Warning: implode(): Bad arguments. in d:\easyphp\www\..\ajout_mairie.php on line 40

//ces 2 lignes servent à l'enregistrement des cases à cocher dans la table mairies_info
			$jour_mairie_sql = implode(', ',$_POST['jour_mairie']);
			$jour_dde_sql = implode(', ',$_POST['jour_dde']);
//insertion des donnée dans la table mairies_info	
			$ajout_mairie=mysql_query("insert into mairies_info values('','$dde','$mairie','$ad_dde','$cp_dde','$tel_dde','$fax_dde','$ad_mairie','$cp_mairie',
'$tel_mairie','$fax_mairie','$site_web','$patro_a','$instructeur','$jour_mairie_sql','$jour_dde_sql')");
Bon, je pourrais masquer ces erreurs avec une fenêtre 'alert' d'obligation de remplissage de champs mais ce n'est pas trés élégant !
Une idée ? merci. :lol:
Oups! j'oubliais l'erreur sur les lignes 39 et 40 :
$jour_mairie_sql = implode(', ',$_POST['jour_mairie']);
$jour_dde_sql = implode(', ',$_POST['jour_dde']);

Mammouth du PHP | 19672 Messages

12 janv. 2006, 20:01

Commence par récupérer les valeurs si elles existent:
$jour_mairie = isset($_POST['jour_mairie']) ? $_POST['jour_mairie'] : null;
$jour_dde    = isset($_POST['jour_dde'])    ? $_POST['jour_dde']    : null;

$jour_mairie_sql = (isset($jour_mairie)) ? implode(', ', $jour_mairie) : "";
$jour_dde_sql    = (isset($jour_dde))    ? implode(', ', $jour_dde)    : "";
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 96 Messages

14 janv. 2006, 20:54

Merci beaucoup...ca marche au poil ! :D