Signaler

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

Posez votre question hononul 3Messages postés jeudi 13 avril 2017Date d'inscription 14 avril 2017 Dernière intervention - Dernière réponse le 14 avril 2017 à 10:26 par hononul
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
Utile
+1
plus moins
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é ?  
Donnez votre avis
Utile
+0
plus moins
merci beaucoup
jordane45 18455Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 19 octobre 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.
Répondre
Donnez votre avis
Utile
+0
plus moins
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
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !