Jump to content

Recommended Posts

hello fellas,

 

need some help please if possible.

 

i have created a date of birth section in my form where the user selects his/her date of birth from the dropdown menu.

they would first select the day then month then year of their birthday.

 

how would i setup the database to get this to work?

 

i currently have:

	day VARCHAR( 2 ) NOT NULL ,
month VARCHAR( 4 ) NOT NULL ,
year VARCHAR( 4 ) NOT NULL ,

 

is this correct?

 

many thanks

Link to comment
https://forums.phpfreaks.com/topic/255331-date-of-birth-drop-down-selection/
Share on other sites

this is the code, im sure i have it wrong.

 

    <tr><td>"._DOB.": </td><td><select name ='day' value='$day'>
    <option value=''></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> : <select name ='month' value='$month'>
    <option value=''></option>
    <option value='Jan'>Jan</option>
    <option value='Feb'>Feb</option>
    <option value='Mar'>Mar</option>
    <option value='Apr'>Apr</option>
    <option value='May'>May</option>
    <option value='June'>June</option>
    <option value='July'>July</option>
    <option value='Aug'>Aug</option>
    <option value='Sept'>Sept</option>
    <option value='Oct'>Oct</option>
    <option value='Nov'>Nov</option>
    <option value='Dec'>Dec</option>
    </select> : <select name ='year' value='$year'>
<option value=''></option>
<option value='1930'>1930</option>
    <option value='1931'>1931</option>
<option value='1932'>1932</option>
<option value='1933'>1933</option>
<option value='1934'>1934</option>
<option value='1935'>1935</option>
<option value='1936'>1936</option>
<option value='1937'>1937</option>
<option value='1938'>1938</option>
<option value='1939'>1939</option>
<option value='1940'>1940</option>
    <option value='1941'>1941</option>
<option value='1942'>1942</option>
<option value='1943'>1943</option>
<option value='1944'>1944</option>
<option value='1945'>1945</option>
<option value='1946'>1946</option>
<option value='1947'>1947</option>
<option value='1948'>1948</option>
<option value='1949'>1949</option>
<option value='1950'>1950</option>
    <option value='1951'>1951</option>
<option value='1952'>1952</option>
<option value='1953'>1953</option>
<option value='1954'>1954</option>
<option value='1955'>1955</option>
<option value='1956'>1956</option>
<option value='1957'>1957</option>
<option value='1958'>1958</option>
<option value='1959'>1959</option>
<option value='1960'>1960</option>
    <option value='1961'>1961</option>
<option value='1962'>1962</option>
<option value='1963'>1963</option>
<option value='1964'>1964</option>
<option value='1965'>1965</option>
<option value='1966'>1966</option>
<option value='1967'>1967</option>
<option value='1968'>1968</option>
<option value='1969'>1969</option>
<option value='1970'>1970</option>
    <option value='1971'>1971</option>
<option value='1972'>1972</option>
<option value='1973'>1973</option>
<option value='1974'>1974</option>
<option value='1975'>1975</option>
<option value='1976'>1976</option>
<option value='1977'>1977</option>
<option value='1978'>1978</option>
<option value='1979'>1979</option>
<option value='1980'>1980</option>
    <option value='1981'>1981</option>
<option value='1982'>1982</option>
<option value='1983'>1983</option>
<option value='1984'>1984</option>
<option value='1985'>1985</option>
<option value='1986'>1986</option>
<option value='1987'>1987</option>
<option value='1988'>1988</option>
<option value='1989'>1989</option>
<option value='1990'>1990</option>
    <option value='1991'>1991</option>
<option value='1992'>1992</option>
<option value='1993'>1993</option>
<option value='1994'>1994</option>
<option value='1995'>1995</option>
<option value='1996'>1996</option>
<option value='1997'>1997</option>
<option value='1998'>1998</option>
<option value='1999'>1999</option>
<option value='2000'>2000</option>
    <option value='2001'>2001</option>
<option value='2002'>2002</option>
<option value='2003'>2003</option>
<option value='2004'>2004</option>
<option value='2005'>2005</option>
<option value='2006'>2006</option>
<option value='2007'>2007</option>
<option value='2008'>2008</option>
<option value='2009'>2009</option>
<option value='2010'>2010</option>
    <option value='2011'>2011</option>
<option value='2012'>2012</option>	
    </select></td></tr>

 

i am using the e107 cms and i have entered this into the page that allows the user to register to become a member.

 

You should store the date in the database in a DATE data type field. That's its purpose, after all.

 

<select> fields don't get an explicit value= attribute; it's inherited from the <option>s. It would be so much easier to build those fields dynamically with php, too.

could you explain how you mean please as i am new to coding.

 

what code should i be using?

 

 

As Pikachu2000 mentioned, you can store the DOB information using the date type. If you're using MySQL, the following link may be helpful:

http://dev.mysql.com/doc/refman/5.1/en/datetime.html

 

 

As for using PHP to develop the drop-down menus, you could do something like the following to generate the "day" menu:

 

<?php
print "<select name='day' value='$day'><option value=''></option>";
for($i=0; $i<=31; $i++) {
print "<option value='$i'>$i</option>";
}
print "</select>";
?>

Ah, just noticed the $day part. If you're looking to pre-populate the form with a DOB from the database, you need to modify the loop to select the necessary option. Here is one way:

 

<?php
$day = 22;

print "<select name='day'><option value=''></option>";
for($i=1; $i<=31; $i++) {
print "<option value='$i'";
if($day == $i) { print " selected='selected'"; }
print ">$i</option>";
}
print "</select>";
?>

 

 

EDIT - sorry, $i should start at 1...not 0  :-[

I just did this about 15 minutes ago

 

		if ((empty($_POST['year'])) OR (empty($_POST['month'])) OR (empty($_POST['day']))) {
	$error [] = 1;
	$date_e = '<h5 style="color: red;">* You forgot to enter a date.</h5>';
	} else {
		$date_yr = (int)$_POST['year'];
		$date_mth = (int)$_POST['month'];
		$date_day = (int)$_POST['day'];

		// Use checkdate as insurance that a date was entered
		if (checkdate($date_mth, $date_day, $date_yr)){ 
			$date_pub = $date_yr.'-';
			$date_pub .= $date_mth.'-';
			$date_pub .= $date_day;
		} else {
				$error [] = 1;
				$date_e = '<h5 style="color: red;">* The date was not valid.</h5>';
				}
		}

 

Then it goes into a date field in the table.

I was going to put it here on freaks to see if this is Okay anyway so here it is.

Also I use  <option value='01'>Jan</option> etc. as  PFMaBiSmAd said.

 

 

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.