PHP

Afficher une erreur pour choisir un sexe

Résolu

Bonjour j'ai ce code :


<select id="sexe">
        <option value="Autre" name="sexea">Autre</option>
        <option value="F" name="sexeF">Femme</option>
        <option value="H" name="sexeH">Homme</option>
        
      </select><br>


et j'aimerais que si une personne mette le sexe "autre" ça mette l'erreur : Vous devez être un homme ou une femme !

760 vues
20 janvier 2020 à 20:58 (Édité)
Cette pub permet au site de vivre ...

6 commentaires

J'avais fait une petite erreur dans ce que je t'avais donné. Voilà le bon code par rapport à ton code ci-dessous :


$verif_sexe = (int) $sexe;

if(!in_array($verif_sexe, array(1, 2)){
  $valid = false;
  $mess_err_sexe = "Veuillez choissir si vous êtes un homme ou une femme";
 }


Par contre fait attention je pense que tu as oublié de fermer une parenthèse dans ton code

Code :


<?php
    session_start();
    include('connexionDB.php'); // Fichier PHP contenant la connexion à votre BDD
    // S'il y a une session alors on ne retourne plus sur cette page
    if (isset($_SESSION['id'])){
        header('Location: /');
        exit;
    }

    // Si la variable "$_Post" contient des informations alors on les traitres
    if(!empty($_POST)){
        extract($_POST);
        $valid = true;

        // On se place sur le bon formulaire grâce au "name" de la balise "input"
        if (isset($_POST['inscription'])){
            $nom  = htmlentities(trim($nom)); // On récupère le nom
            $mail = htmlentities(strtolower(trim($mail))); // On récupère le mail
            $biographie  = htmlentities(trim($biographie));
            $mdp = trim($mdp); // On récupère le mot de passe
            $confmdp = trim($confmdp); //  On récupère la confirmation du mot de passe
            
            //  Vérification du nom
            if(empty($nom)){
                $valid = false;
                $er_nom = ("<span style = 'color:red';>Le nom d'utilisateur ne peut pas être vide</span>");
            }
            if(empty($biographie)){
                $valid = false;
                $er_bio = ("<span style = 'color:red';>Vous devez mettre une biographie !</span>");
            }          
     
            
            
            // Vérification du mail
            }if(empty($mail)){
                $valid = false;
                $er_mail = "<span style = 'color:red';>Le mail ne peut pas être vide</span>";

                // On vérifit que le mail est dans le bon format
            }elseif(!preg_match("/^[a-z0-9\-_.]+@[a-z]+\.[a-z]{2,3}$/i", $mail)){
                $valid = false;
                $er_mail = "<span style = 'color:red';>Le mail n'est pas valide</span>";

            }else{
                // On vérifit que le mail est disponible
                $req_mail = $DB->query("SELECT mail FROM utilisateur WHERE mail = ?",
                    array($mail));

                $req_mail = $req_mail->fetch();

                if ($req_mail['mail']){
                    $valid = false;
                    $er_mail = "<span style = 'color:red';>Ce mail existe déjà</span>";
                }
            }

            // Vérification du mot de passe
            if(empty($mdp)) {
                $valid = false;
                $er_mdp = "<span style = 'color:red';>Le mot de passe ne peut pas être vide</span>";

            }elseif($mdp != $confmdp){
                $valid = false;
                $er_mdp = "<span style = 'color:red';>La confirmation du mot de passe ne correspond pas</span>";
            }

            
            if(empty($an)) {
                $valid = false;
                $er_an = '<span style = "color:red";>Vous devez remplir le champ "Année".</span>';
            }
            
                $verif_sexe = (int) $_POST['sexe'];

                    if(in_array($sexe, array(1, 2)){
    // C'est ok
                  }else{
                  $valid = false;
                  $mess_err_sexe = "Veuillez choissir si vous êtes un homme ou une femme";
              }


            // Si toutes les conditions sont remplies alors on fait le traitement
            if($valid){

                $mdp = crypt($mdp, "$6$rounds=5000$macleapersonnaliseretagardersecret$");
                $date_creation_compte = date('Y-m-d H:i:s');

                // On insert nos données dans la table utilisateur
                $DB->insert("INSERT INTO utilisateur (nom, mail, anné_naissance, biographie,  mdp, date_creation_compte) VALUES
                    (?, ?, ?, ?, ?, ?)",
                    array($nom, $mail, $an, $biographie, $mdp, $date_creation_compte));

                header('Location: /');
                exit;
            }
        }
    
?>
<link rel="stylesheet" type="text/css" href="default.css">
<style type="text/css">
  p {
  margin-top: 0px;
}
 
fieldset {
  margin-bottom: 15px;
  padding: 10px;
}
 
legend {
  padding: 0px 3px;
  font-weight: bold;
  font-variant: small-caps;
}
 
label {
  width: 200px;
  display: inline-block;
  vertical-align: top;
  margin: 6px;
}
 
em {
  font-weight: bold;
  font-style: normal;
  color: #f00;
}
 
input:focus {
  background: #eaeaea;
}
 
input, textarea {
  width: 249px;
}
 
textarea {
  height: 100px;
}
textarea:focus {
  background: #eaeaea;
}
 
select {
  width: 254px;
}
 
input[type=checkbox] {
  width: 10px;
}
 
input[type=submit] {
  width: 150px;
  padding: 10px;
}
#connexion {
  color:#fff;
  background:#2F2F2F;
  border-color:#2F2F2F;
  transition: all 0.3s ease;
}
#connexion:hover {
  background:#46A2D9;
  border-color:#46A2D9;
}
</style>
<div id="content" class="container clearfix">
    <div id="main-content">

            <div class="list-posts clearfix">
              <div class="kp-breadcrumb">
<h2>Formulaire d'inscription à mon site</h2>
<ol class="breadcrumb">
                          <li><span>Vous êtes ici:</span><a href="/">Accueil</a></li>
                                                    <li><a href="/connexion/">Connexion</a></li>
                                                </ol>
</div>
<h4><a  href="connexion" class="no-account">Déjà inscrit ? Connectez-vous ici !</a></h4>
<form method="post" >
  <p><i>Complétez le formulaire. Les champs marqué par </i><em>*</em><i> sont </i><em>obligatoires</em></p>
  <fieldset>
      <legend>Information personnelles</legend>
      <label for="nom">Nom & Prénom <em>*</em></label>
      <!--placeholder: indication grisée
      //required: il faut renseigner le champs sinon la validation est bloquée
      //autofocus: le curseur est positionné dans cette case au chargement de la page-->
      <input id="nom" placeholder="Nom Prénom" autofocus="" value="<?php if(isset($nom)){ echo $nom; }?>" name="nom" /><br>
      <label for="email">Email <em>*</em></label>
      <input id="email" name="mail" value="<?php if(isset($mail)){ echo $mail; }?>" type="text" placeholder="prenom.nom@domaine.com"><br>
      <label for="email">Email <em>*</em></label>
      <select id="sexe" name="sexe">
              <option value="0">Autre</option>
              <option value="1">Femme</option>
              <option value="2">Homme</option>
        </select><br />


    
      
      <label for="age">Année de naissance<em>*</em></label>
      <input name="an" id="Année de naissance" value="1990" type="number" placeholder="xxxx" pattern="[0-9]{2}" ><br>
      
      <label for="comments">Choisissez votre biographie<em>*</em></label>
      <textarea id="comments" name="biographie" value="<?php if(isset($biographie)){ echo $biographie; }?>" ></textarea><br /><br />
      <label for="age">Mot de passe<em>*</em></label>
      <input type="password" placeholder="Mot de passe" name="mdp" value="<?php if(isset($mdp)){ echo $mdp; }?>" ><br/>
      <label for="age">Mot de passe de confirmation<em>*</em></label>
        <input type="password" value="<?php if(isset($mdp)){ echo $mdp; }?>" placeholder="Confirmer le mot de passe" name="confmdp" >
          </fieldset>
        

 
 
  <input type="submit" value="Inscription" name="inscription" id="connexion"><br>
                <?php
                if (isset($er_nom)){
                ?>
                    <div><?= $er_nom ?></div>
                <?php   
                }
                ?>
                <?php
                if (isset($er_prenom)){
                ?>
                    <div><?= $er_prenom ?></div>
                <?php   
                }
                ?>       
                <?php
                if (isset($er_mail)){
                ?>
                    <div><?= $er_mail ?></div>
                <?php   
                }
                ?>
                <?php
                if (isset($er_age)){
                ?>
                    <div><?= $er_age ?></div>
                <?php   
                }
                ?>
                 <?php
                if (isset($er_an)){
                ?>
                    <div><?= $er_an ?></div>
                <?php   
                }
                ?>
                <?php
                if (isset($er_sexea)){
                ?>
                    <div><?= $er_sexea ?></div>
                <?php   
                }
                ?>
                <?php
                if (isset($er_bio)){
                ?>
                    <div><?= $er_bio ?></div>
                <?php   
                }
                ?>
                    <?php
                if (isset($er_mdp)){
                ?>
                    <div><?= $er_mdp ?></div>
                <?php   
                }
                ?>
                <?php
                if (isset($er_cgu)){
                ?>
                    <div><?= $er_cgu ?></div>
                <?php   
                }
                ?>
               <?php
                if (isset($er_an)){
                ?>
                    <div><?= $er_an ?></div>
                <?php   
                }
                ?>


</form>
</form>
</div>
</div>
</div>
</html>

Hello Didoub74,


Peux-tu envoyer le code complet concerné par l'erreur que tu rencontres ? 🤔

Tu dois avoir une accolade ou autre chose en trop dans ton code...

Salut Clouder


il me dite cette erreur : Parse error: syntax error, unexpected '}' in /Volumes/site web/Test/Nouveau formulaire inscription (non prêt !).php

on line 77

Je ferais cela :


Dans ton code HTML


<select id="sexe" name="sexe">
  <option value="0">Autre</option>
  <option value="1">Femme</option>
  <option value="2">Homme</option>
</select>


Lorsque tu vérifies ton formulaire


<?php

$verif_sexe = (int) $_POST['sexe'];

  if(in_array($verif_sexe, array(1, 2)){
    // C'est ok
  }else{
    $valid = false;
    $mess_err_sexe = "Veuillez choissir si vous êtes un homme ou une femme";
  }

Bonjour Didoub74,


Il faut que tu fasses un if, ce qui donne en gros :

if($_POST['sexea'] == "checked") {
 echo "Ton message d’erreur";
}
Cette pub permet au site de vivre ...