Je veux empêcher mon formulaire d'envoyer un formulaire vide

Résolu
hononul Messages postés 3 Statut Membre -  
hononul Messages postés 3 Statut Membre -
Bonjour,
je vien de débuter en PHP
jai bien relier ma page à ma base avec PDO
j'ai créer un formulaire qui evoie mes données entrées dans le formulaire à ma base de données.

voici mon code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8"/>
<html>
<head>
 <title> Formulaire </title>
</head>
<body >
 <form method="post"  action="index.php">
 
<table>
<tr>
 <td><label name="nom">nom: </label></td>
 <td><input type="text" name="nom" id="nom"/> </td>
</tr>
<tr>
 <td><label name="prenom">prenom: </label></td>
 <td><input type="text" name="prenom"/></td>
</tr>

<tr>
 <td><label name="age">age:</label></td>
 <td><input type="text" name="age"></td> 
</tr>


<tr>
 <td>date debut carriere </td>
 <td>
  <select name="jour">
  <option value="00">jour</option>
  <option value="01">01</option>
  <option value="02">02</option>
  <option value="03">03</option>
  <option value="04">04</option>
  <option value="05">05</option>
  <option value="06">06</option>
  <option value="07">07</option>
  <option value="08">08</option>
  <option value="09">09</option>
  <option value="10">10</option>
  <option value="11">11</option>
  <option value="12">12</option>
  <option value="13">13</option>
  <option value="14">14</option>
  <option value="15">15</option>
  <option value="16">16</option>
  <option value="17">17</option>
  <option value="18">18</option>
  <option value="19">19</option>
  <option value="20">20</option>
  <option value="21">21</option>
  <option value="22">22</option>
  <option value="23">23</option>
  <option value="24">24</option>
  <option value="25">25</option>
  <option value="26">26</option>
  <option value="27">27</option>
  <option value="28">28</option>
  <option value="29">29</option>
  <option value="30">30</option>
  <option value="31">31</option>
  </select>
 </td>
 <td>
  <select name="mois">
  <option value="00">mois</option>
  <option value="01">janvier</option>
  <option value="02">fevrier</option>
  <option value="03">mars</option>
  <option value="04">avril</option>
  <option value="05">mai</option>
  <option value="06">juin</option>
  <option value="07">juillet</option>
  <option value="08">aout</option>
  <option value="09">septembre</option>
  <option value="10">octobre</option>
  <option value="11">novembre</option>
  <option value="12">decembre</option>
  </select>
 </td>
 <td>
  <select name="annee">
  <option value="0000">annee</option>
  <option value="1990">1990</option>
  <option value="1991">1991</option>
  <option value="1992">1992</option>
  <option value="1993">1993</option>
  <option value="1994">1994</option>
  <option value="1995">1995</option>
  <option value="1996">1996</option>
  <option value="1997">1997</option>
  <option value="1998">1998</option>
  <option value="1999">1999</option>
  <option value="2000">2000</option>
  <option value="2001">2001</option>
  </select>
 </td>
</tr>

<tr>
 <td><label name="courtebiographie">biographie: </label></td>
 <td><input type="text" name="courtebiographie"/></td>
</tr>
</br>
<tr>
<td>
<input name="valider" type="submit" value="Enregistrer"/>  
<input type="reset" name="annuler"  value="Annuler" />
</td>
</tr>
</table>
<!-- <a href="listejoueurs.php" rel="nofollow noopener noreferrer" target="_blank">afficher la liste des joueurs</a> </br> -->
<!--<a href="moyenne.php" rel="nofollow noopener noreferrer" target="_blank">moyenne des ages</a> -->
</form>

             <table border="1px" width="50%" align="center">
                    <tr>
                        <th colspan="8">liste des joueurs </th>
                    </tr>
                    <tr>
      <td> id</td>
                        <td> nom</td>
                        <td> prenom</td>
      <td> age</td>
      <td> datedebutcarriere</td>
      <td> biographie</td>
         <td colspan="2" >modification et suppression</td>
                    </tr>
     <tr></tr>
                    <tr></tr>
                    <tr></tr>
                    <?php
     try
      {
      $bdd = new PDO('mysql:host=localhost;dbname=gestionjoueurs', 'root', '');
      }
      catch(Exception $e)
      {
      die('Erreur : '.$e->getMessage());
      }
      
     
     if(isset($_POST['nom'] )){
      $nom = $_POST['nom']; 
      $prenom = $_POST['prenom']; 
      $age = $_POST['age']; 
      $jour = $_POST['jour'];
      $mois = $_POST['mois'];
      $annee = $_POST['annee'];
      $courtebiographie = $_POST['courtebiographie']; 
      $datedebutcarriere = $annee.'-'.$mois.'-'.$jour ;
      
      $req = $bdd->prepare('INSERT INTO joueur(nom,prenom,age,datedebutcarriere,courtebiographie) 
     VALUES(:nom, :prenom, :age, :datedebutcarriere, :courtebiographie)');
     $req->execute(array(
     'nom' => $nom,
     'prenom' => $prenom,
     'age' => $age,
     'datedebutcarriere' => $datedebutcarriere,
     'courtebiographie' => $courtebiographie,
     ));
     }
       
      
      
      
      $resultat = $bdd->query("SELECT * FROM joueur ");
                            while( $rst = $resultat->fetch(PDO::FETCH_ASSOC)){
        $id= $rst["id"];
                                $nom= $rst["nom"];
        $prenom= $rst["prenom"];
        $age= $rst["age"];
        $datedebutcarriere= $rst["datedebutcarriere"];
        $courtebiographie= $rst["courtebiographie"];
                                echo '<tr>
         <td>'.$id.'</td>
                                    <td>'.$nom.'</td>
         <td>'.$prenom.'</td>
         <td>'.$age.'</td>
         <td>'.$datedebutcarriere.'</td>
         <td>'.$courtebiographie.'</td>
         <td><a href="modifierjoueurs.php?id='.$id.'" rel="nofollow noopener noreferrer" target="_blank" title="modifier cette ligne">modifier</a></td>
         <td><a href="supprimerjoueurs.php?id='.$id.'" rel="nofollow noopener noreferrer" target="_blank" title="supprimer cette ligne">supprimer</a></td>
                                      </tr>';
                                
                            }
                        
      
      $requete = $bdd->query('SELECT AVG(age) AS \'age_moyen\' FROM joueur');
      while ($donnees = $requete->fetch(PDO::FETCH_ASSOC)) {
      echo 'La moyenne des âge des joueurs est:'.$donnees['age_moyen']; }
      
                       
      
                    ?>
     
                </table>
    

</body>
</html>


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.


je veux empêcher mon formulaire d'envoyer des champs vide dans ma base de données, comment je dois m'y prendre? aidez moi svp

3 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 833
     
    Bonjour,

    Déjà .. on place le code de connexion à la bdd dans un fichier à part
    qu'on aura qu'à inclure dans les pages où on en a besoin

    <?php
    //fichier de connexion à la bdd : cnxBdd.php
    try{
      $bdd = new PDO('mysql:host=localhost;dbname=gestionjoueurs', 'root', '');
      $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
      $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    } catch(Exception $e){
      die('Erreur : '.$e->getMessage());
    }      
    ?>
    


    Ensuite on place le code PHP AVANT le HTML en général .. cela rend la maintenance du code plus facile.
    On pense aussi à utiliser des boucles pour créer les SELECT ... pour éviter d'écrire 50 lignes ...

    Par exemple :
     <select name="jour">
          <option value="00">jour</option>
          <option value="01">01</option>
          <option value="02">02</option>
          <option value="03">03</option>
          <option value="04">04</option>
          <option value="05">05</option>
          <option value="06">06</option>
          <option value="07">07</option>
          <option value="08">08</option>
          <option value="09">09</option>
          <option value="10">10</option>
          <option value="11">11</option>
          <option value="12">12</option>
          <option value="13">13</option>
          <option value="14">14</option>
          <option value="15">15</option>
          <option value="16">16</option>
          <option value="17">17</option>
          <option value="18">18</option>
          <option value="19">19</option>
          <option value="20">20</option>
          <option value="21">21</option>
          <option value="22">22</option>
          <option value="23">23</option>
          <option value="24">24</option>
          <option value="25">25</option>
          <option value="26">26</option>
          <option value="27">27</option>
          <option value="28">28</option>
          <option value="29">29</option>
          <option value="30">30</option>
          <option value="31">31</option>
          </select>
    

    peut être remplacé par :
     <select name="jour">
      <option value="00">jour</option>
      <?php
       for($i=1;$i<=31;$i++){
         $value = $i<10 ? "0".$i : $i ;
         echo "<option value='$value'>$value</option>";
       }
       ?>   
     </select>
    

    Je te laisse faire pareil pour les années....

    <?php
    //Activation des erreurs PHP
    error_reporting(E_ALL);
    ini_set('display-errors','on');
    
    //connexion à la bdd
    require_once "cnxBdd.php";
    
    
    //traitement du submit
    
    // 1 - recuperation PROPRE des variables AVANT de les utiliser
    
    $nom = !empty($_POST['nom']) ? $_POST['nom'] : NULL;
    $prenom = !empty($_POST['prenom']) ? $_POST['prenom'] : NULL;
    $age = !empty($_POST['age']) ? $_POST['age'] : NULL;
    $jour = !empty($_POST['jour']) ? $_POST['jour'] : NULL;
    $mois = !empty($_POST['mois']) ? $_POST['mois'] : NULL;
    $annee = !empty($_POST['annee']) ? $_POST['annee'] : NULL;
    $courtebiographie = !empty($_POST['courtebiographie']) ? $_POST['courtebiographie'] : NULL;
    
    $datedebutcarriere = $annee.'-'.$mois.'-'.$jour ;
    
    
     if( $nom && $prenom && $age && $jour && $mois && $annee && $courtebiographie ){
       
      //insertion des données dans la BDD
      $datas = array('nom' => $nom,
                   'prenom' => $prenom,
                   'age' => $age,
                   'datedebutcarriere' => $datedebutcarriere,
                   'courtebiographie' => $courtebiographie);
      $sql = 'INSERT INTO joueur
                      (nom,prenom,age,datedebutcarriere,courtebiographie) 
                     VALUES(:nom, :prenom, :age, :datedebutcarriere, :courtebiographie)';
                     
    
      //Execution de la requete
      try{
        $requete = $bdd -> prepare($sql) ;
        $requete->execute($datas) ;   
      }catch(Exception $e){
        // en cas d'erreur :
         echo " Erreur ! ".$e->getMessage();
         echo " Les datas : " ;
        print_r($datas);
      } 
    } // fin du IF       
      
      //récupération de la liste des joueurs
      $sql = "SELECT * FROM joueur ";
      try{
        $requete = $bdd -> prepare($sql) ;
        $requete->execute();
        $resultat = $requete->fetchAll(); // on stocke le resultat de la requete dans un array    
      }catch(Exception $e){
        // en cas d'erreur :
         echo " Erreur ! ".$e->getMessage();
         echo " Les datas : " ;
        print_r($datas);
      } 
    
    
       //moyenne d'age des joueurs
       $requete = $bdd->query("SELECT AVG(age) AS age_moyen FROM joueur");
       $row = $requete->fetch(PDO::FETCH_ASSOC);
       $ageMoy = !empty($row) ? $row['age_moyen'] : 0;
         
    
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta charset="utf-8"/>
        <title> Formulaire </title>
      </head>
      <body >
       <form method="post"  action="index.php">
       
          <table>
          <tr>
           <td><label name="nom">nom: </label></td>
           <td><input type="text" name="nom" id="nom"/> </td>
          </tr>
          <tr>
           <td><label name="prenom">prenom: </label></td>
           <td><input type="text" name="prenom"/></td>
          </tr>
    
          <tr>
           <td><label name="age">age:</label></td>
           <td><input type="text" name="age"></td> 
          </tr>
    
    
          <tr>
           <td>date debut carriere </td>
           <td>
           <select name="jour">
            <option value="00">jour</option>
            <?php
             for($i=1;$i<=31;$i++){
               $value = $i<10 ? "0".$i : $i ;
               echo "<option value='$value'>$value</option>";
             }
             ?>   
           </select>
           </td>
           <td>
            <select name="mois">
            <option value="00">mois</option>
            <option value="01">janvier</option>
            <option value="02">fevrier</option>
            <option value="03">mars</option>
            <option value="04">avril</option>
            <option value="05">mai</option>
            <option value="06">juin</option>
            <option value="07">juillet</option>
            <option value="08">aout</option>
            <option value="09">septembre</option>
            <option value="10">octobre</option>
            <option value="11">novembre</option>
            <option value="12">decembre</option>
            </select>
           </td>
           <td>
            <select name="annee">
            <option value="0000">annee</option>
            <option value="1990">1990</option>
            <option value="1991">1991</option>
            <option value="1992">1992</option>
            <option value="1993">1993</option>
            <option value="1994">1994</option>
            <option value="1995">1995</option>
            <option value="1996">1996</option>
            <option value="1997">1997</option>
            <option value="1998">1998</option>
            <option value="1999">1999</option>
            <option value="2000">2000</option>
            <option value="2001">2001</option>
            </select>
           </td>
          </tr>
    
          <tr>
           <td><label name="courtebiographie">biographie: </label></td>
           <td><input type="text" name="courtebiographie"/></td>
          </tr>
          </br>
          <tr>
          <td>
          <input name="valider" type="submit" value="Enregistrer"/>  
          <input type="reset" name="annuler"  value="Annuler" />
          </td>
          </tr>
          </table>
          <!-- <a href="listejoueurs.php" rel="nofollow noopener noreferrer" target="_blank">afficher la liste des joueurs</a> </br> -->
          <!--<a href="moyenne.php" rel="nofollow noopener noreferrer" target="_blank">moyenne des ages</a> -->
       </form>
    
        <table border="1px" width="50%" align="center">
         <thead>
          <tr>
           <th colspan="8">liste des joueurs </th>
          </tr>
          </thead>
          <tbody>
           <tr>
            <td> id</td>
            <td> nom</td>
            <td> prenom</td>
            <td> age</td>
            <td> datedebutcarriere</td>
            <td> biographie</td>
            <td colspan="2" >modification et suppression</td>
           </tr>
           <tr></tr>
           <tr></tr>
           <tr></tr>
           <?php
           if(!empty($resultat)){
            foreach($resultat as $rst){
               $id= $rst["id"];
               $nom= $rst["nom"];
               $prenom= $rst["prenom"];
               $age= $rst["age"];
               $datedebutcarriere= $rst["datedebutcarriere"];
               $courtebiographie= $rst["courtebiographie"];
               
               echo '<tr>
                      <td>'.$id.'</td>
                      <td>'.$nom.'</td>
                      <td>'.$prenom.'</td>
                      <td>'.$age.'</td>
                      <td>'.$datedebutcarriere.'</td>
                      <td>'.$courtebiographie.'</td>
                      <td><a href="modifierjoueurs.php?id='.$id.'" rel="nofollow noopener noreferrer" target="_blank" title="modifier cette ligne">modifier</a></td>
                      <td><a href="supprimerjoueurs.php?id='.$id.'" rel="nofollow noopener noreferrer" target="_blank" title="supprimer cette ligne">supprimer</a></td>
                    </tr>';
                                     
            }
           }                  
           echo 'La moyenne des âge des joueurs est:'.$ageMoy; 
           ?>
           </tbody>
          </table>
      </body>
    </html>
    


    Cordialement, 
    Jordane                                                                 
    1
  2. hononul Messages postés 3 Statut Membre
     
    merci beaucoup
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 833
       
      Si la question est résolue ... merci de cliquer sur le bouton "RESOLU" sous le titre de ta question.
      0
  3. hononul Messages postés 3 Statut Membre
     
    bonjour
    j'aimerais que mon formulaire n'efface pas les champs déjà remplis si l'enregistrement n'a pas été envoyé dans la base. aidez moi svp
    0