2010-03-09 4 views
0

Je suis nouveau à mysql et je me demandais comment puis-je ajouter les utilisateurs date de naissance dans le format HTML suivant aux données de la table MYSQL énumérés ci-dessous? A quoi ressemblerait la structure par exemple email VARCHAR(80) NOT NULL,?Problème de données de table Mysql?

Voici le code HTML ci-dessous.

<li><label>Date of Birth: </label> 
    <label for="month">Month: </label> 
     <select name="month" id="month"> 
      <option value="January">January</option> 
      <option value="February">February</option> 
      <option value="March">March</option> 
      <option value="April">April</option> 
      <option value="May">May</option> 
      <option value="June">June</option> 
      <option value="July">July</option> 
      <option value="August">August</option> 
      <option value="September">September</option> 
      <option value="October">October</option> 
      <option value="November">November</option> 
      <option value="December">December</option> 
     </select> 
    <label for="day">Day: </label> 
     <select id="day" name="day"> 
      <option value="0" selected="selected">Day</option> 
      <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option> 
      <option value="4">4</option> 
      <option value="5">5</option> 
      <option value="6">6</option> 
      <option value="7">7</option> 
      <option value="8">8</option> 
      <option value="9">9</option> 
      <option value="10">10</option> 
      <option value="11">11</option> 
      <option value="12">12</option> 
      <option value="13">13</option> 
      <option value="14">14</option> 
      <option value="15">15</option> 
      <option value="16">16</option> 
      <option value="17">17</option> 
      <option value="18">18</option> 
      <option value="19">19</option> 
      <option value="20">20</option> 
      <option value="21">21</option> 
      <option value="22">22</option> 
      <option value="23">23</option> 
      <option value="24">24</option> 
      <option value="25">25</option> 
      <option value="26">26</option> 
      <option value="27">27</option> 
      <option value="28">28</option> 
      <option value="29">29</option> 
      <option value="30">30</option> 
      <option value="31">31</option> 
     </select>     
    <label for="year">Year: </label><input type="text" name="year" id="year" /></li> 

Voici les données de la table MySQL.

CREATE TABLE users (
user_id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
first_name VARCHAR(20) NOT NULL, 
last_name VARCHAR(40) NOT NULL, 
email VARCHAR(80) NOT NULL, 
pass CHAR(40) NOT NULL, 
user_level TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, 
active CHAR(32), 
registration_date DATETIME NOT NULL, 
PRIMARY KEY (user_id), 
UNIQUE KEY (email), 
INDEX login (email, pass) 
); 

Répondre

0

Utilisez un champ DATETIME/DATE pour stocker ceci.

+0

comment serait-il ressembler dans ma table Mysql? – DaTeNtImE

+0

Quelque chose comme ** bithday DATETIME DEFAULT NULL ** –

0

Vous pouvez utiliser le type de données DATE pour l'anniversaire.

Si vous voulez recréer la table que vous pouvez ajouter:

birth_day DATE NOT NULL, 

Si ce ne est pas possible d'avoir un b'day pour chaque utilisateur, vous pouvez laisser tomber la clause NOT NULL.

Si vous souhaitez modifier la table existante, vous pouvez faire:

ALTER TABLE users 
ADD COLUMN birth_day DATE 
1

Si vous souhaitez stocker une date, vous pouvez utiliser le DATE type de données:

Le type DATE est utilisé lorsque vous avez besoin seulement une valeur de date, sans un temps partie.
MySQL récupère et affiche les valeurs DATE au format 'YYYY-MM-DD' .
La plage prise en charge est '1000-01-01' à '9999-12-31'.

Ensuite, vous allez insérer/mettre à jour ou obtenir des dates en utilisant un format 'YYYY-MM-DD'.


Cela signifie que votre create table ressemblera à ceci:

CREATE TABLE users (
user_id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
... 
active CHAR(32), 
registration_date DATETIME NOT NULL, 
birthdate DATE NOT NULL, 
PRIMARY KEY (user_id), 
... 
); 


Et vous utilisez des requêtes SQL telles que (exemples):

select * 
from users 
where birthdate >= '1980-01-01' and birthdate <= '1999-12-31' 

et/ou :

insert into users (..., birthdate, ...) 
values (..., '1965-03-24', ...) 

Et/ou:

update users 
set birthdate = '1988-05-12' 
where uid_id = 125 
0

Utilisez un DATE type dans une table

CREATE TABLE users (
    user_id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
    first_name VARCHAR(20) NOT NULL, 
    last_name VARCHAR(40) NOT NULL, 
    email VARCHAR(80) NOT NULL, 
    pass CHAR(40) NOT NULL, 
    user_level TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, 
    active CHAR(32), 
    registration_date DATETIME NOT NULL, 

    birhtday DATE NOT NULL, 

    PRIMARY KEY (user_id), 
    UNIQUE KEY (email), 
    INDEX login (email, pass) 
    ); 

Vous feriez mieux de modifier votre formulaire, de sorte que value d'options mois aurait des chiffres, pas les noms de mois complets.Comme ceci:

  <select name="month" id="month"> 
      <option value="1">January</option> 
      <option value="2">February</option> 
      <option value="3">March</option> 
      <option value="4">April</option> 
      <option value="5">May</option> 
      <option value="6">June</option> 
      <option value="7">July</option> 
      <option value="8">August</option> 
      <option value="9">September</option> 
      <option value="10">October</option> 
      <option value="11">November</option> 
      <option value="12">December</option> 
     </select> 

Si vous utilisez PHP, le code qui ferait une bonne valeur pour un type DATE:

<?php 
    //$birthday will be something like '7-12-1985' 
    $birthday = $_POST['year'].'-'.$_POST['month'].'-'.$_POST['day']; 
?> 
Questions connexes