Comment enregistrer formulaire dans Mysql ?

Résolu/Fermé
hellfirewar Messages postés 57 Date d'inscription lundi 16 août 2010 Statut Membre Dernière intervention 13 septembre 2011 - 7 juil. 2011 à 18:39
prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 - 7 juil. 2011 à 22:25
Bonjour,
Voila dans mon formulaire PHP d'inscription j'ai créer un champ date de naissance comme ceci :
<label class="form_col" for="country">Date de naissance :</label>

<select name="country" id="country">
<option value="none">Jour</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
..
</select>
<select name="country" id="country">
<option value="none">Mois</option>
<option value="1">Janvier</option>
<option value="2">Fevrier</option>
<option value="3">Mars</option>
<option value="4">Avril</option>
...

</select>
<select name="country" id="country">
<option value="1900">1900</option>
<option value="1901">1901</option>
<option value="1902">1902</option>
<option value="1903">1903</option>
...
</select>

Mais voila comment je dois faire pour enregistrer les champs sélectionner dans ma table membres ? Ou si il y a un autre moyen de le faire explique moi s'il vous plait =)
Grand merci a vous, bonne soirée ;)

A voir également:

12 réponses

Hello,


Tu as déja un problème au niveau de tes balises select : <select name="country" id="country">

Elles ont toutes le même name et le même id

Le name doit correspondre au type des options. Pour l'année: <select name="annee" id="select_annee"> par exemple. Une fois que c'est corrigé je t'aide pour la récupération et l'insertion des données.
0
hellfirewar Messages postés 57 Date d'inscription lundi 16 août 2010 Statut Membre Dernière intervention 13 septembre 2011 1
7 juil. 2011 à 19:27
Voila c'est corriger =) Merci de ton aide
0
Alors je t'ai crée un script pour valider ton formulaire pour être sûr que la date est valide:

<form method="post"> 
   Année<input type="text" name="annee" value="<?php print $_POST['annee']; ?>"/> 
   Mois<input type="text" name="mois" value="<?php print $_POST['mois']; ?>"/> 
   Jour<input type="text" name="jour" value="<?php print $_POST['jour']; ?>"/> 
   <input type="submit" value="envoyer"/> 
</form> 
<?php 
  if(isset($_POST['annee']) && isset($_POST['mois']) && isset($_POST['jour'])){ 
   $error = false; 
   $annee = $_POST['annee']; 
    //Vérification de l'année 
    $pattern = '/^(19[0-9]{2}|20[0-9]{2})$/'; 
    if(!preg_match($pattern, $annee) && !$annee <= date('Y', time())){ 
      $error = true; 
    }else{ 
      print 'Annee ok'; 
    } 
     
     
    //Vérification du mois 
    $mois = $_POST['mois']; 
    $pattern = '/^(0[1-9]|1[0-2])$/'; 
    if(!preg_match($pattern, $mois)){ 
      $error = true; 
    }else{ 
      print 'Mois ok'; 
    } 
     
    //Vérification du jour 
    $jour = $_POST['jour']; 
    $pattern = '/^(0[1-9]|[1-2][0-9]|3[0-1])$/'; 
    if(!preg_match($pattern, $jour) || $jour > cal_days_in_month(CAL_GREGORIAN, $mois, $annee)){ 
      $error = true; 
    }else{ 
      print 'jour ok'; 
    } 
     
    if(!$error){ 
      print 'tout est ok =)'; 
    }else{ 
      print 'Erreurs ! '; 
    } 
  }else{ 
   print 'Veuillez remplir tous les champs'; 
  } 
?>


Tu peux remplacer la partie tout en haut par tes select et leur donnant le même attribut name que mes input et me dire si ca fonctionne
0
Si tu as besoin d'aide pour intégrer ton formulaire avec mon code hésite pas hein =)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hellfirewar Messages postés 57 Date d'inscription lundi 16 août 2010 Statut Membre Dernière intervention 13 septembre 2011 1
7 juil. 2011 à 20:09
Je te dis un grand merci a toi d'avoir pris du temps a m'aider =) Ca fait plaisir !
Je vais vite voir si ca fonctionne !!! Merci a toi encore
0
Pour information sur le code que je t'ai envoyé :

Il vérifie que l'année est située entre 1900 et l'année courante

Il vérifie que le mois est compris entre 01 et 12

Il vérifie que le jour est compris entre 01 et 31 et vérifie que le mois de l'année comprenait bien ce jour (par exemple février ne comporte pas de 30 et de 31)

Si tout est ok, il va falloir programmer l'enregistrement des données et pour ça je vais avoir besoin d'informations de ta part sur la table dans laquelle tu souhaites insérer les données (listing des champs).

Si tu n'as pas encore de table, on la créera.
0
hellfirewar Messages postés 57 Date d'inscription lundi 16 août 2010 Statut Membre Dernière intervention 13 septembre 2011 1
7 juil. 2011 à 21:25
Voici le nom de ma base de donées : bleedz
Je travaille sur wampserver donc localhost
Ma table s'appelle : membres
Et le nom pour enregistrer la date : membre_naissance c'est possible ?
Ta fais du bon boulot :) Grand merci a toi
0
est-ce que tu peux me lister les champs présents dans ta table membres stp ? avec leur type si possible
0
hellfirewar Messages postés 57 Date d'inscription lundi 16 août 2010 Statut Membre Dernière intervention 13 septembre 2011 1
7 juil. 2011 à 21:38
--
-- Structure de la table 'membres'
0
c'est tout vide ;)
0
hellfirewar Messages postés 57 Date d'inscription lundi 16 août 2010 Statut Membre Dernière intervention 13 septembre 2011 1
7 juil. 2011 à 21:46
Ben désoler je débute (ange) Mais merci pour ton aide grâce a ton petit code je vais essayer de me démerder =) Bonne soirée a toi !
0
Hey mais c'est pas fini... ! tu veux pas faire la fin ?
0
hellfirewar Messages postés 57 Date d'inscription lundi 16 août 2010 Statut Membre Dernière intervention 13 septembre 2011 1
7 juil. 2011 à 21:57
Ben si si tu as le temps ca me derange pas :p Je voudrais pas te déranger
0
c'est ma soirée repos :p pas de soucis ! =)

Donc il faut qu'on crée une table ? Ou tu en as déja une existante et possédant les bons champs?
0
Voila la dernière version:

Code SQL pour générer la base de donnée (Je l'ai faite de mon côté juste pour les tests, récupère juste le champ date de naissance)
create database bleedz; 

use bleedz; 

create table user( 
   uid            int(11) unsigned auto_increment primary key, 
   date_naissance date 
)engine=innoDB; 


et le fichier PHP:

<meta charset="utf8"/> <!-- A enlever, placée temporairement pour résoudre les problème d'accents --> 

<?php 
  if(isset($_POST['annee']) && isset($_POST['mois']) && isset($_POST['jour'])){ 
   //Tableau dans lequel on va stocker les éventuels codes d'erreur 
   $errorCode = array(); 
    
   $annee = $_POST['annee']; 
    //Vérification de l'année 
    $pattern = '/^(19[0-9]{2}|20[0-9]{2})$/'; 
    if(!preg_match($pattern, $annee) || $annee > date('Y', time())){ 
      $errorCode[] = 0; 
    } 
     
    //Vérification du mois 
    $mois = $_POST['mois']; 
    $pattern = '/^(0[1-9]|1[0-2])$/'; 
    if(!preg_match($pattern, $mois)){ 
      $errorCode[] = 1; 
    } 
     
    //Vérification du jour 
    $jour = $_POST['jour']; 
    $pattern = '/^(0[1-9]|[1-2][0-9]|3[0-1])$/'; 
    if(!preg_match($pattern, $jour) || $jour > cal_days_in_month(CAL_GREGORIAN, $mois, $annee)){ 
      $errorCode[] = 2; 
    } 
     
    //Données valides 
    if(count($errorCode) == 0){ 
      //On tente de se connecter à la base de donnée 
      $PARAM_hote='localhost'; // le chemin vers le serveur 
      $PARAM_port='3306'; 
      $PARAM_nom_bd='bleedz'; // le nom de votre base de données 
      $PARAM_utilisateur='root'; // nom d'utilisateur pour se connecter 
      $PARAM_mot_passe=''; // mot de passe de l'utilisateur pour se connecter 
      try 
      { 
         $connexion = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe); 
      } 
        
      //Gestion des erreurs de connexion 
      catch(Exception $e) 
      { 
         echo 'Erreur : '.$e->getMessage(); 
         die(); 
      } 
      //Préparation de la requête et insertion dans la base de donnée ! 
      $dateFormat = sprintf('%s-%s-%s', $annee, $mois, $jour); 
      $query = ("insert into user(date_naissance) values('$dateFormat')"); 
      if($connexion->exec($query)){ 
         $success = true; 
         print 'Enregistrement effectué!'; 
      }else{ 
         die('Erreur'); 
      } 
       
       
    } 
  }else{ 
    print 'Veuillez remplir tous les champs'; 
  } 
   
  if($success){ 
   exit(); 
  } 
?> 

<form method="post"> 
   Année<input type="text" name="annee" value="<?php print $_POST['annee']; ?>"/> 
   Mois<input type="text" name="mois" value="<?php print $_POST['mois']; ?>"/> 
   Jour<input type="text" name="jour" value="<?php print $_POST['jour']; ?>"/> 
   <input type="submit" value="envoyer"/> 
</form> 

<?php  
   //Récupère et affiche les messages d'erreurs 
   if(count($errorCode) != 0){ 
     $msg = ''; 
     foreach($errorCode as $code){ 
       switch($code){ 
         case 0: $msg  .= 'Année incorrecte. <br />'; break; 
         case 1: $msg  .= 'Mois Incorrect. <br />'; break; 
         case 2: $msg  .= 'Jour incorrect. <br />'; break; 
         default: $msg .= 'Une erreur s\'est produite. Veuillez réessayer. <br />'; 
       } 
     } 
     print $msg; 
   } 
?> 


EDIT : Correction mise en gras !
0
hellfirewar Messages postés 57 Date d'inscription lundi 16 août 2010 Statut Membre Dernière intervention 13 septembre 2011 1
7 juil. 2011 à 22:23
Merci pour ton code je vais le test directement. Ca me donne une petite idée comment le faire =) Je vais le modifier car faut que je l'intégre pour qu'il soit compatible =) Grand merci a toi passe une bonne soirée ;)
0
prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 431
7 juil. 2011 à 22:25
Je t'en prie, si tu as une question n'hésite pas!

Bonne suite =)
0