如何下拉选择使用PHP / MYSQL

时间:2013-08-25 12:09:10

标签: php mysql

我在function菜单中有dropdown的打印类别。

function Cat_Parent(){
    $result = mysql_query("SELECT id, name, parent FROM cats ORDER BY name");
    $items = array();
     while($row = mysql_fetch_array($result))
         { $items[] = array('id' => $row['id'], 'label' => $row['name'], 'parent' => $row['parent']);
     } 


// Loop using references to build a tree
$childs = array();
foreach($items as &$item)
{
    $childs[$item['parent']][] = &$item;
}

unset($item);

foreach($items as &$item)
{
    if(isset($childs[$item['id']]))
    {
        $item['children'] = $childs[$item['id']];
    }
}
// We now have a tree with 'children' key set on each node that has children
$tree = $childs[0];

// Prepare a template and recursive closure (note reference on &$print)
$tpl = '<option name="parent[]" value="%s">%s %s</option>';
$print = function($item, $indent = '') use (&$print, $tpl)
{
    echo sprintf($tpl, $item['id'], $indent, $item['label']) . "\n";

    if(isset($item['children']))
    {
        foreach($item['children'] as $child)
        {
            $print($child, $indent . '|--');
        }
    }
};

echo '<select name="parent"><option name="parent[]" value="0">------</option>';
// Call the function for each top-level node
foreach($tree as $row)
{
    $print($row);
}
echo '</select>';
    }

这有效但我需要在value/id喜欢这个时选择$_GET['id'] = value

<select>
<option value="1">cat1</option>
<option selected value="2">cat2</option>  <-- THIS Print Selected
<option value="3">subcat2</option>
<option value="4">cat3</option>
<option value="5">cat4</option>
</select>

示例$_GET['id'] = 2,所以选择了value选项2.如何选择?

2 个答案:

答案 0 :(得分:1)

在脚本中尝试此代码。如果GET中的值与选项值相同,则定义具有“selected”值的变量。

注意$ sel变量。

// Prepare a template and recursive closure (note reference on &$print)
$tpl = '<option name="parent[]"%s value="%s">%s %s</option>';
$print = function($item, $indent = '') use (&$print, $tpl)
{
    $sel = (isset($_GET['id']) && $_GET['id'] == $item['id']) ? 'selected' : ' ';
    echo sprintf($tpl, $sel, $item['id'], $indent, $item['label']) . "\n";

    if(isset($item['children']))
    {
        foreach($item['children'] as $child)
        {
            $print($child, $indent . '|--');
        }
    }
};

答案 1 :(得分:0)

您将要在模板中比较您的值,如下所示:

$tpl = '<option name="parent[]" %s value="%s">%s %s</option>';
$print = function($item, $indent = '') use (&$print, $tpl)
{
    echo sprintf($tpl, $item['id'] == 2 ? 'selected="selected"' : '', $item['id'], $indent, $item['label']) . "\n";

    if(isset($item['children']))
    {
        foreach($item['children'] as $child)
        {
            $print($child, $indent . '|--');
        }
    }
};