Probléme de formulaire [Résolu]

Signaler
Messages postés
74
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
26 mai 2011
-
Messages postés
74
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
26 mai 2011
-
Bonjour a tous je vient de creer un formulaire mais j'ai un probléme lors de l'enregistrement.
En clair quand je valide mon formulaire rien ne s'enregistre dans la base mysql.
Es parce que j'ai trop de champ???

Merci d'avance.

voici le script:



<!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" lang="fr" xml:lang="fr">
<head>
<title>Interfacage de MySQL avec PHP</title>
<link rel="stylesheet" type="text/css" media="all" href="exemples.css" />
</head>

Gestion PMU

<?php

switch($_POST['action'])
{

  // INSERTION DANS LA BASE
  case "inserer":
 
    // déclaration de quelques variables
    $user="root";
    $host="localhost";
    $pass="";
    $bdd ="pmu_1";
    $table = "test_2";
   
    // connection avec MySQL
    @mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base de données"); // Le @ indique à php de ne pas afficher de message d'erreur
    @mysql_select_db($bdd) or die("Impossible de se connecter à la base de données");
   
    // affichage sélection
    echo 'Enregistrement de la course ' . htmlentities($_POST['nom']) . ', le ' . htmlentities($_POST['datecourse']) . ', sur une distance de ' . htmlentities($_POST['email']) . 'a ' . htmlentities($_POST['lieucourse']) . '

';
    echo '1er => ' . htmlentities($_POST['premiernumero']) . ' | ' . htmlentities($_POST['premiercheval']) . ' | ' . htmlentities($_POST['premierjocker']) . '

';
    echo '2éme => ' . htmlentities($_POST['dexiemenumero']) . ' | ' . htmlentities($_POST['dexiemecheval']) . ' | ' . htmlentities($_POST['dexiemejocker']) . '

';
    echo '3éme => ' . htmlentities($_POST['troisiemenumero']) . ' | ' . htmlentities($_POST['troisiemecheval']) . ' | ' . htmlentities($_POST['troisiemejocker']) . '

';
    echo '4éme => ' . htmlentities($_POST['quatrenumero']) . ' | ' . htmlentities($_POST['quatrecheval']) . ' | ' . htmlentities($_POST['quatrejocker']) . '

';
    echo '5éme => ' . htmlentities($_POST['cinqnumero']) . ' | ' . htmlentities($_POST['cinqcheval']) . ' | ' . htmlentities($_POST['cinqjocker']) . '

';
    // stockage dans la bdd
    $lieucourse = $_POST['lieucourse'];
    $nom = $_POST['nom'];
    $email = $_POST['email'];
    $datecourse = $_POST['datecourse'];
    $premiernumero = $_POST['premiernumero'];
    $premiercheval = $_POST['premiercheval'];
    $premierjocker = $_POST['premierjocker'];
    $dexiemenumero = $_POST['dexiemenumero'];
    $dexiemecheval = $_POST['dexiemecheval'];
    $dexiemejocker = $_POST['dexiemejocker'];
    $troisiemenumero = $_POST['troisiemenumero'];
    $troisiemecheval = $_POST['troisiemecheval'];
    $troisiemejocker = $_POST['troisiemejocker'];
    $quatrenumero = $_POST['quatrenumero'];
    $quatrecheval = $_POST['quatrecheval'];
    $quatrejocker = $_POST['quatrejocker'];
    $cinqnumero = $_POST['cinqnumero'];
    $cinqcheval = $_POST['cinqcheval'];
    $cinqjocker = $_POST['cinqjocker'];
        if(!get_magic_quotes_gpc())
      {
        // si php n'est pas configuré pour le faire automatiquement, on ajoute des \ devant les '
        // deux raisons : autoriser d'ajouter des ', et sécuriser notre requete
        // on y reviendra dans un prochain tutorial
        $lieucourse = addslashes($lieucourse);
      $nom = addslashes($nom);
        $email = addslashes($email);
      $datecourse = addslashes($datecourse);
      $premiernumero = addslashes($premiernumero);
      $premiercheval = addslashes($premiercheval);
      $premierjocker = addslashes($premierjocker);
      $dexiemenumero = addslashes($dexiemenumero);
      $dexiemecheval = addslashes($dexiemecheval);
      $dexiemejocker = addslashes($dexiemejocker);
      $troisiemenumero = addslashes($troisiemenumero);
      $troisiemecheval = addslashes($troisiemecheval);
      $troisiemejocker = addslashes($troisiemejocker);
      $quatrenumero = addslashes($quatrenumero);
      $quatrecheval = addslashes($quatrecheval);
      $quatrejocker = addslashes($quatrejocker);
      $cinqnumero = addslashes($cinqnumero);
      $cinqcheval = addslashes($cinqcheval);
      $cinqjocker = addslashes($cinqjocker);
          }
    $sql = "INSERT INTO " . $table . "(lieucourse, nom, email, datecourse, premiernumero, premiercheval, premierjocker, dexiemenumero, dexiemecheval, dexiemejocker, troisiemenumero, troisiemecheval, troisiemejocker, quatrenumero, quatrecheval, quatrejocker, cinqnumero, cinqcheval, cinqjocker, dateheure) VALUES('" . $lieucourse . "','" . $nom . "','" . $email . "','" . $datecourse . "','" . $premiernumero . "','" . $premiercheval . "','" . $premierjocker . "','" . $dexiemenumero . "','" . $dexiemecheval . "','" . $dexiemejocker . "','" . $troisiemenumero . "','" . $troisiemecheval . "','" . $troisiemejocker . "','" . $quatrenumero . "','" . $quatrecheval . "','" . $quatrejocker . "','" . $cinqnumero . "','" . $cinqcheval . "','" . $cinqjocker . "', NOW())";
    $res = mysql_query($sql);
   
    // déconnection avec MySQL
    mysql_close();
   
  break;
 
  // AFFICHAGE FORMULAIRE HTML
  default:
   
    ?>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
   
    &nbsp;

          ----

        &nbsp;,
        ,
     
      ----

        &nbsp;,
        ,
     
      ----

        &nbsp;,
        ,
     
      ----

        &nbsp;,
        ,
     
      ----

        &nbsp;,
       
       
        ,
     
      ----

        &nbsp;,
       
       
        ,
     
      ----

        &nbsp;,
                 

         

       ,
     
      ----

        &nbsp;,
                 
         
         
       ,
     
      ----

        &nbsp;,
                 
         
          ,
     
      ----

        &nbsp;,
        ,
     
   

    &nbsp;

    &nbsp;

    &nbsp;

    </form>
    <?
 
  break;
 
}

?>

</html>

3 réponses

Messages postés
151
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 juillet 2018

je t'ai legerement modifier le script:
- j'ai supprimer l'input hidden 'action', et j'ai renomé le bouton submit en "action".
- le script verifie l'existance de $_POST['action'] , comme dit pas malalam[auteurdetail.aspx?ID= 58031 ]
- le switch a été sucré
- l'utilisation de addslash n'est plus subordoné a l'absence de get_magic_quotes_gpc
en principe, ça devrait tres bien marcher.

au fait, tu a des champs de 27.5 px .... c'est impossible, je les ai mis a 27

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<title>Interfacage de MySQL avec PHP</title>
<link rel="stylesheet" type="text/css" media="all" href="exemples.css" />
</head>

Gestion PMU

<?php
if (isset($_POST['action']) && $_POST['action'] == "Inserer" ){

    // déclaration de quelques variables
    $user="root";
    $host="localhost";
    $pass="";
    $bdd ="pmu_1";
    $table = "test_2";
  
    // connection avec MySQL
    @mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base de données");
   
    // Le @ indique à php de ne pas afficher de message d'erreur
    @mysql_select_db($bdd) or die("Impossible d'accéder a la table");
  
    // stockage dans la bdd
    $lieucourse = addslashes($_POST['lieucourse']);
    $nom = addslashes($_POST['nom']);
    $email =addslashes( $_POST['email']);
    $datecourse = addslashes($_POST['datecourse']);
    $premiernumero = addslashes($_POST['premiernumero']);
    $premiercheval = addslashes($_POST['premiercheval']);
    $premierjocker = addslashes($_POST['premierjocker']);
    $dexiemenumero = addslashes($_POST['dexiemenumero']);
    $dexiemecheval = addslashes($_POST['dexiemecheval']);
    $dexiemejocker = addslashes($_POST['dexiemejocker']);
    $troisiemenumero = addslashes($_POST['troisiemenumero']);
    $troisiemecheval = addslashes($_POST['troisiemecheval']);
    $troisiemejocker = addslashes($_POST['troisiemejocker']);
    $quatrenumero = addslashes($_POST['quatrenumero']);
    $quatrecheval = addslashes($_POST['quatrecheval']);
    $quatrejocker = addslashes($_POST['quatrejocker']);
    $cinqnumero = addslashes($_POST['cinqnumero']);
    $cinqcheval = addslashes($_POST['cinqcheval']);
    $cinqjocker = addslashes($_POST['cinqjocker']);

    $sql = "INSERT INTO " . $table . "(lieucourse, nom, email, datecourse, premiernumero, premiercheval, premierjocker, dexiemenumero, dexiemecheval, dexiemejocker, troisiemenumero, troisiemecheval, troisiemejocker, quatrenumero, quatrecheval, quatrejocker, cinqnumero, cinqcheval, cinqjocker, dateheure) VALUES('" . $lieucourse . "','" . $nom . "','" . $email . "','" . $datecourse . "','" . $premiernumero . "','" . $premiercheval . "','" . $premierjocker . "','" . $dexiemenumero . "','" . $dexiemecheval . "','" . $dexiemejocker . "','" . $troisiemenumero . "','" . $troisiemecheval . "','" . $troisiemejocker . "','" . $quatrenumero . "','" . $quatrecheval . "','" . $quatrejocker . "','" . $cinqnumero . "','" . $cinqcheval . "','" . $cinqjocker . "', NOW())";
    $res = mysql_query($sql) or die(" Une erreur est survenue lors de l'enregistrement
".mysql_errno()." : ".mysql_error());

        // affichage sélection
    echo 'Enregistrement de la course ' . htmlentities($_POST['nom']) . ', le ' . htmlentities($_POST['datecourse']) . ', sur une distance de ' . htmlentities($_POST['email']) . 'a ' . htmlentities($_POST['lieucourse']) . '

';
    echo '1er => ' . htmlentities($_POST['premiernumero']) . ' | ' . htmlentities($_POST['premiercheval']) . ' | ' . htmlentities($_POST['premierjocker']) . '

';
    echo '2éme => ' . htmlentities($_POST['dexiemenumero']) . ' | ' . htmlentities($_POST['dexiemecheval']) . ' | ' . htmlentities($_POST['dexiemejocker']) . '

';
    echo '3éme => ' . htmlentities($_POST['troisiemenumero']) . ' | ' . htmlentities($_POST['troisiemecheval']) . ' | ' . htmlentities($_POST['troisiemejocker']) . '

';
    echo '4éme => ' . htmlentities($_POST['quatrenumero']) . ' | ' . htmlentities($_POST['quatrecheval']) . ' | ' . htmlentities($_POST['quatrejocker']) . '

';
    echo '5éme => ' . htmlentities($_POST['cinqnumero']) . ' | ' . htmlentities($_POST['cinqcheval']) . ' | ' . htmlentities($_POST['cinqjocker']) . '

';
  
    // déconnection avec MySQL
    mysql_close();

}else{

    ?>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    &nbsp;

          ----

        &nbsp;,
        ,
     
      ----

        &nbsp;,
        ,
     
      ----

        &nbsp;,
        ,
     
      ----

        &nbsp;,
        ,
     
      ----

        &nbsp;,
       
       
        ,
     
      ----

        &nbsp;,
       
       
        ,
     
      ----

        &nbsp;,
               
       
               ,
     
      ----

        &nbsp;,
                 
         
         
       ,
     
      ----

        &nbsp;,
                 
         
          ,
     
      ----

        &nbsp;,
        ,
     
   

    &nbsp;

    &nbsp;

    &nbsp;

    </form>
<?php } ?>

</html>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

plusieurs choses :
- mets error_reporting (E_ALL); en début de page. Ca règlera la gestion des erreurs correctement, et tu verras les erreurs produites dans tons cript.
- tu as un bouton de type submit pour valider ton formulaire. Sa valeur est "Ok", son nom est "Submit" (mauvaise idée...au passage). Tu as un champ de type caché qui s'appelle action et qui a pour valeur "insérer".
- en début de page, tu testes un $_POST['action'] (problème déjà : tu le testes sur sa valeur sans te demander s'il existe!) et tu switches sur sa valeur. En clair, tu testes le champ caché de ton formulaire. Pourquoi pas. Sauf que tu devrais déjà tester l'existence de cette variable hein, parce que quand tu arrives la 1ère fois sur ta page, elle n'existe pas! (tu le verras avec error_reporting (E_ALL);

Bref, sans avoir regardé le code plus en détail, ça devrait à peu près fonctionner. Ca doit donc se situer au niveau de la requête, ou de l'arrivée dans le switch.
Plusieurs trucs à faire pour débugger : vire les @... devant tes fonctions (ça masque les erreurs...pas pratique pour débugger) (d'ailleurs, même en prod, si tu utilises @, pense à attraper toute erreur : if (false === @fonction) {// gestion de l'erreur}).
Tu verras si tu arrives à te connecter. Mets un echo 'test' aussi dans le case de ton switch pour voir si tu entres bien dans le cas "inserer".
Bref, faut debugger. echo est trsè pratique pour ça, travailler au niveau de log des erreurs le plus élevé,  et tester le retour de toutes tes fonctions! : if (false ($res mysql_query ($query))) {echo 'erreur, la requête n\'a pas pu aboutir : '.mysql_error();}
Messages postés
74
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
26 mai 2011

Et ben parfait cela fonctionne a merveille je vous remercie de votre aide. Sympa les gas!!!