Comment enregistrer formulaire dans Mysql ? [Résolu/Fermé]

Signaler
Messages postés
57
Date d'inscription
lundi 16 août 2010
Statut
Membre
Dernière intervention
13 septembre 2011
-
Messages postés
1189
Date d'inscription
dimanche 7 octobre 2007
Statut
Membre
Dernière intervention
12 juin 2020
-
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 ;)

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.
Messages postés
57
Date d'inscription
lundi 16 août 2010
Statut
Membre
Dernière intervention
13 septembre 2011
1
Voila c'est corriger =) Merci de ton aide
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
Si tu as besoin d'aide pour intégrer ton formulaire avec mon code hésite pas hein =)
Messages postés
57
Date d'inscription
lundi 16 août 2010
Statut
Membre
Dernière intervention
13 septembre 2011
1
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
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.
Messages postés
57
Date d'inscription
lundi 16 août 2010
Statut
Membre
Dernière intervention
13 septembre 2011
1
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
est-ce que tu peux me lister les champs présents dans ta table membres stp ? avec leur type si possible
Messages postés
57
Date d'inscription
lundi 16 août 2010
Statut
Membre
Dernière intervention
13 septembre 2011
1
--
-- Structure de la table 'membres'
Messages postés
57
Date d'inscription
lundi 16 août 2010
Statut
Membre
Dernière intervention
13 septembre 2011
1
Ben si si tu as le temps ca me derange pas :p Je voudrais pas te déranger
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?
Messages postés
57
Date d'inscription
lundi 16 août 2010
Statut
Membre
Dernière intervention
13 septembre 2011
1
J'ai deja une table membres mais je sais pas quoi mettre comme champs pour enregistrer la date :s
Je te prépare un exemple, 5 minutes =)
Messages postés
57
Date d'inscription
lundi 16 août 2010
Statut
Membre
Dernière intervention
13 septembre 2011
1
Prend ton temps ;) Merci beaucoup
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 !
Messages postés
57
Date d'inscription
lundi 16 août 2010
Statut
Membre
Dernière intervention
13 septembre 2011
1
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 ;)
Messages postés
1189
Date d'inscription
dimanche 7 octobre 2007
Statut
Membre
Dernière intervention
12 juin 2020
430
Je t'en prie, si tu as une question n'hésite pas!

Bonne suite =)