我希望创建一系列从MYSQL数据库填充的下拉框。
我在数据库中有2个表,
id,name -
1 |热
2 |冷
3 |蜗杆
id,来自表#1(1,3,4)的ids -
1 | 1,3,...
2 | 2,3,...
3 | 1,2,...,
我需要从表2中选择记录,并使用表1中的名称创建下拉菜单。
我使用以下代码创建下拉列表,但它只显示一个下拉列表并停止。
非常感谢任何帮助
<?php
$getRss = mysql_query("SELECT * FROM optionals_groups where resid=".$_SESSION['restaid']." order by id asc");
while ($rss = @mysql_fetch_array($getRss)) { ?>
<select name="a_<?=$rss['id']?>" id="a_<?=$rss['id']?>" >
<option value="1" >Select Options</option>
<?php
$ot=0;
$last_ot="";
$goptionals=explode(', ',($rss['goptionals']));
$getRss= mysql_query("SELECT * FROM optionals order by id asc");
while ($rsso = mysql_fetch_array($getRss)) {
if (in_array($rsso['id'],$goptionals)) {
$ot++;
$last_ot=$rsso['optional'];
?>
<option value="<?=$rsso['id']?>" ><?=$rsso['optional']?></option>
<?php
}
}
?>
</select>
<br />
<?php } ?>
更新
这是我到目前为止的地方。我能够使用表2创建下拉列表,我需要弄清楚如何从表1中获取表2中列出的每个id的名称。
我觉得加入的东西会起作用,但不太确定。
有什么想法吗?
<?php
$getRss = mysql_query("SELECT * FROM optionals_groups where resid=".$_SESSION['restaid']." order by id asc");
while ($rsr = @mysql_fetch_array($getRss)) {
$goptionals=explode(', ',($rsr['goptionals']));
echo "<select name='a_".$rsr['id']." id='a_".$rsr['id']."' >";
echo "<option value='1' >Select Options</option>";
foreach($goptionals as $v)
{
echo "<option value=".$v." >".$v."</option>";
}
echo "</select><br>";
}?>
答案 0 :(得分:2)
执行此操作的正确方法是编写join
查询,该查询已获取所需的所有信息,然后创建下拉列表。永远不要在循环内查询数据库!
更多提示:
@
。它会模糊你真正想知道的错误。答案 1 :(得分:0)
在您的示例中,INNER JOIN
在两个表中至少有一个匹配时返回行(id)
INNER JOIN
的语法是
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name