使用Database中的信息创建预定义的选择框

时间:2013-01-31 03:53:39

标签: php sql

我有两个数组都来自我的SQL服务器

实施例: 数组1(45,46,47,48) 数组2(46,47)

我的代码如下:

<select>
   <?
      while($array1 = $t->fetch_object()) /*Get from DB*/ {
        foreach($array2 as $a2){
   ?>
       <option <?=$array1 == $a2 ? 'value="'.$array1'" select="selected"' : 'value="'.$array1.'"'?>><?=$array1?><option>
<? } }?>
</select>

这会多次生成自己,因为它会循环array2两次。我出于某种原因无法弄清楚如何在没有多个选项的情况下正确运行。 (也许我一整天都在工作)但是任何帮助都一定会受到赞赏。

编辑:所以输出不是:

45 46选中 47选中 48 45选中 46选中 47 48

它是: 45 46选中 47选中 48

上面由于foreach而循环两次,我不知道如何让它循环一次。嗯,如果我有$ i = 1,它会在下一次计数时停止。

澄清我正在使用此http://www.erichynds.com/jquery/jquery-ui-multiselect-widget/下拉菜单。

1 个答案:

答案 0 :(得分:0)

我可能不太了解你的问题,但我从代码中看到了什么。您正尝试从array2进行默认选择。我这样做的方法是:

<select>
<?php
//Here comes the php

//Variables
//---------------
$array2 = array(46,47);
//---------------

//Looping into the fecthed data
//------------------
while($array1 = $t->fetch_object()) /*Get from DB*/ {
    //Initalization of looping variables
    $boolFound = false;
    $i = 0;

    //looking into aray2 for default values
    while($boolFound == false && $i < count($array2)) //While a default is not a match 
    {                                                 //or the end of array2
        if($array2[$i] == $array1) //Is this a default value?
        {
             $boolFound = true; //Yes, we stop the loop
        }
        else
        {
            $i++; //No, we continu until the end of array2
        }
    }

    //Either we have a default or not we output the option
    echo('<option value="'.$array1.'" ');

    //if it is a default, we output "selected"
    if($boolFound)
    {
        echo('select="selected"');  
    }

    //Then the value itself, and we close the html
    echo('>'.$array1.'</option>');
}
//------END of data looping------------
//END of PHP    
?> 
</select>

这个问题。您可能有超过1个“默认”选项(已选中)。

希望得到这个帮助。

安托

(我在php中有点生疏,不确定“$ array1 = $ t-&gt; fetch_object()”部分。)