使用数组数组填充表单选项列表

时间:2011-03-17 02:35:57

标签: php mysql arrays

我已经在这几个小时了,似乎无法得到我正在寻找的东西。以下是我要做的一个例子:

$query1=mysql_query("Select * From table1 Where name='blah'");
while($queryvalue1=mysql_fetch_array($query1)) {
    $array1 = $queryvalue1['Column1']
    $Options="";
    $query2=mysql_query("Select * From table2 Where id In ($array1)");
    while($queryvalue2=mysql_fetch_array($query2)) {
        $var1 = $queryvalue2['Column2'];
        $var2 = $queryvalue2['Column3'];
        $Options.="<OPTION VALUE=\"$var1\">".$var2;
    }
}

如果我在循环中回显$ var1和$ var2,我会得到所有合适的值,但是当我将它们包装在html标记和echo选项中时,它只给出了第一个值。我可以使用$ Options代码,如果它发生在第一个数组循环中,那就是当我在数组的数组循环中使用它时。

我的智慧结束了。有谁知道为什么会出现这个问题?有谁知道修复它的方法?任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

问题可能是您在while循环中

$Options="";

这将重置收集的<option>字段,这就是您只能在页面输出中看到第二个循环中的 last 条目的原因。

答案 1 :(得分:1)

除了第3行缺少的分号外,问题是你正在清除外环内的$Options字符串。

尝试这样的事情

$options = array();
$query1=mysql_query("Select * From table1 Where name='blah'");
while($queryvalue1=mysql_fetch_array($query1)) {
    $array1 = $queryvalue1['Column1'];
    $query2=mysql_query("Select * From table2 Where id In ($array1)");
    while($queryvalue2=mysql_fetch_array($query2)) {
        $var1 = $queryvalue2['Column2'];
        $var2 = $queryvalue2['Column3'];
        $options[] = sprintf('<option value="%s">%s</option>',
                             htmlspecialchars($var1),
                             htmlspecialchars($var2));
    }
}
$options = implode(PHP_EOL, $options);