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

Résolu/Fermé
hononul Messages postés 3 Date d'inscription jeudi 13 avril 2017 Statut Membre Dernière intervention 14 avril 2017 - Modifié le 13 avril 2017 à 13:03
hononul Messages postés 3 Date d'inscription jeudi 13 avril 2017 Statut Membre Dernière intervention 14 avril 2017 - 14 avril 2017 à 10:26
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
A voir également:

3 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 13 avril 2017 à 14:11
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
hononul Messages postés 3 Date d'inscription jeudi 13 avril 2017 Statut Membre Dernière intervention 14 avril 2017
13 avril 2017 à 14:08
merci beaucoup
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
13 avril 2017 à 14:11
Si la question est résolue ... merci de cliquer sur le bouton "RESOLU" sous le titre de ta question.
0
hononul Messages postés 3 Date d'inscription jeudi 13 avril 2017 Statut Membre Dernière intervention 14 avril 2017
14 avril 2017 à 10:26
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