在< option>中包含多个值标签? [英] Having multiple values within an <option> tag?
问题描述
我正在尝试创建一个下拉框,该下拉框的范围是10-90,我希望每个值代表中间的数字(因此10可以容纳11、12、13、14等.依此类推,依此类推,依此类推,以此类推. ).因此,如果用户单击10,它将显示数据库中10到19范围内的所有条目,而不仅仅是其中带有"10"的条目.
I am trying to create a dropdown box where it has from 10 - 90, I want each value to stand for the numbers in between (so 10 will hold 11, 12, 13, 14.. and so on and so forth). So if a user clicks on 10 it will display any entries in a database that range from 10 - 19, not just entries with "10" in it.
是否可以在一个选项标签中添加多个值?这是到目前为止我尝试过的事情.
Is it possible to add multiple values within an option tag? Here is what I have attempted so far.
HTML:
<body>
<form action="form3.php" method="post">
<label for ="description">Description:</label>
<input type="text" name="descrip" /><br />
<label for="trayheight">Height: </label>
<select name="trayheight">
<option value="">All</option>
<option value="10">10</option>
<option value="[20:21:22:23:24:25:26:27:28:29]">20</option>
<option value="30">30</option>
<option value="40">40</option>
<option value="50">50</option>
<option value="60">60</option>
<option value="70">70</option>
<option value="80">10</option>
<option value="90">90</option>
</select><br />
<label for="trayrange">Trayrange: </label>
<select name="trayrange">
<option value="">All</option>
<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><br />
<label for ="traytype">Traytype: </label>
<select name="traytype">
<option value="">All</option>
<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">Hinge pack</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="">All</option>
<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>
PHP:
<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']);
$width = mysql_real_escape_string($_POST['width']);
$depth = mysql_real_escape_string($_POST['depth']);
$varHeight= mysql_real_escape_string($_POST['trayheight']);
$varRange = mysql_real_escape_string($_POST['trayrange']);
$varType = mysql_real_escape_string($_POST['traytype']);
$varShape = mysql_real_escape_string($_POST['trayshape']);
$varImage = mysql_real_escape_string($_POST['imagename']);
$sql = "SELECT * FROM delyn WHERE
description LIKE '%".$descrip."%'
AND trayheight LIKE '%".$varHeight."%'
AND trayrange LIKE '%".$varRange."%'
AND traytype LIKE '%".$varType."%'
AND trayshape LIKE '%".$varShape."%'";
$r_query = mysql_query($sql);
while ($row = mysql_fetch_array($r_query))
{
echo '<br /> <img src=" '. $row['imagename'] . '" width="180" length="100">';
echo '<br /> Tool Code: '. $row['toolcode'];
echo '<br /> Description: '. $row['description'];
echo '<br /> Tray range: '. $row['trayrange'];
echo '<br /> Tray type: '. $row['traytype'];
echo '<br /> Tray size: '. $row['traysize'];
echo '<br /> Tray shape: '. $row['trayshape'] . '<br />' . '<br />';
}
if (mysql_num_rows($r_query) <= 0){
echo 'No results match your search, please try again';
}
?>
</body>
在此先感谢任何可以提供帮助的人:)
Thanks in advance anyone who can help :)
推荐答案
简单答案:您不能在一个选项标签值中存储多个值.
Simple answer: you cannot store multiple values in one option tag value.
最简单,最安全的解决方案是在选项值中存储一个值(例如10
),然后将其视为从设置的值到下一个10的倍数的范围:
The simplest and safest solution would be to store one value in the option value (e.g. 10
) and then treat this as a range from the value set to the next multiple of 10:
'AND col >= '.$value.' AND col < '.$value+10
第二种解决方案是将值设置为类似10-19
的范围,然后在服务器端:
A second solution would be to set the value to be a range like 10-19
and then on the server side:
list($min,$max) = explode('-',$value);
... 'AND col >= '.$min.' AND col <= '.$max ...
另一种解决方案是将包含要封装的值的数组的JSON编码存储在一个选项中,然后在服务器端解码该值:
Another solution would be to store a JSON encoding of an array containing the values you wish to encapsulate in the one option and then decode the value on the server side:
'AND col IN ('.implode(',',json_decode($value)).')'
我个人会避免使用JSON方法,因为对于这种问题,它是过大的.
I personally would avoid the JSON approach as it is overkill for this kind of problem.
这篇关于在< option>中包含多个值标签?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!