-2
votes

Comment afficher un message d'erreur avec PHP après l'envoi du formulaire

Bonjour à tous, je construis un projet avec php où je veux afficher un message d'erreur sur le formulaire soumis avec php mais le problème est que je ne peux pas faire que ma page soit rechargée et que le message ne s'affiche pas. Ci-dessous, je colle les codes, aidez-moi à le faire.

Font partie

if(isset($_POST['con_submit'])){
    
    
    
    // Posted form data 
    
    if(!empty($_POST['con_first_name'])){
        $err_fname = "First name cannot be empty";
    }else{
        $fname = htmlentities(strip_tags(mysqli_real_escape_string($con, $_POST['con_first_name'])), ENT_QUOTES, 'UTF-8');
    }
    
    
    
}

codes php

<form method="post" action="" id="contact_form">
                      <div class="form-row mt-3">
                        <div class="col">
                          <div class="form-group input-group">
                            <input type="text" class="form-control" name="con_first_name" placeholder="Enter your first name">
                            <span><?php echo $err_fname; ?></span>
                          </div>
                        </div>
                        
                      </div>
                      
                      <div class="form-group"> 
                      
                        <button type="submit" name="con_submit" class="btn show_more con_submit">Submit</button>
                      </div> 
                    </form>


php

5 commentaires

Etes-vous sûr que !empty() est la validation que vous voulez, plutôt que empty() sans le ! ?


@rickdenhaan pensez-vous que empty() fonctionnera


Eh bien, vous souhaitez définir le message d'erreur lorsque l'utilisateur n'a PAS entré de prénom, n'est-ce pas? Donc, quand le champ est empty()


Oui @rickdenhaan


Ensuite, l'utilisation de empty() devrait fonctionner. Un test rapide serait de définir également $err_fname dans votre condition else (sur un autre texte) pour voir s'il s'affiche alors.


3 Réponses :


0
votes

Je le ferais avec session!

if(isset($_SESSION['form_error'])){
    echo $_SESSION['form_error'];
    unset($_SESSION['form_error']);
}

Et puis où vous voulez le montrer, faites:

session_start();
if(isset($_POST['con_submit'])){
    
    // Posted form data 
    if(!empty($_POST['con_first_name'])){
        $err_fname = "First name cannot be empty";
        $_SESSION['form_error'] = $err_fname;
    }else{
        $fname = htmlentities(strip_tags(mysqli_real_escape_string($con, $_POST['con_first_name'])), ENT_QUOTES, 'UTF-8');
    }
     
}


2 commentaires

utilise session est sûr et pourquoi non défini


@BabyBabai Oui, c'est sûr! Désactivé pour masquer le message si la page est actualisée. .. une fois montré, il n'a pas besoin d'être montré à nouveau!



0
votes

utiliser ce code

if(isset($_POST['con_submit'])){
    if(empty($_POST['con_first_name'])){
        $err_fname = "First name cannot be empty";
    }else{
        $fname = htmlentities(strip_tags(mysqli_real_escape_string($con, $_POST['con_first_name'])), ENT_QUOTES, 'UTF-8');
    }
}


0 commentaires

-2
votes

vous pouvez utiliser avec une session comme celle-ci

session_start();
if(isset($_POST['con_submit'])){
    
    // Posted form data 
    if(empty($_POST['con_first_name'])){
        $err_fname = "First name cannot be empty";
        $_SESSION['form_error_name'] = $err_fname;
    }else{
        $fname = htmlentities(strip_tags(mysqli_real_escape_string($con, $_POST['con_first_name'])), ENT_QUOTES, 'UTF-8');
    }
     
}

if(isset($_SESSION['form_error_name'])){
    echo $_SESSION['form_error_name'];
    unset($_SESSION['form_error_name']);
}

La session est sécurisée et chaque fois que vous postez, elle définira la session, puis supprimera la valeur définie pour la session sans définir la session.


3 commentaires

Nan! voir la différence en empty


vous pourriez commenter ma réponse sur mon erreur de ne pas copier ma solution. ..


Ok j'ai ça @Ingus