Jquery: inserer les valeurs de mon formulaire dans mysql [Résolu]

- 24 juin 2016 à 19:21 - Dernière réponse :  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.
Afficher la suite 

Votre réponse

9 réponses

Messages postés
23311
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2018
25 juin 2016 à 01:25
0
Merci
Bonjour,

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

Franck >
Messages postés
23311
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2018
- 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!
Messages postés
23311
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2018
> 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.............
Franck >
Messages postés
23311
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2018
- 26 juin 2016 à 22:31
salut,
Bien merci je n'avais pas bien compris.
Voici un ECHO de la requête:
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('201652 w',upper('name'),'surname', 'Masculin', 'Marié(e)', '', '0', '0', '2016/06/26','PARIS', '71', '7', '0', '', '55', '5', '4', '5','2016/06/26','2016/06/26','2016/06/26','0','0','0', '***@***', CURDATE())

Je me rends compte effectivement qu'un ECHO renvoie 0 pour num_direction et vide ' ' pour num_service alors que selon mes choix ces valeurs devraient être respectivement 11 et 12. Je ne sais pas à quoi est dû cela.
Lorsque je copie cela dans phpmyadmin pour exécuter ça ne s'exécute pas. Voici l'erreur affichée dans phpmyadmin:
MySQL a répondu: Documentation

#1366 - Incorrect integer value: '' for column 'num_service' at row 1

Encore une fois merci! et je m'excuse d'être lent dans mes réactions car je suis débutant et en plus je n'ai pas la connexion internet à tout moment.
Messages postés
23311
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2018
> Franck - 26 juin 2016 à 23:40
Déjà... il semble que dans ton formulaire (que tu envoies en POST (submit)) tu as mis un ID ... mais pas de NAME à ton "service"
 <select id="service">

....ajoute l'attribut NAME...ça devrait mieux fonctionner.
Franck >
Messages postés
23311
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2018
- 27 juin 2016 à 05:26
Bonjour,
Bien merci à toi d'avoir pris le soin de lire tout mes codes et de bien m'expliquer.
Effectivement ça marche bien maintenant.
Infiniment merci et bonne suite!
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

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

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 et codes sources.

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