ecabrera Posted March 8, 2012 Share Posted March 8, 2012 Warning: mktime() expects parameter 4 to be long, string given in C:\xampp\htdocs\php\age.php on line 8 this is what i get <?php if(isset($_POST['submitbtn'])){ $month = $_POST['month']; $day = $_POST['day']; $year = $_POST['year']; $birthday = mktime(0,0,0,$month,$day,$year); $diff = time() - $birthday; $age = floor($diff / 31556926); echo $age.' Years Old'; } ?> what im i doing wrong Quote Link to comment https://forums.phpfreaks.com/topic/258497-age/ Share on other sites More sharing options...
l0gic Posted March 8, 2012 Share Posted March 8, 2012 Can you please put this at the top of that code and post the results: echo $_POST['month'] . " - " . $_POST['day'] . " - " . $_POST['year']; die(); Quote Link to comment https://forums.phpfreaks.com/topic/258497-age/#findComment-1325049 Share on other sites More sharing options...
ecabrera Posted March 8, 2012 Author Share Posted March 8, 2012 Month - Day - Year Quote Link to comment https://forums.phpfreaks.com/topic/258497-age/#findComment-1325052 Share on other sites More sharing options...
l0gic Posted March 8, 2012 Share Posted March 8, 2012 So I believe you're passing the wrong data through your form on the previous page. Should be sending through something like: 05 - 29 - 1983 Quote Link to comment https://forums.phpfreaks.com/topic/258497-age/#findComment-1325054 Share on other sites More sharing options...
ecabrera Posted March 8, 2012 Author Share Posted March 8, 2012 well i do im say when there is nothing there is no month or day or year and i just press submit i get that Quote Link to comment https://forums.phpfreaks.com/topic/258497-age/#findComment-1325056 Share on other sites More sharing options...
l0gic Posted March 8, 2012 Share Posted March 8, 2012 Well, you either need to change what the form is sending when it's blank before it sends. Or check what it's sending is a number when your above code recieves it. One solution: ... if(isset($_POST['submitbtn']) && is_int($_POST['month']) && is_int($_POST['day']) && is_int($_POST['year'])){ // do stuff }else { // don't do stuff } ... Quote Link to comment https://forums.phpfreaks.com/topic/258497-age/#findComment-1325058 Share on other sites More sharing options...
ecabrera Posted March 8, 2012 Author Share Posted March 8, 2012 ok thanks but y doesnt this work if(isset($month) && isset($day) && isset($year) && !empty($month) && !empty($day) && !empty($year)){ $birthday = mktime(0,0,0,$month,$day,$year); $diff = time() - $birthday; $age = floor($diff / 31556926); echo $age.' Years Old'; }else echo"Please enter your Bday"; } Quote Link to comment https://forums.phpfreaks.com/topic/258497-age/#findComment-1325067 Share on other sites More sharing options...
marcus Posted March 8, 2012 Share Posted March 8, 2012 Why don't you tell us the error you're getting Quote Link to comment https://forums.phpfreaks.com/topic/258497-age/#findComment-1325068 Share on other sites More sharing options...
ecabrera Posted March 8, 2012 Author Share Posted March 8, 2012 Warning: mktime() expects parameter 4 to be long, string given in C:\xampp\htdocs\php\age.php on line 8 Quote Link to comment https://forums.phpfreaks.com/topic/258497-age/#findComment-1325070 Share on other sites More sharing options...
marcus Posted March 8, 2012 Share Posted March 8, 2012 Can you show us your HTML? Quote Link to comment https://forums.phpfreaks.com/topic/258497-age/#findComment-1325072 Share on other sites More sharing options...
ecabrera Posted March 8, 2012 Author Share Posted March 8, 2012 <form action="age.php" method="post"> Month:<select name="month"> <option>Month</option> <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> Day:<select name="day"> <option>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> Year:<select name="year"> <option>Year</option> <option value="2011">2011</option> <option value="2010">2010</option> <option value="2009">2009</option> <option value="2008">2008</option> <option value="2007">2007</option> <option value="2006">2006</option> <option value="2005">2005</option> <option value="2004">2004</option> <option value="2003">2003</option> <option value="2002">2002</option> <option value="2001">2001</option> <option value="2000">2000</option> <option value="1999">1999</option> <option value="1998">1998</option> <option value="1997">1997</option> <option value="1996">1996</option> <option value="1995">1995</option> <option value="1994">1994</option> <option value="1993">1993</option> <option value="1992">1992</option> <option value="1991">1991</option> <option value="1990">1990</option> <option value="1989">1989</option> <option value="1988">1988</option> <option value="1987">1987</option> <option value="1986">1986</option> <option value="1985">1985</option> <option value="1984">1984</option> <option value="1983">1983</option> <option value="1982">1982</option> <option value="1981">1981</option> <option value="1980">1980</option> <option value="1979">1979</option> <option value="1978">1978</option> <option value="1977">1977</option> <option value="1976">1976</option> <option value="1975">1975</option> <option value="1974">1974</option> <option value="1973">1973</option> <option value="1972">1972</option> <option value="1971">1971</option> <option value="1970">1970</option> <option value="1969">1969</option> <option value="1968">1968</option> <option value="1967">1967</option> <option value="1966">1966</option> <option value="1965">1965</option> <option value="1964">1964</option> <option value="1963">1963</option> <option value="1962">1962</option> <option value="1961">1961</option> <option value="1960">1960</option> <option value="1959">1959</option> <option value="1958">1958</option> <option value="1957">1957</option> <option value="1956">1956</option> <option value="1955">1955</option> <option value="1954">1954</option> <option value="1953">1953</option> <option value="1952">1952</option> <option value="1951">1951</option> <option value="1950">1950</option> <option value="1949">1949</option> <option value="1948">1948</option> <option value="1947">1947</option> <option value="1946">1946</option> <option value="1945">1945</option> <option value="1944">1944</option> <option value="1943">1943</option> <option value="1942">1942</option> <option value="1941">1941</option> <option value="1940">1940</option> <option value="1939">1939</option> <option value="1938">1938</option> <option value="1937">1937</option> <option value="1936">1936</option> <option value="1935">1935</option> <option value="1934">1934</option> <option value="1933">1933</option> <option value="1932">1932</option> <option value="1931">1931</option> <option value="1930">1930</option> <option value="1929">1929</option> <option value="1928">1928</option> <option value="1927">1927</option> <option value="1926">1926</option> <option value="1925">1925</option> <option value="1924">1924</option> <option value="1923">1923</option> <option value="1922">1922</option> <option value="1921">1921</option> <option value="1920">1920</option> <option value="1919">1919</option> <option value="1918">1918</option> <option value="1917">1917</option> <option value="1916">1916</option> <option value="1915">1915</option> <option value="1914">1914</option> <option value="1913">1913</option> <option value="1912">1912</option> <option value="1911">1911</option> <option value="1910">1910</option> <option value="1909">1909</option> <option value="1908">1908</option> <option value="1907">1907</option> <option value="1906">1906</option> <option value="1905">1905</option> <option value="1904">1904</option> <option value="1903">1903</option> <option value="1902">1902</option> <option value="1901">1901</option> <option value="1900">1900</option> </select><br> <input type="submit" name="submitbtn" /> </form> Quote Link to comment https://forums.phpfreaks.com/topic/258497-age/#findComment-1325073 Share on other sites More sharing options...
marcus Posted March 8, 2012 Share Posted March 8, 2012 if($month == "Month" || $day == "Day" || $year == "Year"){ echo "Please select the month, day and year you were born!"; }else { if(checkdate($month, $day, $year)){ // valid birthday }else { // invalid birthday } } I'm sure you can figure it out from there. Quote Link to comment https://forums.phpfreaks.com/topic/258497-age/#findComment-1325077 Share on other sites More sharing options...
ecabrera Posted March 8, 2012 Author Share Posted March 8, 2012 mgallforever thanks it works does the checkdate check the current date Quote Link to comment https://forums.phpfreaks.com/topic/258497-age/#findComment-1325079 Share on other sites More sharing options...
marcus Posted March 8, 2012 Share Posted March 8, 2012 checkdate() checks to see if the date is valid. It would return false if you tried putting in the birthday February 29, 2001. Obviously since 2001 wasn't a leap year, but if you tried February 29, 2012, it will return true. Other invalid test cases would be April 31, <any year> because April only has 30 days. Quote Link to comment https://forums.phpfreaks.com/topic/258497-age/#findComment-1325080 Share on other sites More sharing options...
ecabrera Posted March 8, 2012 Author Share Posted March 8, 2012 oh say there birthday is a leap year would i have to change my script Quote Link to comment https://forums.phpfreaks.com/topic/258497-age/#findComment-1325081 Share on other sites More sharing options...
marcus Posted March 8, 2012 Share Posted March 8, 2012 No, checkdate will know if the date is valid regardless. If you put in checkdate(2, 29, 2012) it will return true, but if you put in checkdate(2,29,2011) it will return false. Quote Link to comment https://forums.phpfreaks.com/topic/258497-age/#findComment-1325082 Share on other sites More sharing options...
ecabrera Posted March 8, 2012 Author Share Posted March 8, 2012 Thanks alot Quote Link to comment https://forums.phpfreaks.com/topic/258497-age/#findComment-1325083 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.