I want to create a drop down list that allows the user to choose a Start and End "Year, Month, Day" as follows. When the page is updated, the choices are reverted to the "original" choices. How can I allow those selected values to save and remain when the page is updated?
<?php
if (isset($_POST['action']))
{
$action = $_POST['action'];
$startyear = $_POST['startyear'];
$startmonth = $_POST['startmonth'];
$startday = $_POST['startday'];
$endyear = $_POST['endyear'];
$endmonth = $_POST['endmonth'];
$endday = $_POST['endday'];
}
else
{
$action = "";
if (!isset($_POST['startyear']) || !isset($_POST['startmonth']) || !isset($_POST['startday'])
|| !isset($_POST['endyear']) || !isset($_POST['startmonth']) || !isset($_POST['startday']))
{
$startyear = "";
$startmonth = "";
$startday = "";
$endyear = "";
$endmonth = "";
$endday = "";
}
else
{
$startyear = $_POST['startyear'];
$startmonth = $_POST['startmonth'];
$startday = $_POST['startday'];
$endyear = $_POST['endyear'];
$endmonth = $_POST['endmonth'];
$endday = $_POST['endday'];
}
}
if ($action == "update")
{
echo "<h3>Start: $startyear-$startmonth-$startday | End: $endyear-$endmonth-$endday</h3>";
}
else
{
if ($startyear == "" || $endyear == "")
{
// something belongs here...not sure
}
echo "<h3>Start: $startyear-$startmonth-$startday | End: $endyear-$endmonth-$endday</h3>";
?>
Selections for start/end year,month,day are here:
<form name='update' action='testing.php' method='POST'>
Start: <select name='startyear'>
<option value="1">2012</option>
<option value="2">2011</option>
<option value="3">2010</option>
<option value="4">2009</option>
<option value="5">2008</option>
<option value="6">2007</option>
<option value="7">2006</option>
<option value="8">2005</option>
<option value="9">2004</option>
<option value="10">2003</option>
<option value="11'>2002</option>
<option value="12">2001</option>
<option value="13">2000</option>
<option value="14">1999</option>
<option value="15">1998</option>
</select>
<select name='startmonth'>
<option value="1">01</option>
<option value="2">02</option>
<option value="3">03</option>
<option value="4">04</option>
<option value="5">05</option>
<option value="6">06</option>
<option value="7">07</option>
<option value="8">08</option>
<option value="9">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<select name='startday'>
<option value="1">01</option>
<option value="2">02</option>
<option value="3">03</option>
<option value="4">04</option>
<option value="5">05</option>
<option value="6">06</option>
<option value="7">07</option>
<option value="8">08</option>
<option value="9">09</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>
<br>
End:<select name ='endyear'>
<option value="1">2012</option>
<option value="2">2011</option>
<option value="3">2010</option>
<option value="4">2009</option>
<option value="5">2008</option>
<option value="6">2007</option>
<option value="7">2006</option>
<option value="8">2005</option>
<option value="9">2004</option>
<option value="10">2003</option>
<option value="11'>2002</option>
<option value="12">2001</option>
<option value="13">2000</option>
<option value="14">1999</option>
<option value="15">1998</option>
</select>
<select name='endmonth'>
<option value="1">01</option>
<option value="2">02</option>
<option value="3">03</option>
<option value="4">04</option>
<option value="5">05</option>
<option value="6">06</option>
<option value="7">07</option>
<option value="8">08</option>
<option value="9">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<select name='endday'>
<option value="1">01</option>
<option value="2">02</option>
<option value="3">03</option>
<option value="4">04</option>
<option value="5">05</option>
<option value="6">06</option>
<option value="7">07</option>
<option value="8">08</option>
<option value="9">09</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>
<input type='submit' value='Compare'/>
</form>
<?php
}
?>
Instead of having such large HTML let php render it for you, this also allows you to determine if the selected attribute is rendered in the option.
To keep the values selected in the form the form needs tobe posted back to the same php script its being rendered from action='', and a little logic is required on the posted values to check if the value equals itself, check the form below.
<?php
//Build an array of values for your forms
$year = range(1998,2012);
$month = range(01,12);
$day = range(01,31);
//Handle POST, just an example
if($_SERVER['REQUEST_METHOD']=='POST'){
foreach($_POST as $key=>$value){
if(is_numeric($value)){
$$key = $value;
}
}
/**
* All POST keys like: startmonth ect will now be php variables like
* $startmonth
*/
//Do somthing with $startmonth ect
}
//A more tidy form
?>
<form name='update' action='' method='POST'>
Start: <select name='startyear'>
<?php foreach(array_reverse($year) as $y):?>
<option value="<?=$y?>"<?=((isset($startyear) && $startyear == $y)?' selected':null)?>><?=$y?></option>
<?php endforeach;?>
</select>
<select name='startmonth'>
<?php foreach($month as $m): $m = str_pad($m, 2, "0", STR_PAD_LEFT);?>
<option value="<?=$m;?>"<?=((isset($startmonth) && $startmonth == $m)?' selected':null)?>><?=$m;?></option>
<?php endforeach;?>
</select>
<select name='startday'>
<?php foreach($day as $d): $d = str_pad($d, 2, "0", STR_PAD_LEFT);?>
<option value="<?=$d;?>"<?=((isset($startday) && $startday == $d)?' selected':null)?>><?=$d;?></option>
<?php endforeach;?>
</select>
<br>
End: <select name='endyear'>
<?php foreach(array_reverse($year) as $y):?>
<option value="<?=$y?>"<?=((isset($endyear) && $endyear == $y)?' selected':null)?>><?=$y?></option>
<?php endforeach;?>
</select>
<select name='endmonth'>
<?php foreach($month as $m): $m = str_pad($m, 2, "0", STR_PAD_LEFT);?>
<option value="<?=$m;?>"<?=((isset($endmonth) && $endmonth == $m)?' selected':null)?>><?=$m;?></option>
<?php endforeach;?>
</select>
<select name='endday'>
<?php foreach($day as $d): $d = str_pad($d, 2, "0", STR_PAD_LEFT);?>
<option value="<?=$d;?>"<?=((isset($endday) && $endday == $d)?' selected':null)?>><?=$d;?></option>
<?php endforeach;?>
</select>
<input type='submit' value='Compare'/>
</form>
You need to add a little more to the HTML that's generating your page, to set up a default selected value for your dropdowns.
You'll need something like this:
<option value="1" <?php if ($_POST["startyear"] = "1") echo "selected"; ?>>2012</option>
You'll need to do that for each option, to see if this option's value is the same as the one from $_POST; you might want to look into using a for loop to create the HTML, in that case.
Related
I have to create new page on website on WP. Also I created custom php code, which taking date from user and return description from MySQL.
Currently I have this in this way. I created file calendar.php. I put this to my wordpress catalog C:\xampp\htdocs\mayancalendar4\calendar.php. I have access to this by http://localhost/mayancalendar4/calendar.php. Problem is I want put the form and result in middle of page (where the 404 info occur), not on the end.
My calendar.php:
<?php
define( 'WP_USE_THEMES', true );
/** Loads the WordPress Environment and Template */
require __DIR__ . '/wp-blog-header.php';
?>
<!DOCTYPE html>
<html>
<section class="container grey-text">
<h4 class="center">Wybierz dzień</h4>
<form class="white" action="calendar.php" method="POST">
<!-- <form class="white" method="POST"> -->
<label for="day">Day</label>
<select id="day" name="day">
<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="month">Month</label>
<select id="month" name="month">
<option value="1">Styczeń</option>
<option value="2">Luty</option>
<option value="3">Marzec</option>
<option value="4">Kwiecień</option>
<option value="5">Maj</option>
<option value="6">Czerwiec</option>
<option value="7">Lipiec</option>
<option value="8">Sierpień</option>
<option value="9">Wrzesień</option>
<option value="10">Październik</option>
<option value="11">Listopad</option>
<option value="12">Grudzień</option>
</select>
<label for="year">Year</label>
<select id="year" name="year">
<option value="1900">1900</option>
<option value="1901">1901</option>
<option value="1902">1902</option>
<option value="1903">1903</option>
<option value="1904">1904</option>
<option value="1905">1905</option>
<option value="1906">1906</option>
<option value="1907">1907</option>
<option value="1908">1908</option>
<option value="1909">1909</option>
<option value="1910">1910</option>
<option value="1911">1911</option>
<option value="1912">1912</option>
<option value="1913">1913</option>
<option value="1914">1914</option>
<option value="1915">1915</option>
<option value="1916">1916</option>
<option value="1917">1917</option>
<option value="1918">1918</option>
<option value="1919">1919</option>
<option value="1920">1920</option>
<option value="1921">1921</option>
<option value="1922">1922</option>
<option value="1923">1923</option>
<option value="1924">1924</option>
<option value="1925">1925</option>
<option value="1926">1926</option>
<option value="1927">1927</option>
<option value="1928">1928</option>
<option value="1929">1929</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>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015">2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
<option value="2021">2021</option>
<option value="2022">2022</option>
<option value="2023">2023</option>
<option value="2024">2024</option>
<option value="2025">2025</option>
<option value="2026">2026</option>
<option value="2027">2027</option>
<option value="2028">2028</option>
<option value="2029">2029</option>
<option value="2030">2030</option>
<option value="2031">2031</option>
<option value="2032">2032</option>
<option value="2033">2033</option>
<option value="2034">2034</option>
<option value="2035">2035</option>
<option value="2036">2036</option>
<option value="2037">2037</option>
<option value="2038">2038</option>
<option value="2039">2039</option>
<option value="2040">2040</option>
<option value="2041">2041</option>
<option value="2042">2042</option>
<option value="2043">2043</option>
<option value="2044">2044</option>
<option value="2045">2045</option>
<option value="2046">2046</option>
<option value="2047">2047</option>
<option value="2048">2048</option>
<option value="2049">2049</option>
<option value="2050">2050</option>
<option value="2051">2051</option>
<option value="2052">2052</option>
<option value="2053">2053</option>
<option value="2054">2054</option>
<option value="2055">2055</option>
<option value="2056">2056</option>
<option value="2057">2057</option>
<option value="2058">2058</option>
<option value="2059">2059</option>
<option value="2060">2060</option>
<option value="2061">2061</option>
<option value="2062">2062</option>
<option value="2063">2063</option>
<option value="2064">2064</option>
<option value="2065">2065</option>
<option value="2066">2066</option>
<option value="2067">2067</option>
<option value="2068">2068</option>
<option value="2069">2069</option>
<option value="2070">2070</option>
<option value="2071">2071</option>
<option value="2072">2072</option>
<option value="2073">2073</option>
<option value="2074">2074</option>
<option value="2075">2075</option>
<option value="2076">2076</option>
<option value="2077">2077</option>
<option value="2078">2078</option>
<option value="2079">2079</option>
<option value="2080">2080</option>
<option value="2081">2081</option>
<option value="2082">2082</option>
<option value="2083">2083</option>
<option value="2084">2084</option>
<option value="2085">2085</option>
<option value="2086">2086</option>
<option value="2087">2087</option>
<option value="2088">2088</option>
<option value="2089">2089</option>
<option value="2090">2090</option>
<option value="2091">2091</option>
<option value="2092">2092</option>
<option value="2093">2093</option>
<option value="2094">2094</option>
<option value="2095">2095</option>
<option value="2096">2096</option>
<option value="2097">2097</option>
<option value="2098">2098</option>
<option value="2099">2099</option>
</select>
<div class="center">
<input type="submit" name="submit" value="Submit" class="btn brand z-depth-0">
</div>
</form>
</section>
<div>
<?php
function count_days_past($days){
// echo "Licze dla $days";
// echo "</br>";
$result = 250 - abs($days);
if ($result < 0){
return count_days_past($result);
}
else{
return $result;
}
};
if(isset($_POST['submit'])){
$year = $_POST['year'];
$month = $_POST['month'];
$day = $_POST['day'];
$start_date = "2021-07-01";
$selected_date = "$year-$month-$day";
$start_date_time = strtotime("2021-07-01");
$selected_date_time = strtotime("$year-$month-$day");
$datediff = $selected_date_time - $start_date_time;
$amount_days = round($datediff / (60 * 60 * 24));
// dodaje 1, bo nie uzywam wartosci 0
if ($amount_days < 0){
// echo "Licze dni z przeszlosci";
// echo "</br>";
$number_of_day = count_days_past($amount_days) + 1;
echo "Nr dnia (wstecz)- $number_of_day";
echo "</br>";
}
else if ($amount_days == 0){
$number_of_day = 1;
echo "Nr dnia (zero)- $number_of_day";
echo "</br>";
}
else{
$number_of_day = ($amount_days % 250) + 1;
echo "Nr dnia (przod)- $number_of_day";
echo "</br>";
}
echo "start date - $start_date </br>";
echo "selected date - $selected_date </br>";
echo "amount days - $amount_days </br>";
echo "nr dnia - $number_of_day </br>";
//db connection
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mayancalendar4";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, opis, img FROM kalendarz_opisy WHERE id = $number_of_day";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<h3>Opis dla dnia nr $number_of_day</h3>";
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<p>". $row["opis"]. "</p>";
}
} else {
echo "0 results";
}
$conn->close();
};
?>
</div>
</html>
Its look like and I marked what I want achieve:
Result of submit:
Before I tried put my php and html code by wp-admin and edit text on page. Then I have a form on middle of page, but the submit button not working and I don't getting result.
This looks:
After submit:
I working with WP first time. I doing this in correct way?
It is not the good way actually. You should follow the WP standards to do these modifications. Although, check your WordPress files, inside path:
wp-content/themes/your_themes/404.php
This is the file responsible for 404 not found page. You could create a child-theme (if you do not have yet), create a file 404.php inside your child theme and edit/modity it according to your needs.
Useful links on how to create a child-theme, could be found here:
https://www.wpbeginner.com/wp-themes/how-to-create-a-wordpress-child-theme-video/
Another link to create custom 404 page on your website:
Method 2. Create a Custom 404 Page in WordPress By Adding Code
https://www.wpbeginner.com/wp-themes/how-to-improve-your-404-page-template-in-wordpress/
Need to create a new page template and assign it to the page so you can easily handle the page.
For the create template create a new file filename.php in parent or child theme.
Here is code for the create template on the active theme directory check this screenshot: http://prntscr.com/1ibx1iz
<?php
/*
Template Name: New page temp // your template name write here
*/
get_header();
// your code
get_footer();
?>
Now create a new page and assign that template. check this screenshot:http://prntscr.com/1ibxgj9 and publish the page after viewing the page so you can see your custom design.
I am using Bootstrap and PHP. The formmail works however the last option value (the year) in the code below prints the value from the previous option value (the day). I am not sure where I went wrong.
Values post to email:
Serve by Month.: 1
Serve by Day.: 2
Serve by Year.: 2 (year is the same as day)
<select id="Serve_by_Month" name="Serve_by_Month" required>
<option value="">Month*</option>
<?for($xx=1;$xx<13;$xx++){?>
<option value="<?=$xx?>"<?if($xx==$exp_mo)echo " selected";?>>
<?=sprintf("%02d",$xx)?>
</option>
<?}?>
</select>
<br class="hidden-lg">
<select id="Serve_by_Day" name="Serve_by_Day" required>
<option value="">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>
<select id="Serve_by_Year" name="Serve_by_Year" required>
<option value="">Year*</option>
<?
$year = date("Y");
$yearto = date("Y")+10;
while ($year <= $yearto)
{
echo "<option value='".$year."'>".$year."</option>";
$year++;
}
?>
</select>
It's been a long time since I did any php, but could this issue have something to do with date("Y") returning a string and not an int?
Try changing the $year assignment to
$year = intval(date("Y"));
$yearto = $year+10;
Try this, it should solve your problem
<?php
if(isset($_POST['submit-form'])){
$selectedMonth = $_POST['Serve_by_Month']; //This will give you the month
$selectedDay = $_POST['Serve_by_Day']; //This will give you the day
$selectedYear = $_POST['Serve_by_Year']; //This will give you the year
echo 'date: '.$selectedMonth.'-'.$selectedDay.'-'.$selectedYear;
echo '<br>';
}
?>
<form method="post">
<select id="Serve_by_Month" name="Serve_by_Month" required>
<option value="">Month*</option>
<?php
for($i=1;$i<13;$i++){
$selected = $i==$exp_mo ? 'selected' : '';
?>
<option value="<?=$i?>" <?=$selected?>>
<?=sprintf("%02d",$i)?>
</option>
<?php } ?>
</select>
<br class="hidden-lg">
<select id="Serve_by_Day" name="Serve_by_Day" required>
<option value="">Day*</option>
<?php
for($i = 1; $i <= 31; $i++){ ?>
<option value="<?=$i?>"><?=$i?></option>
<?php }
?>
</select>
<select id="Serve_by_Year" name="Serve_by_Year" required>
<option value="">Year*</option>
<?php
for($i = date('Y'); $i <= date('Y')+10; $i++){?>
<option value="<?=$i?>"><?=$i?></option>
<?php }
?>
</select>
<input type="submit" name="submit-form"/>
</form>
Can someone explain why the page stops working if i add
<?php
date_default_timezone_set("$tidszon");
echo "Klockan är " . date("h:i:sa")" i tidszonen du angav.";
?>
to the display input section of the code? everything else works fine but if i add that the page doesnt even load..
This is the default code without timezone added:
<?php
// define variables and set to empty values
$y1 = $m1 = $d1= $y2 = $m2 = $d2= $tidszon = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$y1 = test_input($_POST["y1"]);
$m1 = test_input($_POST["m1"]);
$d1 = test_input($_POST["d1"]);
$y2 = test_input($_POST["y2"]);
$m2 = test_input($_POST["m2"]);
$d2 = test_input($_POST["d2"]);
$tidszon = test_input($_POST["tidszon"]);
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<h2>Lookup how many days between which dates?</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<br><br>
Date 1:
<br>
<select name="y1" size="4">
<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>
<option value="2013">2013</option>
<option value="2014">2014</option>
</select>
<select name="m1" size="4">
<option value="1">January</option>
<option value="2">February</option>
<option value="3">Mars</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="2006">June</option>
<option value="2007">July</option>
<option value="2008">August</option>
<option value="2009">September</option>
<option value="2010">October</option>
<option value="2011">November</option>
<option value="2012">December</option>
</select>
<select name="d1" size="4">
<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>
<br>
<br>
Date 2:
<br>
<select name="y2" size="4">
<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>
<option value="2013">2013</option>
<option value="2014">2014</option>
</select>
<select name="m2" size="4">
<option value="1">January</option>
<option value="2">February</option>
<option value="3">Mars</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="2006">June</option>
<option value="2007">July</option>
<option value="2008">August</option>
<option value="2009">September</option>
<option value="2010">October</option>
<option value="2011">November</option>
<option value="2012">December</option>
</select>
<select name="d2" size="4">
<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>
<br><br>
Timezone:<input type="text" name="tidszon">
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
<?php
echo "<h2>Your Input:</h2>";
echo "<br>";
echo "<br>";
echo "Date 1: ";
echo $y1;
echo "/";
echo $m1;
echo "/";
echo $d1;
echo "<br>";
echo "Date 2: ";
echo $y2;
echo "/";
echo $m2;
echo "/";
echo $d2;
echo "<br>";
echo "<br>";
echo "Timezone: ";
echo $tidszon;
echo "<br>";
echo "<br>";
echo "<br>";
?>
<br>
<br>
<?php
require_once 'Date.php';
try {
// create two Pos_Date objects new
$dat1 = new Pos_Date();
$dat2 = new Pos_Date();
// calculate the number of days
$dat1->setDate($y1,$m1,$d1);
$dat2->setDate($y2,$m2,$d2);
$diff = Pos_Date::dateDiff($dat1, $dat2);
$unit = abs($diff) > 1 ? 'days' : 'day';
echo "There is " . abs($diff) . " $unit between the dates";
} catch (Exception $e) {
echo $e;
}
?>
</body>
</html>
You are missing a . after date(): echo "Klockan är " . date("h:i:sa") . " i tidszonen du angav."
Put error reporting on so in the future you get informational messages concerning typos and other errors.
And on the sidenote. It's easier for you and everyone else to read the source code if you could use for example utf-8 encoding instead of html entities.
Remove after date("h:i:sa") than use and in it
<?php
date_default_timezone_set("$tidszon");
echo "Klockan är " . date("h:i:sa")." i tidszonen du angav.";
?>
This question already has answers here:
PHP calculate age
(36 answers)
Closed 9 years ago.
i can't upgrade my php to 5.3 due to upgrade costs and such. Anyone knows how to calculate age using birthdate in php 5.2 ?
I made a simple form that takes in the day month and year of a person's birthdate in select boxes. it goes in the form of dd,mm,yyyy. When submitted, the function should calculate the age of the person.
Calculate Age
<?php
if (isset($_POST['submit'])) {
$d=$_POST['day'];
$m=$_POST['month'];
$y=$_POST['year'];
//converting Inputed DOB in "dd-mm-yyyy" format
$dob=$d.' '.$m.' '.$y;
//Create a new date object with current system date
//$bday=new DateTime($dob);
//Differentiating both dates
//$age = $bday->diff(new DateTime);
//$birthdate = mysql_prep($dob);
//$c_age = $age->y;
//$dob = new DateTime('$dob');
$dob = new DateTime('$dob');
$now = new DateTime('now');
echo year_diff($now, $dob);
function year_diff($date1, $date2) {
list($year1, $dayOfYear1) = explode(' ', $date1->format('Y z'));
list($year2, $dayOfYear2) = explode(' ', $date2->format('Y z'));
return $year1 - $year2 - ($dayOfYear1 < $dayOfYear2);
}
}
?>
<form action="testage.php" method="post">
Date Of Birth:<br />
<td>Day<br/>
<select name="day"> <!-- To Select Day -->
<option value="01" selected="selected">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</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>
<option value="32">32</option>
</select>
Month
<select name="month"><!--TO Select Month-->
<option value="01" selected="selected">Jan</option>
<option value="02">Feb</option>
<option value="03">Mar</option>
<option value="04">Apr</option>
<option value="05">May</option>
<option value="06">Jun</option>
<option value="07">Jul</option>
<option value="08">Aug</option>
<option value="09">Sep</option>
<option value="10">Oct</option>
<option value="11">Nov</option>
<option value="12">Dec</option>
</select>
Year
<select name="year"><!--To Select Year-->
<option value="2013" selected="selected">2013</option>
<option value="2012">2012</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>
</select>
<input type="submit" name="submit" value="Submit"/>
</form>
I think this is correct.
function CurrentAge($d, $m, $y)
{
$years = date('Y') - $y;
$months = date('m') - $m;
$days = date('d') - $d;
if (substr($months, 0, 1) == '-') {
$years = $years - 1;
$months = 12 - substr($months, 1);
}
if (substr($days, 0, 1) == '-') {
$days = date('t') - substr($days, 1);
}
return $years;
}
echo CurrentAge('21', '02', '1993');
If I store birthday as 1990-01-01
When a user edits his profile, how do i show his current birthday?
<select name="ctl00$ctl00$cphContent$cphContent$cphContentLeft$DatePicker1$days" id="ctl00_ctl00_cphContent_cphContent_cphContentLeft_DatePicker1_days">
<option selected="selected" 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="ctl00$ctl00$cphContent$cphContent$cphContentLeft$DatePicker1$months" id="ctl00_ctl00_cphContent_cphContent_cphContentLeft_DatePicker1_months" style="width:100px;">
<option selected="selected" value="1">januar</option>
<option value="2">februar</option>
<option value="3">marts</option>
<option value="4">april</option>
<option value="5">maj</option>
<option value="6">juni</option>
<option value="7">juli</option>
<option value="8">august</option>
<option value="9">september</option>
<option value="10">oktober</option>
<option value="11">november</option>
<option value="12">december</option>
</select>
<select name="ctl00$ctl00$cphContent$cphContent$cphContentLeft$DatePicker1$years" id="ctl00_ctl00_cphContent_cphContent_cphContentLeft_DatePicker1_years">
<option selected="selected" 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>
</select>
So it has the user's birthday as selected=.
Its stored in the database and i get out the full birthday like this:
<?php echo $v["birthday"]; ?>
Courtesy to “ Richard Fearn” and “Karem”, I have completed the month and year combo box. Full source code is below:
<?php
$month = date("n"); //without leading zero(o)
$year = date("Y"); //four digit format
$st_year = "2010"; //Starting Year
$month_names = array("January", "February", "March","April", "May", "June", "July", "August", "September", "October", "November", "December");
?>
<form name="Month_Year" id="Month_Year" action="<?php $SITE['REQURI'] ?>" method="post">
<select name="month" id="month">
<?php
for ($i=1; $i<=12; $i++) {
echo "<option ";
if ($i == $month) {
echo "selected=\"selected\" ";
}
echo "value=\"$i\">", $month_names[$i-1], "</option>\n";
}
?>
</select>
<select name="year" id="year">
<?php
for ($i=$st_year; $i<=$year; $i++) {
echo "<option ";
if ($i == $year) {
echo "selected=\"selected\" ";
}
echo "value=\"$i\">$i</option>\n";
}
?>
</select>
<input type="submit" name="submit" id="submit" value="Submit" />
</form>
<?php
$month = $_POST['month'];
$year = $_POST['year'];
$final_val = $month ."-". $year ;
echo $final_val;
?>
If you use a for loop to generate the <option> elements, such as:
for ($i=1; $i<=31; $i++) {
echo "<option value=\"$i\">$i</option>\n";
}
Then you can just modify this slightly to insert the selected attribute on the appropriate element:
// Assuming $day is the user's day of birth
for ($i=1; $i<=31; $i++) {
echo "<option ";
if ($i == $day) {
echo "selected=\"selected\" ";
}
echo "value=\"$i\">$i</option>\n";
}
You would use similar loops for the month and year. In the case of months, where you don't want to output a number but want the month name, you can store the names in an array and index into that array in the loop:
$month_names = array("Jan", "Feb", "Mar", ...);
for ($i=1; $i<=12; $i++) {
echo "<option ";
if ($i == $month) {
echo "selected=\"selected\" ";
}
echo "value=\"$i\">", $month_names[$i-1], "</option>\n";
}
To get the day/month/year from your yyyy-mm-dd date of birth strings, use the explode function, as shown by Sabeen Malik.
Instead of using hardcoded HTML, print the combo box with a for loop and based on what the user has selected, print "selected" in the relevant "option"
to get the date parts you can do something like:
list($year , $month , $day) = explode("-" , $dob);
I thought I would add my method of doing this as an answer. Maybe it will be useful to someone.
This uses an abbreviated months array.
list() idea from Sabeen.
<?php
·
·
·
list( $dob['year'], $dob['month'], $dob['day'] ) = explode( "-", $user['birthday'] );
$user['dob'] = $dob;
?>
<select id="dob-day" name="dob-day">
<?php
foreach( range(1, 31) as $day )
printf( "<option%s>$day</option>", $day == $user['dob']['day'] ? ' selected' : '' );
?>
</select>
<select id="dob-month" name="dob-month">
<?php
$months = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
foreach( $months as $key => $month )
printf( "<option%s>$month</option>", $key + 1 == $user['dob']['month'] ? ' selected' : '' );
?>
</select>
<select id="dob-year" name="dob-year">
<?php
foreach( range( date('Y'), date('Y') - 105 ) as $year )
printf( "<option%s>$year</option>", $year == $user['dob']['year'] ? ' selected' : '' );
?>
</select>
?>