Jquery: inserer les valeurs de mon formulaire dans mysql

Résolu
Franck - Modifié par jordane45 le 25/06/2016 à 01:23
 Franck - 27 juin 2016 à 05:26
Bonjour,
j'ai un formulaire qui récupère les données saisies et sélectionnées par l'utilisateur pour insérer dans une table dans ma base de données. Ce formulaire contient des sélect liés dynamiquement et ça marche à l'aide de JQUERY/ajax.
Mon problème, en appelant le formulaire de traitement pour l'insertion dans ma base, il m'affiche une erreur General error: 1366 Incorrect integer value.
Merci d'avance à ceux qui voudront bien m'aider.

voici mes scripts

mon formulaire ajouter_membre.php
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
 <link rel="stylesheet" href="style.css" />
    <title>Système de gestion de la mutuelle des travailleurs du CENOU</title>
        <script type="text/javascript" src="jquery-3.0.0.min.js"></script>
        <script type="text/javascript" src="liste_dir_serv.js"></script>
  </head>
  <body>
     
  <p>
     <section>
  <form method="POST" action="nouveau_membre.php" name="formulaire">
    <p>
                <fieldset>
        <legend> Informations Personnelles</legend>
       <label for="nom">Nom </label>
                      <input type="text" name="nom" id="nom" value="" required/> <br><br>
                      <label for="prenom">Prénom(s)</label>
                      <input type="text" name="prenom" id="prenom" required/><br><br>
       <label for="sexe">Sexe<sup><font color="ff000000">*</font></sup></label> :
          <select  name="sexe" id="sexe" required/>
       <option value=""></option>
       <option value="Masculin">Masculin</option>
          <option value="Feminin">Féminin</option>
       </select><br><br>
                      <label for="nom_jeune_fille">Nom de jeune fille</label>
                      <input type="text" name="nom_jeune_fille" id="nom_jeune_fille" /> <br><br>
                      <label for="datenais">Date de naissance</label>
                      <input type="date" name="datenais" id="datenais" value="1956-12-12" required/><br><br>
       <label for="lieunais">Lieu de naissance</label>
                      <input type="text" name="lieunais" id="lieunais" required/><br><br>
    </fieldset> <br>
    <fieldset>
    <legend> Informations sur le poste</legend>
       <label for="mat">Numéro matricule</label>
                      <input type="text" name="mat" id="mat" required/><br><br>
       <label for="situ_mat">Situation matrimoniale<sup><font color="ff000000">*</font></sup></label> :
          <select  name="situ_mat" id="situ_mat" required/>
       <option value=""></option>
       <option value="Marié(e)">Marié(e)</option>
       <option value="Célibataire">Célibataire</option>
       <option value="Autre">Autre</option>
        </select><br><br>
       
       <label for="nb_enfants">Nombre d'enfants</label>
                      <input type="number" name="nb_enfants" id="nb_enfants" size=2 value="0" min="0" max="20"/><br><br>
       <label for="nb_enfants_a_charge">Nombre d'enfants à charge</label>
                      <input type="number" name="nb_enfants_a_charge" id="nb_enfants_a_charge" size=1 value="0" min="0" max="9"/><br><br>
              
       <label for="emploi">Veuillez sélectionner l'emploi du membre</label>
                      <?php 
                       $sqlquery_emp="select * from emploi";
                       $resultat_emp=$bd->query($sqlquery_emp)or die ("Echec de la requête");
        echo "<select name='emploi' id='emploi'>";
        while ($donnees_emp = $resultat_emp->fetch(PDO::FETCH_ASSOC))
          {
       echo "<option value='".$donnees_emp['num_emploi']."'>".$donnees_emp['num_emploi']." ".$donnees_emp['denomination_emploi']."</option>"; 
          }
       echo "</select>";
       $resultat_emp->closeCursor(); 
       //echo "<a class=button1 role=button id=button_ajouter target=wclose onclick=javascript:open_infos('new_emploi.php');> cliquer ici si nouvel emploi</a>";
                      //echo "<a class=button1 role=button id=button_ajouter href=new_emploi.php target=wclose onclick=window.open('new_emploi.php','wclose','width=500','height=300','toolbar=no','status=no','left=20','top=30')> cliquer ici si nouvel emploi</A>";
                      //$page="new_emploi"."php";
       //echo '<INPUT TYPE ="button" class="button1" value="cliquer ici si nouvel emploi" onClick="javascript.window.open("new_emploi.php","new","width=300,height=150")">';
       //echo'<input type="button" class="button1" role="button" id="button_ajouter" value="cliquer ici si nouvel emploi" onClick="new_window($page)">';
      // echo'<a class="button1" role="button" id="button_ajouter" href="new_emploi.php" target="_blank">cliquer ici si nouvel emploi</a>';
       ?>
       <br><br>
       
       <label for="fonction">Veuillez sélectionner la fonction du membre</label>
                      <?php 
                       $sqlquery_fonction="select * from fonction";
                       $resultat_fonction=$bd->query($sqlquery_fonction)or die ("Echec de la requête");
        echo "<select name='fonction' id='fonction'>";
       // $resultat->setFetchMode(PDO::FETCH_OBJ);
       while ($donnees_fonction = $resultat_fonction->fetch(PDO::FETCH_ASSOC))
          {
       echo "<option value='".$donnees_fonction['num_fonction']."'>".$donnees_fonction['num_fonction']." ".$donnees_fonction['denomination_fonction']."</option>"; 
          }
       echo "</select>";
       $resultat_fonction->closeCursor();        
       ?>
       <br><br>
       
       <label for="categorie">Veuillez sélectionner la categorie du membre</label>
                      <?php 
                       $sqlquery_categorie="select * from categorie";
                       $resultat_categorie=$bd->query($sqlquery_categorie)or die ("Echec de la requête");
        echo "<select name='categorie' id='categorie'>";
       // $resultat->setFetchMode(PDO::FETCH_OBJ);
       while ($donnees_categorie = $resultat_categorie->fetch(PDO::FETCH_ASSOC))
          {
            echo "<option value='".$donnees_categorie['num_categorie']."'>".$donnees_categorie['num_categorie']." ".$donnees_categorie['denomination_categorie']."</option>"; 
          }
       echo "</select>";
       $resultat_categorie->closeCursor();        
       ?>
       <br><br>
       
       <label for="salaire">Veuillez sélectionner le salaire du membre</label>
                      <?php 
                       $sqlquery_salaire="select * from salaire";
                       $resultat_salaire=$bd->query($sqlquery_salaire)or die ("Echec de la requête");
        echo "<select name='salaire' id='salaire'>";
       // $resultat->setFetchMode(PDO::FETCH_OBJ);
       while ($donnees_salaire = $resultat_salaire->fetch(PDO::FETCH_ASSOC))
          {
            echo "<option value='".$donnees_salaire['num_salaire']."'>".$donnees_salaire['num_salaire']." ".$donnees_salaire['montant']."</option>"; 
          }
       echo "</select>";
       $resultat_salaire->closeCursor();        
       ?>
       <br><br>
       
       <label for="direction">Veuillez sélectionner la direction du membre</label>
                      <select name="direction" id="direction">
                          <option value="">Choisir la direction</option>
                      </select>
               <?php 
                       // $sqlquery_direction="select * from direction";
                       // $resultat_direction=$bd->query($sqlquery_direction)or die ("Echec de la requête");
        // echo "<select name='direction' id='direction'>";
       // while ($donnees_direction = $resultat_direction->fetch(PDO::FETCH_ASSOC))
          // {
            // echo "<option value='".$donnees_direction['num_direction']."'>".$donnees_direction['num_direction']." ".$donnees_direction['denomination_direction']."</option>"; 
          // }
       // echo "</select>";
       // $resultat_direction->closeCursor();        
       ?>
       <br><br>
       
       <label for="service">Veuillez sélectionner le service du membre</label>
                      <select id="service">
                  <option value="">Choisir le service</option>
                     </select>
                <?php 
                       // $sqlquery_service="select * from service";
                       // $resultat_service=$bd->query($sqlquery_service)or die ("Echec de la requête");
        // echo "<select name='service' id='service'>";
       // while ($donnees_service = $resultat_service->fetch(PDO::FETCH_ASSOC))
          // {
            // echo "<option value='".$donnees_service['num_service']."'>".$donnees_service['num_service']." ".$donnees_service['denomination_service']."</option>"; 
          // }
       // echo "</select>";
       // $resultat_service->closeCursor();        
       ?>
       <br><br>
       
       <label for="groupe">Veuillez sélectionner le groupe du membre</label>
                      <?php 
                       $sqlquery_groupe="select * from groupe";
                       $resultat_groupe=$bd->query($sqlquery_groupe)or die ("Echec de la requête");
        echo "<select name='groupe' id='groupe'>";
       // $resultat->setFetchMode(PDO::FETCH_OBJ);
       while ($donnees_groupe = $resultat_groupe->fetch(PDO::FETCH_ASSOC))
          {
       echo "<option value='".$donnees_groupe['num_groupe']."'>".$donnees_groupe['num_groupe']." ".$donnees_groupe['denomination_groupe']."</option>"; 
          }
       echo "</select>";
       $resultat_groupe->closeCursor();        
       ?>
       <br><br>
       
       <label for="section">Veuillez sélectionner la section du membre</label>
                      <?php 
                       $sqlquery_section="select * from section";
                       $resultat_section=$bd->query($sqlquery_section)or die ("Echec de la requête");
        echo "<select name='section' id='section'>";
       // $resultat->setFetchMode(PDO::FETCH_OBJ);
       while ($donnees_section = $resultat_section->fetch(PDO::FETCH_ASSOC))
          {
       echo "<option value='".$donnees_section['num_section']."'>".$donnees_section['num_section']." ".$donnees_section['denomination_section']."</option>"; 
          }
       echo "</select>";
       $resultat_section->closeCursor();        
       ?>
       <br><br>
       
       <label for="daterecrutement">Date recrutement</label>
                      <input type="date" name="daterecrutement" id="daterecrutement" value="2010-12-12"/><br><br>
       <label for="dateadhesion">Date d'adhésion</label>
                      <input type="date" name="dateadhesion" id="dateadhesion" /><br><br>
       <label for="datesortie">Date de sortie</label>
                      <input type="date" name="datesortie" id="datesortie" /><br><br>
       <label for="tel1">Numéro de téléphone prioritaire </label>
                      <input type="telephone" name="tel1" id="tel1" size="8" onblur="veriftel(this)" /><br><br>
       <label for="tel2">Numéro de téléphone secondaire </label>
                      <input type="telephone" name="tel2" id="tel2" size="8" onblur="veriftel(this)" /><br><br>
       <label for="tel3">Autre numéro de téléphone </label>
                      <input type="telephone" name="tel3" id="tel3" size="8" onblur="veriftel(this)" /><br><br>
       <label for="email">Adresse électronique <sup><font color="ff000000">*</font></sup> : </label>
       <input type="email" name="email" id="email" onblur="verifmail(this)"></p>
       <!--<label for="fond">Participation au fonds d’établissement :</label><br><br>
       <label>Du :</label>
                      <input type="date" name="datedebut" id="datedebut" /><br><br>
       <label>Au :</label>
                      <input type="date" name="datefin" id="datefin" /><br><br>-->
    </fieldset>    
    </p>
    <p><input type="submit" value="Enregistrer" class="button" role="button" id="button_ajouter" name="enregistrer"></p>
    </form>
  </section>
  </p>
  </body>
  
</html>



mon javascript liste_dir_serv.js
// JavaScript Document
$(document).ready(function() {
 var $direction = $('#direction');
 var $service = $('#service');
 
 // chargement de la liste de direction
 $.ajax({
  url: 'liste_dir_serv.php',
  data: 'go', // on envoie $_GET['go']
  dataType: 'json', // on veut un retour JSON
  success: function(json) {
   $.each(json, function(index, value) {
    // pour chaque noeud JSON
    // on ajoute l option dans la liste
    $('#direction').append('<option value="'+ index +'">'+ value +'</option>');
   });
  }
 });

 // à la sélection de la direction dans la liste
 $direction.on('change', function() {
  //var val=$('#direction option:selected').val();
  var val = $(this).val(); // on récupère la valeur de la direction
  if(val != '') {
   $service.empty(); // on vide la liste de service
   $service.append('<option value="">Choisir le service</option>');
 
   $.ajax({
    url: 'liste_dir_serv.php',
    data: 'direction='+ val, // on envoie $_GET['direction']
    dataType: 'json',
    success: function(json) {
     $.each(json, function(index, value) {
      $service.append('<option value="'+ index +'">'+ value +'</option>');
     });
    }
   });
  }
  else {
   $service.empty();
   $service.append('<option value="">Choisir le service</option>');
   }
 });
});


mon script php qui permet de lier les select de façon dynamique liste_dir_serv.php
<?php
// Vérification des paramètres d'accès au fichier liste_dir_serv.php
if(isset($_GET['go']) || isset($_GET['direction'])) {
 // connexion à la base de données
 include("connexion.php");
 $json = array();
 
 if(isset($_GET['go'])) {
  // requête qui récupère les directions
  $requete = "select * from direction ORDER BY denomination_direction ASC";
  // exécution de la requête
  $resultat = $bd->query($requete) or die(print_r($bd->errorInfo()));
  // Création de la liste
  while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
   // je remplis un tableau et mettant l'id en index
   $json[$donnees["num_direction"]][] = utf8_encode($donnees["denomination_direction"]);
  }
 }
 elseif(isset($_GET['direction'])) {
  // requête qui récupère les directions
  $requete = "SELECT * FROM service WHERE num_direction = '".$_GET['direction']."' ORDER BY denomination_service ASC";
  // exécution de la requête
  $resultat = $bd->query($requete) or die(print_r($bd->errorInfo()));
  // Création de la liste
  while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
   // je remplis un tableau et mettant l'id en index
   $json[$donnees["num_service"]][] = utf8_encode($donnees["denomination_service"]);
  }
 }
 // envoi du résultat au success
 echo json_encode($json);
}

?>

et enfin mon formulaire de traitement nouveau_membre .php

<!DOCTYPE HTML>
<html>
 <head>
  <meta charset="utf-8"/>
  <link rel="stylesheet" href="style.css"/>
  <title>Système de gestion de la mutuelle des travailleurs du CENOU</title>
 </head>
 <body>
<head>
  <img src="banniere.png" alt="bannière" />
  <hr noshade="noshade">
</head>
  <?php include("verif_acces.php");?>
  <?php include("menu.php");?>
  <?php include("connexion.php");?>
<?php
/* ini_set('display_errors','off'); 
session_start();*/
?>

<?php
  $nom=$_POST['nom'];
  $prenom=$_POST['prenom'];
  $sexe=$_POST['sexe'];
  $nom_jeune_fille=$_POST['nom_jeune_fille'];
  $datenais=['datenais'];
  /*<?php
  $datenais = checkdate($jour, $mois, $annee);

  if( $datenais == true )
  {
      echo 'la date est valide';
  }
  else
  {
      echo 'la date n\'est pas valide';
  }

?>*/
  $lieunais=$_POST['lieunais'];
  $mat=$_POST['mat'];
  $situ_mat=$_POST['situ_mat'];
  $nb_enfants=$_POST['nb_enfants'];
  $nb_enfants_a_charge=$_POST['nb_enfants_a_charge'];
  $emploi=$_POST['emploi'];
  $salaire=$_POST['salaire'];
  $fonction=$_POST['fonction'];
  $categorie=$_POST['categorie'];
  $direction = (isset($_POST['direction'])) ? intval($bd->quote($_POST['direction'])) : NULL;
  //$direction=$_POST['direction'];
  $service = (isset($_POST['service'])) ? $bd->quote($_POST['service']) : NULL;
  //$service=$_POST['service'];
  $section=$_POST['section'];
  $groupe=$_POST['groupe'];
  $daterecrutement=$_POST['daterecrutement'];
  $dateadhesion=$_POST['dateadhesion'];
  $datesortie=$_POST['datesortie'];
  /* $daterecrutement=implode('/', array_reverse( explode('/',$daterecrutement) ) ) ;
  $dateadhesion=implode('/', array_reverse( explode('/',$dateadhesion) ) ) ;
  $datesortie=implode('/', array_reverse( explode('/',$datesortie) ) ) ;
  $datenais=implode('/', array_reverse( explode('/',$datenais) ) ) ; */
  $daterecrutement=date('Y/m/d');//, str_to_date($daterecrutement));
  $dateadhesion=date('Y/m/d');//,strtotime($dateadhesion));
  $datesortie=date('Y/m/d');//,strtotime($datesortie));
  $datenais=date('Y/m/d');//,strtotime($datenais));
 
      $tel1=$_POST['tel1'];
      $tel2=$_POST['tel2'];
      $tel3=$_POST['tel3'];
      $tabCar = array(" ","-","/", "\t", "\n", "\r", "\0", "\x0B", "\xA0");
      $tel1 = intval(str_replace($tabCar, array(), $tel1));
      $tel2 = intval(str_replace($tabCar, array(), $tel2));
      $tel3 = intval(str_replace($tabCar, array(), $tel3));
   $email=$_POST['email'];
 
             $verif_mat = $bd->query("SELECT num_mat FROM membre WHERE num_mat='$mat'");
  if ($verif_mat->rowCount()!= 0) {echo'<br>';echo'<br>';echo 'Ce membre existe déjà';echo'<br>';
                                        echo ' <p><a href="ajouter_membre.php" class="liens">Recommencez !</a> </p> ';  }
                           else
                           {

  $sqlquery1="insert into membre (num_mat, nom, prenom, sexe, situ_mat , nom_jeune_fille, nb_enfants, nb_enfants_a_charge, date_nais, lieu_nais, num_emploi, num_fonction, num_direction, num_service, num_categorie, num_salaire, num_groupe, num_section, daterecrutement, dateadhesion, datesortie, tel1, tel2, tel3, email, dateinscription)
  values('$mat',upper('$nom'),'$prenom', '$sexe', '$situ_mat', '$nom_jeune_fille', '$nb_enfants', '$nb_enfants_a_charge', '$datenais','$lieunais', '$emploi', '$fonction', '$direction', '$service', '$categorie', '$salaire', '$groupe', '$section','$daterecrutement','$dateadhesion','$datesortie','$tel1','$tel2','$tel3', '$email', CURDATE())";
  
  $sqlqueryresult=$bd->exec($sqlquery1)or die ("Echec de l'enregistrement");
  //$sqlqueryresult=mysql_query($sqlquery1)or die ("Echec de l'enregistrement");
   echo "<p><br><br><strong> L´enregistrement a été effectué </strong></p>";/* } */
   echo"<p><a href='liste_membre.php'>Continuer</a></p>";
                           }
 
?>

</div>

</body>
</html>




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

Merci d'y penser dans tes prochains messages.

1 réponse

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
25 juin 2016 à 01:25
Bonjour,

Quel est le message d'erreur EXACT et COMPLET ?
et dis nous à quel moment ce message apparait...

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
25 juin 2016 à 01:27
Si c'est au niveau de la requête que se produit l'erreur.... peux tu faire un echo de ta variable $sqlquery1 et nous dire ce que ça donne ?
0
Franck > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
25 juin 2016 à 20:18
salut,
Bien merci
En fait le problème ne doit pas être au niveau de la requête car j'utilisait la même requête et ça marchait avant que je n'utilise le jquery pour rendre les select dynamiques entre direction et service
voici les messages d'erreur au complet:

( ! ) Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'num_service' at row 1' in C:\wamp64\www\GESMUTUELLE\nouveau_membre.php on line 86

( ! ) PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'num_service' at row 1 in C:\wamp64\www\GESMUTUELLE\nouveau_membre.php on line 86


ces messages se produisent quand je clique sur enregistrer du formulaire ajouter_membre.php.
Merci pour ton aide!
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344 > Franck
25 juin 2016 à 20:29
Hum... si si.. j'insiste. .. fais un echo de ta requête et colle le resultat ici.
Et ensuites... testes la directement dans ta bdd via phpmyadmin. ..
0
Franck > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
26 juin 2016 à 01:25
salut,
voici ma requête:
$sqlquery1="insert into membre (num_mat, nom, prenom, sexe, situ_mat , nom_jeune_fille, nb_enfants, nb_enfants_a_charge, date_nais, lieu_nais, num_emploi, num_fonction, num_direction, num_service, num_categorie, num_salaire, num_groupe, num_section, daterecrutement, dateadhesion, datesortie, tel1, tel2, tel3, email, dateinscription)
values('$mat',upper('$nom'),'$prenom', '$sexe', '$situ_mat', '$nom_jeune_fille', '$nb_enfants', '$nb_enfants_a_charge', '$datenais','$lieunais', '$emploi', '$fonction', '$direction', '$service', '$categorie', '$salaire', '$groupe', '$section','$daterecrutement','$dateadhesion','$datesortie','$tel1','$tel2','$tel3', '$email', CURDATE())";


et voici un exemple que j'ai exécuté avec succès dans phpmyadmin:
insert into membre (num_mat, nom, prenom, sexe, situ_mat , nom_jeune_fille, nb_enfants, nb_enfants_a_charge, date_nais, lieu_nais, num_emploi, num_fonction, num_direction, num_service, num_categorie, num_salaire, num_groupe, num_section, daterecrutement, dateadhesion, datesortie, tel1, tel2, tel3, email, dateinscription) values('200780p','name','surname', 'masculin', 'célibataire', 'nom_jeune_fille', 0, 0, '2000-02-01','2016-02-01', 71, 7, 11, 10, 55, 5, 4, 5,'2016-02-01','2016-02-01','2016-02-01',70110022,70110022,70110022, 'bkoo','2016-02-01')


Encore merci!
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344 > Franck
26 juin 2016 à 01:37
Heuu....
Je n'ai pas demandé de me montré ta requête (en code) ... ni un exemple tenté en direct dans ta BDD.....

Je t'ai demandé de faire un ECHO de ta requête (dans ton code)... de voir ce que ça te retourne à l'affichage dans ta page (ou dans la console du navigateur vu que c'est en ajax)
puis d'utiliser ce retour pour le coller dans ton phpmyadmin et ainsi voir où se situe l'erreur.............
0
Rejoignez-nous