Souci avec formulaire, renvoi ARRAY
Résolu
cmoiahmed
Messages postés
15
Statut
Membre
-
cmoiahmed Messages postés 15 Statut Membre -
cmoiahmed Messages postés 15 Statut Membre -
Bonjour,
J'ai un formulaire avec des checkbox, lorsque je valide pour l'envoyer par mail, il m'affiche "ARRAY" comme récupération de valeurs cochées.
J'ai trouvé une solution pour qu'il me renvoi les données en les passant dans implode mais maintenant il m'affiche une erreur lorsque je valide le formulaire
Voila le code :
le message dans une div :
Merci de votre aide....
J'ai un formulaire avec des checkbox, lorsque je valide pour l'envoyer par mail, il m'affiche "ARRAY" comme récupération de valeurs cochées.
J'ai trouvé une solution pour qu'il me renvoi les données en les passant dans implode mais maintenant il m'affiche une erreur lorsque je valide le formulaire
Warning: implode(): Invalid arguments passed in.....
Voila le code :
if(($_POST['materiaux']) === ' ') { // si aucune cases cochées
$materiauxErreur = '<b>type de matériaux</b> est un choix requis.';
$siErreur = true; // pour afficher ailleurs le message dans une div
}
else {
// la variable "article" récupère la valeur des cases cochés
article = $_POST['materiaux'];
// la variable "text " permet d'afficher les données dans le mail
$text = implode(",", $article);
}
le message dans une div :
<?php if( isset($constructionErreur) || isset($materiauxErreur) ){ ?>
<div class="bloc_erreur">
<span class="Erreur"><?php echo $constructionErreur ?></span> <br />
<span class="Erreur"><?php echo $materiauxErreur ?></span> <br />
</div>
<?php } ?>
Merci de votre aide....
4 réponses
-
salut,
le fait de mettre dans l'input type ckecbox name="materiaux[] renvoie $_POST['materiaux'] sous forme d'un array lorsque l'on poste le formulaire, mais si rien n'est coché, l'array $_POST['materiaux'] n'existe pas donc tu as une erreur sur l'argument inexistant de la fct implode
il faut donc que tu fasses
if(isset($_POST['materiaux'])){
echo implode(.....
}else{
echo 'aucune case cochée';
} -
Bonjour.
Ta déclaration de variable est incorrecte : tu as oublié le "$" devant "article" dans ton else.
Essaie déjà comme ça ! :-)
A+ -
oups mal recopier, il y a bien "$" devant "article" dans mon else, l'erreur ne vient pas de la.
j'oubli de préciser que l'erreur se fait lorsque le formulaire est valider sans avoir rempli les champs et cocher les cases.
j'ai un beau message :Warning: implode(): Invalid arguments passed in.....
mais lorsque le formulaire est compléter correctement je reçois toutes les données-
j'ai simplifié le code :
else { // la variable "text " permet d'afficher les données dans le mail $text = implode(",", $_POST['materiaux']); }
je récupère bien les données mais quand les checkbox ne sont pas cochés et que je valide le formulaire, je reçois toujours l'erreur
Warning: implode(): Invalid arguments passed in.....
et le message d'erreur est vide, j'ai regardé dans firebug et je vois ceci:
<span class="Erreur"> </span> <br />
-
Salut.
Que contient ta variable $_POST['materiaux'] dans ce cas ?
Tu mets une chaîne espace ' ', mais est-ce bien cela ?
Le problème ici, c'est ton test dans le if. Car d'après ce que je comprends, quel que soit le cas, tu passe dans le else (formulaire rempli ou pas), ton test est donc à revoir.
Si tu n'y arrives pas, je pourrai regarder de mon côté pour reproduire le cas.
A+ -
la variable
$_POST['materiaux']
contient un tableau si je ne me trompe pas
<li> <input type="checkbox"id="materiaux" name="materiaux[]" class="element checkbox" value="Traditionnel (parpaing)" /> <label class="choice" for="materiaux">Brique</label> </li>
Pour ce qui est de la chaîne espace ' ', je ne vois la voit pas, si c'est dansimplode
, c'est une virgule pour séparer les données récupérer :$text = implode(",", $_POST['materiaux']);
Par contre si c'st pour la vérification, je ne sais pas quoi mettreif(($_POST['materiaux']) === ' ') {
Je tourne en rond, je récupère bien les données mais j'ai toujours ce message d'erreurWarning: implode(): Invalid arguments passed in.....
Et je remarque que si je rajoutetrim
if (trim($_POST['materiaux']) === ' ' ) {
je reçois toujours les données et j'ai bien mon message d'erreur qui s'affiche correctement si la case n'est pas cochée mais cette fois j'ai un nouveau message d'erreurtrim() expects parameter 1 to be string, array given
-
bon il suffisait de mettre comment paramètre pour vérifier si la case est cochée:
false
if ($_POST['materiaux'] == false) {
Dernier souci pour ce qui est desradio
(choix unique)
comment faire pour que lorsque on clique sur le label, cela valide le choix.
car j'ai toujours le premiers choix qui se rempli
je sais pas si je suis clair.... -
-
-
merci, mais j'avais déjà trouvé la solution pour les
radio
(choix unique) et c'est bien ce que j'ai fait