Bonjour je viens demande votre aide car dans mon formulaire d'inscription je signale a la personne si il ne remplis pas tous les champs qu'il faut les remplir, mais le probleme est qu'avant meme que je n’envoie le formulaire avec les champs manquant il m'affiche cette erreur.
je vous donne mon code php

<?php
session_start();
if(!empty($_POST))
{
    extract($_POST);
    $valid = true;

}
if(empty($pseudo) AND empty($email) AND empty($pass))
{
    $valid = false;
    $erreur = 'Veuillez saisir tous les champs';

}
?>

et html

<div id="designform"><form action="inscription.php" method="post">
            <div><fieldset>
            <legend>Formulaire d'Inscription !!!</legend>
            <p><label for="pseudo">Pseudo </label><input type="text" name="pseudo" id="pseudo"/></p>
            <p><label for="email">Email </label><input type="text" name="email" id="email" /></p>
            <p><label for="pass">Pass </label><input type="text" name="pass" id="pass" /></p>
            </fieldset><input type="submit" name="submit" id="submit" />
            <?php if(isset($erreur)) echo $erreur; ?>
            </div>
        </form></div>

3 réponses


SnoT
Réponse acceptée

Salut,

il faut que tu réutilises ce que tu fais juste au dessus :

<?php
session_start();
if(!empty($_POST))
{
    extract($_POST);
    $valid = true;

}
?>

Ici tu fais déjà un test sur $_POST, et tu mets $valid = true si y'a bien quelque chose qui a été posté.
Donc pour ton test plus bas tu fais ça :

if((empty($pseudo) OR empty($email) OR empty($pass)) and $valid)
{
    $valid = false;
    $erreur = 'Veuillez saisir tous les champs';
}

Comme l'a dit dutbas, remplace bien AND par OR.

De plus le mieux est d'initialiser $valid à false, ce qui te donne au final :

<?php
session_start();
$valid = false;
if(!empty($_POST))
{
    extract($_POST);
    $valid = true;

}
if((empty($pseudo) OR empty($email) OR empty($pass)) and $valid)
{
    $erreur = 'Veuillez saisir tous les champs';
    $valid = false;
}
?>

Bonjour,

Il faut que tu ajoutes dans ton test : Si $_POST n'existe on affiche rien.
Par contre, je pense qu'il ne faut pas utiliser AND mais OR car sinon il y a erreur si : " $pseudo est vide ET $email est vide ...". Pour resumer je pense que si il manque qu'une infos l'erreur ne s'affiche pas.
Moi je marquerai :

<?php
if( (empty($pseudo) OR empty($email) OR empty($pass)) AND !empty($_POST) )
{
    $valid = false;
    $erreur = 'Veuillez saiser tous les champs';
}
?>

Bonjour, si la réponse t'a aidé, c'est parfait... Mais sinon, si ton script génère une erreur, ne serait-ce pas plus simple de nous la copier coller ?

Cordialement,

bendem