我想动态生成html select options
使用PHP的基础上,无论其存储在MySQL数据库。PHP:foreach循环里面的PHP变量?
存储名为sizez
的数据的列。
在该列中的数据被存储,像这样:
small,large,xlarge,xxlarge
所以基本上数据由逗号分隔。
现在在我的php页面我只需将数据拖动到我的页面上,并使用while loop
对存储在mysql数据库中的每个产品进行显示。
我遇到的问题是我需要根据每个项目的sizez
列生成选择选项下拉列表。
因为我使用的是explode()
函数,它也会成功生成选择选项。
但是,问题是它只会从第一个sizez
列中获取字符串并忽略剩余的项目。但它也会显示其他项目的第一列中的字符串,并重复它们!
这是我的代码:
while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
$id = $row["id"];
$sizez = $row["sizez"];
$sizez = preg_replace('/\.$/', '', $sizez); //Remove dot at end if exists
$array = explode(',', $sizez); //split string into array seperated by ','
foreach($array as $value) //loop over values
{
//echo $value . PHP_EOL; //print value
$sizesOption .='<option>'.$value.'</option>';
}
$all_list .="<select>
'.$sizesOption.'
</select>";
,所以我认为把$all_list .=
内foreach($array as $value)
但这种方法是错误的。
可能有人请告知这个问题?
任何帮助,将不胜感激。
编辑:
预期的结果应该是这样的:
item one item two item three
small large small
large xxlarge xxlarge
然而,我的代码我得到的结果是这样的:
item one item two item three
small small small
large large large
small small
large large
small
large
所以基本上,它会得到第一个项目的尺寸列,它会在其他项目的选择选项内重复它,就像上面的例子。
因此,如果他们重复,预期的结果是什么?添加一些关于你期望得到的数据。 – Pinx0 2015-03-02 14:59:44
不要在一个字段中存储多个值(“small,large,xlarge,xxlarge”) - 谷歌关于数据库的正常形式...... – MilanG 2015-03-02 15:01:06
有一些奇怪的方式你concat字符串。尝试:'$ all_list。=“”;' – 2015-03-02 15:02:06