I want to be able to select randomly from the select tag using php,
i tried using rand(),it didnt seem to work
<select name="symbols" class="form-control" multiple="multiple">
<option value="BCH/BTC">BCH/BTC</option>
<option value="BCH/EUR">BCH/EUR</option>
<option value="BCH/GBP">BCH/GBP</option>
<option value="BTC-EOS">BTC/EOS</option>
<?php
$symbols = mysqli_real_escape_string($conn, $_POST['symbols']);
$rand001= shuffle($symbols);
?>
you have to use javascript for this,
because html has been created already before and php cannot change it:
in Jquery Syntax:
let options = $("option");
let toSelect = options[Math.floor(Math.random() * options.length)];
$(toSelect).attr("selected","selected");
Related
I use laravel 5.4.
<select name="type" id="type">
<option value="0">title1</option>
<option value="1" selected>title2</option>
<option value="2">title3</option>
</select>
I record the data to the database. But I can not get the value of the select box tag. I am using the following codes in Controller and as a result I get text.
$type = $request->get('type');
or
$type = Input::get('type');
print_r($type) ;
result: "title2"
I did not find any results in my research. Please help me.Is there a recommendation?
change $request->get('type') to $request->input('type')
the easiest way is $request->type to get value of select option in your controller ;)
I have a drop-down menu as following:
<select onchange="random_function()" id='choice' >
<option selected="selected" >
Make a choice
</option>
</select>
I populate it through a php request inside the <select> tag as following:
<?php
include 'config.php';
$query = $pdo->query('
SELECT choices
FROM allTheChoices'
);
while ($row = $query->fetch()){
echo "<option>".$row['choices']."</option>";
}
?>
For the moment, my database is uncomplete and I have only 2 options to display but there will be plenty in the future (100+).
My goal is to find a way to let the select only show 10 options and it should display a scroll bar to see all the remaining options.
I already tried using <select size="10"> but the design of the dropdown is completely changed and awful.
Do you have a simple way to do this without altering the design?
Used this bit of code to achieve what I wanted :
<select style="position:absolute;" onmousedown="if(this.options.length>8)
{this.size=8;}" onchange='this.size=0;' onblur="this.size=0;" >
Make sure to use the following to avoid container div to expand when choosing an option :
style="position:absolute;"
and edit the following code with the number of choices you want to display (10 is used in this example) :
onmousedown="if(this.options.length>10){this.size=10;}"
So the whole html code I used is :
<select style="position:absolute;" onmousedown="if(this.options.length>8)
{this.size=8;}" onchange='this.size=0;' onblur="this.size=0;" >
<option selected="selected" >
Make a choice
</option>
</select>
Try using a limit in your SQL statement, like this: "LIMIT 10".
So this is how the code might look:
<?php
include 'config.php';
$query = $pdo->query('
SELECT choices
FROM allTheChoices
LIMIT 10'
);
while ($row = $query->fetch()){
echo "<option>".$row['choices']."</option>";
} ?>
I have HTML form with multiple select element to let the users select multiple options from the list for submission. The form method is POST and it posts the form to PHP file. I figured it out how to echo multiple selected options through out reading this How to get multiple selected values of select box in php? but I am unable to write those values to a variable as string, and having space between each option-value. Is it possible to achieve this without using array?
Here is my HTML code:
<select name="place[]" id="place" multiple>
<optgroup label="Ottawa">
<option value="London">London</option>
<option value="Toronto">Toronto</option>
<option value="Windsor">Windsor</option>
</optgroup>
<optgroup label="Alberta">
<option value="Brooks">Brooks</option>
<option value="Calgary">Calgary</option>
<option value="Cold Lake">Cold Lake</option>
</optgroup>
</select>
Here is the PHP code:
<?php
foreach ($_GET['place'] as $selectedOption)
echo $selectedOption."\n";
?>
The above code only echo the values but not assigning it to variable as string. Can I simply use $locations = instead of echo?
Note: There are many Questions and Answers that shows how to assign select option value to PHP variable but not for multiple option.
Since you said you were using a post request, $_GET['place'] won't work. So using $_POST['place'] instead, you can glue the values of the array together using implode():
$locations = implode(' ', $_POST['place']);
Is it possible to assign multiple values to select option drop down lists? I need to retrieve multiple pieces of data from each drop down when they are selected and I have only been able to get the "name" and an "id". The name is displayed for the user to select however it is the ID that is passed to be processed. Here is my code:
<?php
$att_1 = $att_1;
mysql_connect("xx.xx.xx.xx","xxxxxx","xxxxxx");
mysql_select_db("dezanjow_cf");
$sql=mysql_query("select id, name from model");
if(mysql_num_rows($sql)){
$select= '<select name="model">';
$select.='<option value="default">Select Model</option>';
while($rs=mysql_fetch_array($sql)){
$select.='<option value="'.$rs['id'].'">'.$rs['name'].'</option>';
}
}
$select.='</select>';
echo $select;
?>
This produces html that looks like:
<select name="model">
<option value="default">Select Model</option>
<option value="5">GH20</option>
<option value="6">GH21</option>
<option value="7">GH22</option>
</select>
I wish to display them like this (as example):
<select name="model">
<option value="default">Select Model</option>
<option value="5","abc">GH20</option>
<option value="6","def">GH21</option>
<option value="7","ghi">GH22</option>
</select>
Thus when the data is passed onto the next php script, I can use both data "5" and "abc" when the user selects "GH20". I have not seen much on Google about this and don't even know if this is possible. Please let me know if I am asking for the impossible! Many Thanks, Nick
Hey you cannot have multiple values like that because post or get will return just first value which in this case is 5
<option value="5","abc">GH20</option>
but you can make your value looks like this
<option value="5,abc">GH20</option>
and then in php script you can separate values by using explode function
explode(',', $_POST['model'])
which will return array that you can use
array( 0=> 5, 1=>abc)
Its better if you serialize your data then at next php script unserialize it.
$data=array($rs['id'], "abc"); //data to be stored
$serialized_data=serialize($data); //serialize data
$select.='<option value="'.$serialized_data.'">'.$rs['name'].'</option>';
IMPORTANT
//unserialize information
$unserialized_data=unserialize($serialized_data);
this will output the same array array('SOMEID', "abc")
Let's say I have this:
<select name="exposure">
<option value='1,0.005'>Micro</option>
<option value='2,0.007'>Mini</option>
</select>
<select name="clicks">
<option value="2500">2500 - Clicks</option >
<option value="500">500 - Clicks</option >
</select>
<label>Price:</label>
<div id="price"></div>
How can I do, so whenever I select something from select="exposure", it will automatically change the OPTIONS of select="clicks", and at last, take the value from select="clicks" and then multiply it with the second value of select="exposure".
Example
I have selected
<option value='2,0.007'>Mini</option>
And with this option, the only click package that is available is:
<option value="2500">2500 - Clicks</option >
Price: 0.007*2500 = 17,5
Is that possible?
Try this
$("select[name=clicks]").change(function(){
$("label").text( parseFloat($(this).val()) * parseFloat($("select[name=clicks]:option:eq(1)")[0].value) );
});
To "select value of select":
$('select[name="exposure"]').val('2,0.007');
To make only some options available:
$('select[name="clicks"] option[value="500"]').remove();
To extract data from value:
var splitResult = $('select[name="exposure"]').val().split(',');
alert(splitResult[0] * splitResult[1]);
But I personally suggest to not pass additional information via the attribute "value"; better solution would be to create a new attribute to such needs.