Drop down select box with php - php

I wrote some php to deliver a select box. For some reason it refuses to select the correct option. When I try the HTML directly it works. To check I wasn't doing anything stupid. I copied the generated code and they put the code to generate and the html.
<dd>
<select id="jform_my_foreign_key" class="inputbox " name="jform[my_foreign_key]" size="1">
<option value="">- Select Order title -</option>
<option value="13">00000013</option>
<option value="12">00000012</option>
<option value="9" selected="selected">00000009</option>
<option value="8">00000008</option>
<option value="7">00000001</option>
</select>
</dd>
<select id="jform_my_foreign_key" class="inputbox " size="1" name="jform[my_foreign_key]">
<option value="">- Select Order title -</option>
<option value="13">00000013</option>
<option value="12">00000012</option>
<option selected="selected" value="9">00000009</option>
<option value="8">00000008</option>
<option value="7">00000001</option>
</select>
The top is generated by the php code and the bottom is me putting the html directly into
the page
Code used is:
<dd><select id="jform_my_foreign_key" class="inputbox " size="1" name="jform[my_foreign_key]">
<option value="">- Select Order title -</option>
<?php
for($x=0;$x<count($ordersAvailableHoldingArray);$x+=2){
if($ordersUseHoldingArray[0] ==$ordersAvailableHoldingArray[$x+1]){
$selected ="selected='selected'";
}else{
$selected ="";
}
echo '<option '.$selected.' value="'.$ordersAvailableHoldingArray[$x].'">'.$ordersAvailableHoldingArray[$x+1].'</option>';
}
?>
</select></dd>
I can't figure out why it doesn't work it looks right to me. Any help where to start debugging would be great

You might be better off using a foreach to put key and value in select as example below.
<form action="" method="post">
<select id="jform_my_foreign_key" class="inputbox" name="jform[my_foreign_key]" size="1">
<option value="">- Select Order title -</option>
<?php
$data_for_select = array(13=>'00000013',12=>'00000012',9=>'0000009');
foreach($data_for_select as $k=>$v)
{
if($k==$_POST['jform']['my_foreign_key'])
{
echo "<option value=\"$k\" selected=\"selected\">$v</option>";
}
else
{
echo "<option value=\"$k\">$v</option>";
}
}
?>
</select>
<input name="jello" type="submit" value="send">
</form>

Related

I want to get values in PHP throughout a html form

Im new to PHP and want to get these arrays to send by a form, but cant manage to store it in a variable and access them
HTML
<form action="./index.php" method="post">
<select name="multicheckbox[]" multiple="multiple" class="4colactive">
<option value="LunVie" name="LunVie">Lunes a Viernes</option>
<option value="LunSab" name="LunSab">Lunes a Sábados</option>
<option value="Todos" name="Todos">Todos los días</option>
<option value="Otros" name="Otros">Otros</option>
</select>
<button type="submit">Enviar</button>
</form>
PHP
<?php
$values = $_POST["multicheckbox"];
echo $values[2];
?>
multicheckbox is an array, iterate over it.
foreach($_POST["multicheckbox"] as $check) {
echo $check . "<br />\n";
}
Also note options don't have names, the select has a name. https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option
<select name="multicheckbox[]" multiple="multiple" class="4colactive">
<option value="LunVie">Lunes a Viernes</option>
<option value="LunSab">Lunes a Sábados</option>
<option value="Todos">Todos los días</option>
<option value="Otros">Otros</option>
</select>

How to create a PHP dropdown list that allows you to select multiple options?

This is the basis for the code I'm using, drawing options from a database but no matter how I alter this code I will only let me select 1 option or return an error.
<select name="sargentid" id="fieldsargentid" class="form-control">
<?php foreach ($sargent as $sargent) { echo "<option value='" . $sargent->getID() .
"'>$sargent</option>"; }?>
</select>
<select name="sargentid" id="fieldsargentid" class="form-control" multiple=multiple>
<?php
foreach($sargent as $sargentKey => $sargentList){
$values = $sargentList['NameofTheRowInTable'];
?>
<options value = <?php echo $values; ?> ><?php echo $values;?></options>
<?php
}
?>
</select>
A drop-down list that allows multiple selections using the multiple attribute:
<select id="animals" name="animal" multiple>
<option value="cat">Cat</option>
<option value="dog">Dog</option>
<option value="mouse">Mouse</option>
<option value="lion">Lion</option>
</select>
Hold down the Ctrl (windows) / Command (Mac) button to select multiple options.
Demo: https://jsfiddle.net/prk6c9q7/
<select name="sargentid" id="fieldsargentid" class="form-control" multiple>
<? foreach($argent as $data){?>
<option value="<?=$data->getID() ?>"><?= $data ?></option>
<?php } ?>
</select>
Try This

Get value of drop down menu and save as variable in PHP

I want to get the selected value of a drop down menu and save it as a variable. I tried the following as documented in another post, but it seems not working: echo $selected = $_POST['<?php $as->my_name(); ?>'];
Drop down:
<select name="<?php $as->my_name(); ?>">
<option value="">Select this</option>
<option value="91"<?php $mb->state('91'); ?>>91</option>
<option value="90"<?php $mb->state('90'); ?>>90</option>
<option value="89"<?php $mb->state('89'); ?>>89</option>
<option value="88"<?php $mb->state('88'); ?>>88</option>
<option value="87"<?php $mb->state('87'); ?>>87</option>
<option value="86"<?php $mb->state('86'); ?>>86</option>
<option value="85"<?php $mb->state('85'); ?>>85</option>
<option value="84"<?php $mb->state('84'); ?>>84</option>
<option value="83"<?php $mb->state('83'); ?>>83</option>
<option value="82"<?php $mb->state('82'); ?>>82</option>
</select>
Post the form:
You have to put the select option within form tags
<form method="post">
<select name="example">
<option></option>
</select>
<input type="submit" />
</form>
Get the posted value:
To get the value of this example you can use:
<?php
$selected = $_POST['example'];
echo $selected;
?>
To get the value in your case:
<select name="<?php echo $as->my_name(); ?>">
<option value="test">test</option>
</select>
<?php
$selected = $_POST[$as->my_name()];
echo $selected;
?>

value="<?php echo htmlspecialchars($_POST['whatever']); ?>" not working in select tag

my code is written below
<select name="year" required value="<?php echo htmlspecialchars($_POST['year']); ?>" >
<option>----SELECT----</option>
<option value="1">1<sup>st</sup></option>
<option value="2">2<sup>nd</sup></option>
<option value="3">3<sup>rd</sup></option>
<option value="4">4<sup>th</sup></option>
</select>
htmlspecialchars() is not working for select tag.is there any mistake or there is some other way to do it
if you want to set the default value of a select you have to set the option that contains this value as selected like this:
<select name="year" required="required">
<option>----SELECT----</option>
<option <?php if((int)($_POST['year'])==1){?>selected<?php } ?> value="1">1<sup>st</sup></option>
<option <?php if((int)($_POST['year'])==2){?>selected<?php } ?> value="2">2<sup>nd</sup></option>
<option <?php if((int)($_POST['year'])==3){?>selected<?php } ?> value="3">3</sup>rd<sup></b></option>
<option <?php if((int)($_POST['year'])==4){?>selected<?php } ?> value="4">4<sup>rth</sup></option>
</select>
You don't assign a value attribute to a select tag; you assign it to option tags. It's not clear what you are trying to do, but <select ... value="..."> is just invalid HTML. See the specification.
you cannnot give value in <select> tag. Value is given in <option> tag.
like
<select name="year">
<option>----SELECT----</option>
<option value="<?php echo htmlspecialchars($_POST['year']); ?>">
<?php echo htmlspecialchars($_POST['year']); ?></option>
<option value="1">1<sup>st</sup></option>
<option value="2">2<sup>nd</sup></option>
<option value="3">3</sup>rd<sup></b></option>
<option value="4">4<sup>rth</sup></option>
</select>

How can I stop an empty SQL query from displaying all results?

I am creating a meat packaging search form, users can search for different packages using multiple forms and dropdown boxes. I have a had a lot of problems but most of it is sorted now, I only need to create an "Any" search for the dropdown boxes and the problem of empty textboxes displaying all results.
Currently when a user sends a search, they may have entered in some other text boxes, but when one of the forms is left empty that automatically displays all of the results. I want it so when a search is sent and a box is empty, the code ignores that form and just checks the ones that have info inside of them.
here is my test code (not my current final form code):
<body>
<?php
$con = mysql_connect("localhost", "root", "");
mysql_select_db("delyn_db", $con);
if (!$con)
{
die("Could not connect: " . mysql_error());
}
$descrip = mysql_real_escape_string($_POST['descrip']);
$sql = "SELECT * FROM delyn WHERE description LIKE '%" . $descrip . "%'";
$r_query = mysql_query($sql);
if ($descrip === "")
{
echo 'Null value';
}
while ($row = mysql_fetch_array($r_query))
{
echo '<br /> Description: ' . $row['description'];
}
?>
</body>
Anyone have any ideas on how to stop this?
EDIT: Sorry here is my HTML with the search boxes. The above php is just where the values are sent.
<body>
<form action="form5null.php" method="post">
<label for="description">Description:</label> <input type="text" name="descrip">
<br>
<label for="trayheight">Trayheight:</label> <input type="text" name="height">
<br>
<label for="traywidth">Traywidth:</label> <input type="text" name="width">
<br>
<label for="traydepth">Traydepth:</label> <input type="text" name="depth">
<br>
<label for="trayrange">Trayrange:</label> <select name="trayrange">
<option value="BBQ">
BBQ
</option>
<option value="Dessert">
Dessert
</option>
<option value="Display">
Display
</option>
<option value="Meat">
Meat
</option>
<option value="Microwave">
Microwave
</option>
<option value="Party">
Party
</option>
<option value="Salad/Wet Pasta">
Salad/Wet Pasta
</option>
<option value="Snacks">
Snacks
</option>
<option value="Standard">
Standard
</option>
</select> <label for="traytype">Traytype:</label> <select name="traytype">
<option value="Open">
Open
</option>
<option value="Cavitised">
Cavitised
</option>
<option value="Lid">
Lid
</option>
<option value="Tray">
Tray
</option>
<option value="Coallition">
Coallition
</option>
<option value="Bowl">
Bowl
</option>
<option value="Hinge pack">
Open
</option>
<option value="Pot">
Pot
</option>
<option value="Base & Lid">
Base and Lid
</option>
<option value="Rectangular">
Rectangular
</option>
<option value="Specalist">
Specialist
</option>
</select>
<br>
<label for="trayshape">Trayshape:</label> <select name="trayshape">
<option value="Rectangular">
Rectangular
</option>
<option value="Oval">
Oval
</option>
<option value="Square">
Square
</option>
<option value="Insert">
Insert
</option>
<option value="Round">
Round
</option>
<option value="Open">
Open
</option>
</select>
<br />
<input type="submit" value="Submit">
</form>
</body>
Add the following as the first option to all your dropdowns:
<option value="*">All</option>
Then use the SQL I provided in your duplicate question here:
Make SQL ignore a specific search value if clicked in a dropdown?
Dirk Nachbar gave a good answer as well.
Have you tried limiting your SQL queries by just checking if the values are blank/null (whichever is appropriate for PHP) and just not running the query if nothing is filled in?
e.g. (pseudocode)
if(box1.HasText || box2.HasText || box3.HasText)
{
RunTheSqlForForm1();
}

Categories