Bonjour, j'ai juste besoin de savoir s'il existe une méthode particulier pour soumettre un formulaire avec beaucoup de Champs ( 37 champs).

Actuellement je suis obligé de faire :

if(isset($_POST) && !empty($_POST)){
    // Et là je me tape 37 vérifications php du gère :

     if((isset($_POST['inupt_1']) && !empty($_POST['input_1'])) && (isset($_POST['inupt_2']) && !empty($_POST['input_2'])) ... ){

     } else {
          echo 'Error';
     }
}

Merci de m'aider s'il y a une solution.

6 réponses


Bonjour,
Alors déjà tu peux supprimer tout les tests "isset" si tu fais un test "empty" car la fonction isset est include dans la fonction empty
Ensuite, tu toujours faire une bouble "for" ou "foreach". Tout dépent du traitement après.

for($i = 1; $i <= 37; $i++){
    echo $_POST['input_'.$i]; ....
}
=

Bonjour.
Au lieu de vérifier l'existence de la clé du tableau et si sa valeur n'est pas vide, vérifies plutôt le contraire en utilisant en plus une variable qui contiendra par exemple un compteur d'erreurs.
Donc en utilisant l'exemple de de Carouge10, ça pourrait donner quelque chose comme :

$errors = 0;
for($i = 1; $i <= 37; $i++){
    if (empty($_POST['input_'.$i])) {
        $errors++;
    }
}
if ($errors) {
    // Des champs du formulaire sont inexistants/vides, on stoppe le traitement et on défini/affiche un message à l'utilisateur
}
// Tous les champs sont bien renseignés, on poursuit le traitement
Eric237
Auteur

Bonjour merci à tous vos réponses !!.

j'avais déjà pensé à faire des boucles ! mais mon maintenant est de pouvoir intégrer des vérifications supplémentaires en fonction de chaque champ!

Eric237
Auteur

par exemple vérifier le format des emails :

$errors = [];
if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
       $errors['email]  = "Email invalide"
}

Il y a aussi des vérifications pour les numéros de téléphone etc.

Dans ce cas là, soit tu ne fais pas de boucle et tu vérifies chaque champ individuellement, ou alors tu fais une boucle différente, soit par exemple une boucle foreach avec un while à l'intérieur, exemple :

foreach ($_POST as $name => value)
{
    switch($name):
        case 'email':
            if (empty($value) || !filter_var($value, FILTER_VALIDATE_EMAIL)) {
                $errors['email']  = "Email invalide";
            }
            break;
        case 'tel':
            // Vérification du numéro de téléphone
            break;
        default: // Pour les champs n'ayant aucune vérification précise
            if (empty($value)) {
                // Erreur ... 
            }
    endswitch;
}

Ce n'est bien sûr qu'un exemple, à toi de voir comment tu veux le gérer.
En tout cas, si tu en vient à dire trop de champs, dans ce cas là organises ton script en plusieurs étapes, car il y a une différence entre trop et beaucoup.

Instead of checking the existence of the key of the array and if its value is not empty, check rather the opposite by using in addition a variable which will contain for example an error counter. kodi