Loop for select array in php and html form - php

I have a (Coffee) form that contains 60 select tags and each select tag has 16 options that contains numbers from 0 to 15.
like this :
<label><select name="item[0][breakfast_blend]">
<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>
<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>
</select>Breakfast Blend</label>
<label><select name="item[1][tea]">
<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>
<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>
</select>Tea</label>
There are 60 other selects like this with other labels.
now I'm trying to set a condition to check to see which items are selected by the user, then take the value of the option and the label of that select.
so i create a if condition to check the value of the selected item but i don't know how to get the label of that item (I mean i don't know how to contain it in the loop).
here is my code in php part :
for ($i = 1; $i <= count($_POST['item']); $i++) {
if (isset($_POST['item'][$i])) {
echo $_POST['item'][$i];
}
}
some of my friends told that Foreach function could help but still i don't know how :/
any help to contain the label in the loop ??

You can do something like that
for ($i = 1; $i <= count($_POST['item']); $i++) {
if (isset($_POST['item'][$i])) {
foreach($_POST['item'][$i] as $cle => $value){
$label = ucwords(str_replace("_"," ",$cle));
$item = $value;
echo $label." ".$item;
}
}
}

Remove the breakfast blend and tea from the name if you include it you have to echo the value of item[0][breakfast_blend] now in your code it is echoing item[0] which not give you value
<select name="item[0]">
<select name="item[1]">

Related

how can i display input value in blade LARAVEL 5

i need to display selected option in blade and set it in a value here's my code as an exemple.
#php($month = 0)
<select name="monthOption" id="monthOption">
<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>
</select>
<!-- I need to get option value on select, and set it in the value $month ? -->
{{$month}}

PHP select menu starting from current year

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>

$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;
}
}

How to Select Numbers from Combobox with php?

I have a Combobox (<select><option></option></select>) and It consists of 31 numbers, the following code :
<select name='Bday' id='Bday' >
<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>
I want the page number is 25 received, Combobox to view it. for example , if the address of page http//test.php?page=25,combobox view 25... No change in the combobox code!
Create your select options in a loop, and in each iteration check if the current value equals the one you get from the page get variable.
For brevity i have used the ternary operator in this example:
<?php $pageno = isset($_GET['page'])?$_GET['page']:''; ?>
<select name='Bday' id='Bday' >
<?php for($i=1;$i<=31;$i++):?>
<option value="<?php echo $i;?>" <?php echo $i==$pageno? 'selected':'';?> ><?php echo $i;?></option>
<?php endfor;?>
</select>

How to carry form data from a select field to another form (having the same elements) in a select field?

Okay, I know that's a bit too premature but I didn't get any satisfactory answers wherever I tried to search. What I want to do is basically, collect form data from the users, validate(PHP) them, assuming they have JavaScript disabled I want to show errors in the next page with PHP. And I also want to show them the same form that they worked on earlier. The difference is that there would be error messages and the form fields would be pre-filled with the data they entered. I have succeeded in the text fields and radio fields. But it's proving difficult for me to show them the select field input. . Help is very much appreciated and thanks in advance.
this is 1st form's select fields:
<select name="month" id="month">
<option value="-1"> Month: </option>
<option value="1">Jan</option>
<option value="2">Feb</option>
<option value="3">Mar</option>
<option value="4">Apr</option>
<option value="5">May</option>
<option value="6">Jun</option>
<option value="7">Jul</option>
<option value="8">Aug</option>
<option value="9">Sep</option>
<option value="10">Oct</option>
<option value="11">Nov</option>
<option value="12">Dec</option>
</select>
</select>
<select name="day" id="day">
<option value="-1">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 name="year" id="year"><option value="-1" selected="selected">Year</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>
</select>
and the php to get the variables:
<?php //setting checking
$month=$_POST['month'];
$day=$_POST['day'];
$year=$_POST['year'];
?>
the second select fields are as same as the first one
If you want to show selected value in selectbox than:
<select name="day" id="day">
<option value="1" <?php if($_POST['day']==1){ echo 'selected="selected"'} ?>></option>
.
.
.
//rest will be same
</select>
Same thing you can do for your all select boxes.

Categories