Je veux empêcher mon formulaire d'envoyer un formulaire vide [Résolu]

hononul 3 Messages postés jeudi 13 avril 2017Date d'inscription 14 avril 2017 Dernière intervention - 13 avril 2017 à 12:58 - Dernière réponse : hononul 3 Messages postés jeudi 13 avril 2017Date d'inscription 14 avril 2017 Dernière intervention
- 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
Afficher la suite 

4 réponses

Répondre au sujet
jordane45 19246 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 14 décembre 2017 Dernière intervention - Modifié par jordane45 le 13/04/2017 à 14:11
+1
Utile
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                                                                 
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jordane45
hononul 3 Messages postés jeudi 13 avril 2017Date d'inscription 14 avril 2017 Dernière intervention - 13 avril 2017 à 14:08
0
Utile
1
merci beaucoup
jordane45 19246 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 14 décembre 2017 Dernière intervention - 13 avril 2017 à 14:11
Si la question est résolue ... merci de cliquer sur le bouton "RESOLU" sous le titre de ta question.
Commenter la réponse de hononul
hononul 3 Messages postés jeudi 13 avril 2017Date d'inscription 14 avril 2017 Dernière intervention - 14 avril 2017 à 10:26
0
Utile
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
Commenter la réponse de hononul