PHP select menu starting from current year - php

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>

Related

pass values from select form to mysql DB

I have one simple problem with mysql-db. I want to pass 3 values in one column of my db that is called DateOfBirth.
I have made 2 selectors, day and month, and one text are for year (yer).
I want to combine these values to php variables and pass it to mysql column that is VARCHAR.
Dose any one has solution for this?
<?php
session_start();
if(isset($_SESSION['user'])!="")
{
header("Location: home.php");
}
include_once 'dbconnect.php';
if(isset($_POST['btn-signup']))
{
$dob = mysql_real_escape_string($_POST['day'.'month'.'yer']);
if(mysql_query("INSERT INTO userprofile(gender,dateofbirth) VALUES('$dob')"))
{
?>
<script>alert('successfully registered ');</script>
<?php
}
else
{
?>
<script>alert('error while registering you...');</script>
<?php
}
}
?>
<body>
<center>
<div id="login-form">
<form method="post">
<table align="center" width="30%" border="0">
<tr>
<td>
<select 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">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">
<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>
<input class="yer" type="text" name="yer" placeholder="yer" required />
</td>
</tr>
<td><button type="submit" name="btn-signup">Sign Me Up</button></td>
</tr>
<tr>
<td>Sign In Here</td>
</tr>
</table>
</form>
</div>
</center>
</body>
Change line
$dob = mysql_real_escape_string($_POST['day'.'month'.'yer']);
To
$y = $_POST['yer'];
$m = $_POST['month'];
$d = $_POST['day'];
$dob = strtotime($y.'-'.$m.'-'.$a);
EDIT: If you're inserting into the gender row, you need to supply a value for gender, otherwise it's going to either throw an error or go ahead with the query inserting dob into the gender row and then throw an error

$output for the name not value

I am using multiple choice in html:
<form target="POPUPW"
onsubmit="POPUPW = window.open('about:blank','POPUPW','width=400,height=400');" name="search1" action="popresult.php" method="POST">
<b>အကၡရာ</b>
<select name="pre">
<option value="c1">က</option>
<option value="c2">ခ</option>
<option value="c3">ဂ</option>
<option value="c4">ဃ</option>
<option value="c5">င</option>
<option value="c6">စ</option>
<option value="c7">ဆ</option>
<option value="c8">ဇ</option>
<option value="c9">စ်</option>
<option value="c10">ည</option>
<option value="c11">ဋ</option>
<option value="c12">ဌ</option>
<option value="c13">ဍ</option>
<option value="c14">ဎ</option>
<option value="c15">ဏ</option>
<option value="c16">တ</option>
<option value="c17">ထ</option>
<option value="c18">ဒ</option>
<option value="c19">ဓ</option>
<option value="c20">န</option>
<option value="c21">ပ</option>
<option value="c22">ဖ</option>
<option value="c23">ဗ</option>
<option value="c24">ဘ</option>
<option value="c25">မ</option>
<option value="c26">ယ</option>
<option value="c27">ရ</option>
<option value="c28">လ</option>
<option value="c29">၀</option>
<option value="c30">သ</option>
<option value="c31">ဟ</option>
<option value="c32">ဠ</option>
<option value="c33">အ</option>
<option value="c34">ကက</option>
<option value="c35">ကခ</option>
<option value="c36">ကဂ</option>
<option value="c37">ကဃ</option>
<option value="c38">ကင</option>
<option value="c39">ကစ</option>
<option value="c40">ကဆ</option>
</select>
<b>Number</b>
<select name="one">
<option value="0">0</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>
</select>
<select name="two">
<option value="0">0</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>
</select>
<select name="three">
<option value="0">0</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>
</select>
<select name="four">
<option value="0">0</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>
</select>
<select name="five">
<option value="0">0</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>
</select>
<select name="six">
<option value="0">0</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>
</select>
<input type="submit" name="search" value="ထီတိုက္ရန္" style="font-family:Zawgyi-One;" />
</form>
my php is
<?php
$output = NULL;
$link = mysqli_connect("localhost","root","","searchdemo") or die("Unable to select database" . mysqli_error($link));
if(isset($_POST['search'])){
$spre = $_POST['pre'];
$sone = $_POST['one'];
$stwo = $_POST['two'];
$sthree = $_POST['three'];
$sfour = $_POST['four'];
$sfive = $_POST['five'];
$ssix = $_POST['six'];
$query = mysqli_query ($link, "SELECT * FROM `346` WHERE pre = '$spre' AND one = '$sone' AND two = '$stwo' AND three = '$sthree' AND four = '$sfour' AND five = '$sfive' AND six = '$ssix'") or die("<b>Error</b> : ".mysqli_error($link));
$count = mysqli_num_rows($query);
if ($count == 0){
$output = 'Try Again';
}else{
while($row = mysqli_fetch_array($query)){
extract($row);
$price = $row['price'];
$output = '<style="font-family:Zawgyi-One">ဂုဏ္ယူ၀မ္းေျမာက္ပါတယ္ခင္ဗ်ာ ... <br />လူႀကီးမင္းဟာ ယခုဆို သိန္းေပါင္း ' .$price. 'ကို ဆြတ္ခူးသြားႏိုင္ပါၿပီ</style>';
}
}
}
?>
<html>
You are searching for <b style="font-family:Zawgyi-One"><?php echo $spre; ?> - <?php echo $sone; ?><?php echo $stwo; ?><?php echo $sthree; ?><?php echo $sfour; ?><?php echo $sfive; ?><?php echo $ssix; ?></b><br /><br />
</html>
<?php
print ("$output <br />");
?>
But when I search, the result was shown in
You are searching for c1 - 000000
But I like to show "c1" as က (က is unicode). And I will import CSV file into my database without including unicode.
The content of the value="" is what the Browser send to PHP, if you want to see exactly whats in the option then code it like
<select name="name">
<option value="Joe">Joe</option>
<option value="Micheal">Micheal</option>
<option value="Sean">Sean</option>
</select>
However it is normal to code something like an id in the value="<?php echo $id;?>" as then you can retrieve the data associated with the name more easily.
Ah I just noticed that you said you were using multiple choice or wanted too at least.
In that case you need to change the <select> tag like so
<select name="name" multiple="multiple">
<option value="Joe">Joe</option>
<option value="Micheal">Micheal</option>
<option value="Sean">Sean</option>
</select>
Then in your PHP code the $_POST['name'] variable will be returned as an array, so you would processing like this :-
if ( isset( $_POST['name'] ) ) {
foreach ( $_POST['name'] as $selected_name ) {
echo $selected_name;
}
}

Trouble with displaying current time in timezone

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.";
?>

How to setup drop down list to update and save?

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.

HTML and PHP, editing birthday

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>
?>

Categories