Résolu

Affichage un message d'erreur

Bonsoir à tous,


Je souhaite afficher un message d'erreur (Veuillez cocher la case) lorsque je clique sur le bouton valider et je ne coche pas la case.


J'ai essayé d'afficher un message avec l'aide d'une focntion empty, mais ça ne m'affiche pas un message d'erreur lorsque je clique sur le bouton voici le code :


<?php
    session_start();

    include "connexionDB.php";

    $bdd = new PDO('mysql:host=127.0.0.1;dbname=topten;charset=utf8','root','');

    $er_msg = "";

    




    if (isset($_POST['accepte']) == 1) {

        $accepte = $_POST['accepte'];

        

        if(empty($accepte)){
            
            $valid = false;

            $er_msg = ("Veuillez cocher la case");
        }

        header("Location: inscription.php");
        exit;
    }
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="styles.css">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
    <title>Consentement rgpd</title>
</head>
<body>
    <div class="col-sm-8 col-md-2 col-lg-3"></div>
    <div class="col-sm-12 col-md-8 col-lg-6">
        <form method="post" action="">
            <h1 class="title-3">2. Droits d'accès</h1>
            <p class="paragraph-2" name="texts">L’accès à EDIT se fait à l’aide d’un identifiant et d’un mot de passe strictement personnels et incessibles.Vous êtes responsable de la conservation et de la confidentialité de cet
            identifiant et de ce mot de passe. Afin de renforcer la sécurité de l’accès à EDIT, il est
            vivement conseillé de modifier vous-même votre mot de passe. Dans tous les services où vous
            pouvez stocker des données personnelles, en particulier dans votre messagerie et vos
            documents, vous êtes seul à pouvoir consulter ces données. EDIT ou
            l’établissement ne s’autorisent à intervenir sur ces espaces privés qu’à la demande des autorités
            judiciaires. En ce qui concerne les applications scolaires propres à MyTechSchool, vous n’avez
            accès qu’aux informations qui vous concernent, ou concernent les personnes dont vous êtes
            responsables et les groupes dont vous faites partie. La création et la gestion d’espaces partagés
            sont déléguées aux personnels des établissements. L’accès à un espace partagé est réservé aux
            utilisateurs désignés par le créateur de cet espace.</p>

            <!--p class="sucess" style="color: red;"><?php if ($msg != "") echo $msg ; ?></p>-->

            <?php
                if (isset($er_msg)){
                 ?>
                    <div style= "color: red;"><?= $er_msg ?></div>
                <?php   
                }
            ?>
            
            <input type="checkbox" name="accepte" value="1">
            <button type="submit" name="submit" style="text-align: center;" class="btn btn-primary">Valider</button>
        </form>
    </div>
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js"></script>
</body>
</html>


J'ai essayé d'afficher un message avec une autre méthode ça fonctionne, mais le message est toujours affiché mêmes quand je reviens dans la page ou bien lorsque je vais à nouveau dans la page consentement.php voici le code :


<?php
    session_start();

    include "connexionDB.php";

    $bdd = new PDO('mysql:host=127.0.0.1;dbname=topten;charset=utf8','root','');

    if (isset($_POST['accepte']) == 1) {

        $accepte = $_POST['accepte'];

        header("Location: inscription.php");
        exit;
    }else{
        
        echo"Veuillez cocher la case";
    }
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="styles.css">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
    <title>Consentement rgpd</title>
</head>
<body>
    <div class="col-sm-8 col-md-2 col-lg-3"></div>
    <div class="col-sm-12 col-md-8 col-lg-6">
        <form method="post" action="">
            <h1 class="title-3">2. Droits d'accès</h1>
            <p class="paragraph-2" name="texts">L’accès à EDIT se fait à l’aide d’un identifiant et d’un mot de passe strictement personnels et incessibles.Vous êtes responsable de la conservation et de la confidentialité de cet
            identifiant et de ce mot de passe. Afin de renforcer la sécurité de l’accès à EDIT, il est
            vivement conseillé de modifier vous-même votre mot de passe. Dans tous les services où vous
            pouvez stocker des données personnelles, en particulier dans votre messagerie et vos
            documents, vous êtes seul à pouvoir consulter ces données. EDIT ou
            l’établissement ne s’autorisent à intervenir sur ces espaces privés qu’à la demande des autorités
            judiciaires. En ce qui concerne les applications scolaires propres à MyTechSchool, vous n’avez
            accès qu’aux informations qui vous concernent, ou concernent les personnes dont vous êtes
            responsables et les groupes dont vous faites partie. La création et la gestion d’espaces partagés
            sont déléguées aux personnels des établissements. L’accès à un espace partagé est réservé aux
            utilisateurs désignés par le créateur de cet espace.</p>

           
            
            <input type="checkbox" name="accepte" value="1">
            <button type="submit" name="submit" style="text-align: center;" class="btn btn-primary">Valider</button>
        </form>
    </div>
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js"></script>
</body>
</html>


Est-ce que je me suis trompé de l'utilisation d'une fonctionnalité ? Car la fonction empty permet a déterminé si une variable est vide, dans le code que j'ai réalisé j'ai utilisé cette fonction pour vérifier si la case est vide et quand je clique sur le bouton il y a un message qui doit s'afficher.


Merci d'avance pour vos réponses.

473 vues
07 décembre 2020 à 21:00 (Édité)
Cette pub permet au site de vivre ...

2 commentaires

Bonsoir @Flomir72,


J'ai réussi à afficher un message d'erreur lorsque la case est vide et quand je clique sur le bouton avec ce code que j'ai modifié :


<?php
    session_start();

    include "connexionDB.php";

    

    $msg = "";

    
    if(!empty($_POST)){

        extract($_POST);

        $valid = true;

        if (isset($_POST['accepte']) == 1) {

            //$accepte = $_POST['accepte'];
            header("Location: inscription.php");
            exit;
        }else{
            
            $msg = "Veuillez selectionnez la case";
        }
    }
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="styles.css">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
    <title>Consentement rgpd</title>
</head>
<body>
    <div class="col-sm-8 col-md-2 col-lg-3"></div>
    <div class="col-sm-12 col-md-8 col-lg-6">
        <form method="post" action="">
            <h1 class="title-3">2. Droits d'accès</h1>
            <p class="paragraph-2" name="texts">L’accès à EDIT se fait à l’aide d’un identifiant et d’un mot de passe strictement personnels et incessibles.Vous êtes responsable de la conservation et de la confidentialité de cet
            identifiant et de ce mot de passe. Afin de renforcer la sécurité de l’accès à EDIT, il est
            vivement conseillé de modifier vous-même votre mot de passe. Dans tous les services où vous
            pouvez stocker des données personnelles, en particulier dans votre messagerie et vos
            documents, vous êtes seul à pouvoir consulter ces données. EDIT ou
            l’établissement ne s’autorisent à intervenir sur ces espaces privés qu’à la demande des autorités
            judiciaires. En ce qui concerne les applications scolaires propres à MyTechSchool, vous n’avez
            accès qu’aux informations qui vous concernent, ou concernent les personnes dont vous êtes
            responsables et les groupes dont vous faites partie. La création et la gestion d’espaces partagés
            sont déléguées aux personnels des établissements. L’accès à un espace partagé est réservé aux
            utilisateurs désignés par le créateur de cet espace.</p>

           <p class="sucess" style="color: red;"><?php if ($msg != "") echo $msg ; ?></p><input type="checkbox" name="accepte" value="1">
           <button type="submit" name="submit" style="text-align: center;" class="btn btn-primary">Valider</button>
        </form>
    </div>
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js"></script>
</body>
</html>


Mais je préfère utiliser le code que tu avais partagé, car il est mieux, plus sécuriser et avec ce code je pourrais éviter les problèmes. J'ai ajouté le code dans mon fichier que tu m'as conseillé et lorsque je clique sur le bouton le message d'alertes ne s'affiche pas :


<?php
    session_start();

    include "connexionDB.php";

    

    

    
    if(!empty($_POST)){

        extract($_POST);

        $valid = true;

        if (isset($_POST['accepte']) == 1) {

            //$accepte = $_POST['accepte'];

            

            
            $_SESSION['flash']['error'] = "Veuillez cocher la case";

            header("Location: inscription.php");
            exit;
        }
    }
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="styles.css">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
    <title>Consentement rgpd</title>
</head>
<body>
    <div class="col-sm-8 col-md-2 col-lg-3"></div>
    <div class="col-sm-12 col-md-8 col-lg-6">
        <form method="post" action="">
            <h1 class="title-3">2. Droits d'accès</h1>
            <p class="paragraph-2" name="texts">L’accès à EDIT se fait à l’aide d’un identifiant et d’un mot de passe strictement personnels et incessibles.Vous êtes responsable de la conservation et de la confidentialité de cet
            identifiant et de ce mot de passe. Afin de renforcer la sécurité de l’accès à EDIT, il est
            vivement conseillé de modifier vous-même votre mot de passe. Dans tous les services où vous
            pouvez stocker des données personnelles, en particulier dans votre messagerie et vos
            documents, vous êtes seul à pouvoir consulter ces données. EDIT ou
            l’établissement ne s’autorisent à intervenir sur ces espaces privés qu’à la demande des autorités
            judiciaires. En ce qui concerne les applications scolaires propres à MyTechSchool, vous n’avez
            accès qu’aux informations qui vous concernent, ou concernent les personnes dont vous êtes
            responsables et les groupes dont vous faites partie. La création et la gestion d’espaces partagés
            sont déléguées aux personnels des établissements. L’accès à un espace partagé est réservé aux
            utilisateurs désignés par le créateur de cet espace.</p>

            <?php
                if(isset($_SESSION['flash'])){
                    foreach($_SESSION['flash'] as $type => $message): ?>
                    <div id="alert" class="alert alert-<?= $type; ?> infoMessage"><a class="closef">X</span></a>
                        <?= $message; ?>
                    </div>    
                <?php
                    endforeach;
                    unset($_SESSION['flash']);
                }
            ?>

            <input type="checkbox" name="accepte" value="1">
            <button type="submit" name="submit" style="text-align: center;" class="btn btn-primary">Valider</button>
        </form>
    </div>
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js"></script>
</body>
</html>

Salut @Epeny 🙃,


@Clouder m'avait donné un bout de code sympa pour les alert avec Bootstrap:


Utilise les SESSION pour les messages d'alertes, c'est mieux !


Pour positionner un message avec un niveau d'alerte :


<?php
$_SESSION['flash']['info'] = "Pour une alerte / message de type info";
header('Location: /');
exit;
?>


Pour les autres type d'alerte :


<?php
$_SESSION['flash']['success'] = "Pour une alerte / message de type succes";
$_SESSION['flash']['warning'] = "Pour une alerte / message de type attention";
$_SESSION['flash']['error'] = "Pour une alerte / message de type erreur";


Pour afficher le message (à mettre sur toutes tes pages)


<?php
if(isset($_SESSION['flash'])){ 
    foreach($_SESSION['flash'] as $type => $message): ?>
	<div id="alert" class="alert alert-<?= $type; ?> infoMessage"><a class="closef">X</span></a>
		<?= $message; ?>
	</div>	


<?php
    endforeach;
    unset($_SESSION['flash']);
}
?>


Bon courage,

Florent 😀

Cette pub permet au site de vivre ...