PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 16-05-2011 14:44:06

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

[Résolu] Vérifier si un formulaire généré à la volé est rempli

Bonjour à tous,

Je génère un formulaire en fonction d'une quantité stockée dans Mysql comme ceci:

<?php
$i = '0';
for($i=0;$i < $DETAILS['quantity'];$i++)
{
?>
<input type="text" name="numero[]" id="numero" />
<?php } ?>

Je sais récupérer les données de ce formulaire (même si $DETAILS['quantity'] vaut 5 par exemple) mais je n'arrive pas à arrêter l'envoi du formulaire si un des champs n'est pas rempli.

Pour récupérer les données :

<?php
for ($i = 0; $i < count($_POST["numero"]); $i++)
echo $_POST["numero"][$i]." - ";
?>

Mais si $DETAILS['quantity'] vaut 5 et que seulement quatre champs sont remplis la je bloque, je ne sais pas arrêter le formulaire comme on le ferai pour un formulaire "normal" avec :

<?php
// Par exemple
if(isset($_POST['mon_champ']) && (empty($_POST['mon_champ'])))
{
echo 'pas ok...';
}
else
{
echo 'ok...';
}
// ... etc ...
?>

Merci beaucoup pour votre aide précieuse !

Antho

Dernière modification par Anthotill (16-05-2011 14:48:08)

Hors ligne

#2 16-05-2011 14:47:05

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] Vérifier si un formulaire généré à la volé est rempli

Saluton,
Peux-tu nous montrer le résultat d'un var_dump($_POST["numero"]), STP


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 16-05-2011 14:50:33

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : [Résolu] Vérifier si un formulaire généré à la volé est rempli

Maljuna Kris a écrit :

Saluton,
Peux-tu nous montrer le résultat d'un var_dump($_POST["numero"]), STP

Bonjour :-)

Voici:

array(4)
{
[0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) ""
}

Merci pour votre aide

Antho

Hors ligne

#4 16-05-2011 15:17:01

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] Vérifier si un formulaire généré à la volé est rempli

Bon, là rien n'a été saisi.
As-tu essayé de tester avec la fonction array_search ?

if(array_search("",$_POST["numero"])

Sinon ton code est bizarre, pourquoi initialiser $i='0' puis for($i = 0;...
D'autre part, dans le DOM un id doit être UNIQUE, or toi tu en crées autant que d'itérations de ta structure for


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 16-05-2011 15:26:16

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : [Résolu] Vérifier si un formulaire généré à la volé est rempli

Maljuna Kris a écrit :

Bon, là rien n'a été saisi.
As-tu essayé de tester avec la fonction array_search ?

if(array_search("",$_POST["numero"])

Sinon ton code est bizarre, pourquoi initialiser $i='0' puis for($i = 0;...
D'autre part, dans le DOM un id doit être UNIQUE, or toi tu en crées autant que d'itérations de ta structure for

Avec une saisie :

array(4)
{
[0]=> string(6) "champ1"
[1]=> string(6) "champ2"
[2]=> string(6) "champ3"
[3]=> string(6) "champ4"
}

Je n'ai pas l'impression que array_search renvoi quelque chose, rien ne s'affiche si je valide le formulaire ...

Pour mon code, le champ quantity peut changer, il peut être de 6 pour un utilisateur et de 3 pour un autre, ou même de 1 (jamais 0). le $i = 0 est surement une erreur, car je ne vois pas à quoi il sert ...

Du coup, pour générer le nombre de champ "numero" correspondant à la valeur de quantity je fait la boucle for.

J'ai beaucoup de mal à comprendre comment faire pour contrôler un formulaire de ce type ...

J'espère m'exprimer de façon convenable ...

Dernière modification par Anthotill (16-05-2011 15:28:10)

Hors ligne

#6 16-05-2011 15:59:46

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] Vérifier si un formulaire généré à la volé est rempli

Anthotill a écrit :

Du coup, pour générer le nombre de champ "numero" correspondant à la valeur de quantity je fait la boucle for..

Oui mais, "numero" étant un id du DOM il doit être unique.
Pour le reste je regarderai ça plus tard car là je dois me rendre chez mon médecin.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#7 16-05-2011 16:57:58

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : [Résolu] Vérifier si un formulaire généré à la volé est rempli

Pas vraiment tout suivi dans les échanges mais un flag ne suffirait pas ?

$flag = false;
foreach($_POST['numero'] as $champ)
{
  if( empty($champ) ) $flag = true;
}
if( $flag === true )
  echo "Un champ est vide.";

Hors ligne

#8 16-05-2011 18:51:05

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] Vérifier si un formulaire généré à la volé est rempli

Bon,
j'ai fait ces deux petits scripts de test

<html>
    <head>
        <title>Essai d'un form à champ multivalué</title>
    </head>
    <body>
        <form name="formu" action="anthothill.php" method="post">
            <input type="text" size="7" name="numero[]" id="numero0" /><br />
            <input type="text" size="7" name="numero[]" id="numero1" /><br />
            <input type="text" size="7" name="numero[]" id="numero2" /><br />
            <input type="text" size="7" name="numero[]" id="numero3" /><br />
            <input type="text" size="7" name="numero[]" id="numero4" /><br />
            <input type="text" size="7" name="numero[]" id="numero5" /><br />
        <form>
        <input type="submit" value="envoyer"/>
    </body>
</html>

et

<?php
var_dump($_POST['numero']);
echo "<br />";
if(array_search("",$_POST['numero'])){
    echo "il y a des champs vides";
    }
else{
    echo "il y a ".count($_POST['numero']). " champs remplis";
    }

Fais tes essais et tu verras les résultats.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#9 17-05-2011 06:33:43

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : [Résolu] Vérifier si un formulaire généré à la volé est rempli

Bonjour et merci pour vos réponses!

Les solutions que vous proposez fonctionnent toutes les deux apparemment, je vous remercie sincèrement!

Maintenant il faut que je face des tests smile

Pour vous, qu'elle est la meilleure solution ? la plus optimisée / sécurisée ?

Merci à vous en tout cas!

Dernière modification par Anthotill (17-05-2011 06:34:10)

Hors ligne

#10 17-05-2011 07:54:39

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] Vérifier si un formulaire généré à la volé est rempli

Anthotill a écrit :

Pour vous, qu'elle est la meilleure solution ? la plus optimisée / sécurisée ?

Je suis bien incapable de me prononcer quant à aucun des deux critères.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#11 17-05-2011 08:01:14

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : [Résolu] Vérifier si un formulaire généré à la volé est rempli

Maljuna Kris a écrit :
Anthotill a écrit :

Pour vous, qu'elle est la meilleure solution ? la plus optimisée / sécurisée ?

Je suis bien incapable de me prononcer quant à aucun des deux critères.

Ce qui est curieux avec votre solution, c'est que si je rempli le premier champ et pas les autres elle renvoie FALSE, mais si je rempli le deuxième champ est pas les autres ça renvoi TRUE

Hors ligne

#12 17-05-2011 10:20:10

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] Vérifier si un formulaire généré à la volé est rempli

Curieux en effet.
Je n'ai pas ce qu'il faut pour tester ici
De toutes façons, il faudrait faire qqe chose comme

 $saisie=array_map("trim",$_POST['numero']);

et tester les valeurs de $saisie juste au cas ou un internaute n'aurait saisi que des espaces.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#13 17-05-2011 11:16:20

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] Vérifier si un formulaire généré à la volé est rempli

Bon, je pense que cette modification devrait te donner satisfaction :

<?php
$saisie=array_map("trim",$_POST['numero']);
var_dump($saisie);
echo "<br />";
echo array_search("",$saisie);
echo "<br />";
if(array_search("",$saisie)===0){
    echo "il y a des champs vides";
    }
else{
    echo "il y a ".count($saisie). " champs remplis";
    }

Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#14 18-05-2011 08:10:38

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : [Résolu] Vérifier si un formulaire généré à la volé est rempli

Maljuna Kris a écrit :

Bon, je pense que cette modification devrait te donner satisfaction :

<?php
$saisie=array_map("trim",$_POST['numero']);
var_dump($saisie);
echo "<br />";
echo array_search("",$saisie);
echo "<br />";
if(array_search("",$saisie)===0){
    echo "il y a des champs vides";
    }
else{
    echo "il y a ".count($saisie). " champs remplis";
    }

Merci beaucoup pour votre aide, vos solutions m'ont été d'un grand secours !

Je considère que mon problème est réglé, merci beaucoup!

Anthony

Hors ligne

Pied de page des forums