选项菜单,上次记录为默认值

时间:2016-04-04 01:54:25

标签: php mysql

我有一个选项菜单如下:

<select name="selCycle" id="selCycle" onChange="formFilter.submit()">
    <option value="%">all cycles</option>
    <?php
    do {
    ?>
        <option value="<?php echo $row_Recordset2['Cycle'] ?>"
        <?php
        if ($varCycle_DetailRS4 == $row_Recordset2['Cycle']) {
            echo 'selected';
        } elseif ($varCycle2_DetailRS4 == $row_Recordset2['Cycle']) {
            echo 'selected';
        } else {
            echo '';
        }
        ?>
        >
        <?php echo $row_Recordset2['Cycle'] ?>
        </option>
        <?php
    } while ($row_Recordset2 = mysql_fetch_assoc($Recordset2));
        $rows = mysql_num_rows($Recordset2);
        if ($rows > 0) {
            mysql_data_seek($Recordset2, 0);
            $row_Recordset2 = mysql_fetch_assoc($Recordset2);
    }
    ?>
</select>

目前,默认选择显示所有记录。我希望默认值是最新的数据集等于:

 <?php echo $row_RecordsetCycle['Cycle']; ?>

因此选项菜单会列出1,2,3,4,5,其中5是页面加载时的默认值。然后,用户可以选择任何可用选项。设置为表中的最后一个记录,限制为1,因此它将始终回显最后一条记录,该记录构成选项菜单。

请帮助。我应该编辑什么以便在

中记录一条记录
 <?php echo $row_RecordsetCycle['Cycle']; ?> 

是页面加载时的默认选项菜单还是选定选项菜单?目前,默认只显示所有记录,加载速度极慢,因此我希望最新记录成为默认记录。

2 个答案:

答案 0 :(得分:0)

尝试使用end()获取最后一个数组:

<?php
$arr =array(1,2,3,4,5);
$last = end($arr);
?>
<select name="selCycle" id="selCycle" onChange="formFilter.submit()">
    <option value="%">all cycles</option>
    <?php foreach($arr as $key=>$val):
    if(in_array("$last", array($val))==true){
       echo '<option value="" selected="selected">'.$val.'</option>';
       continue;
    }
     echo '<option>'.$val.'</option>';      
endforeach; ?>    
</select>

停止使用mysql扩展,使用pdo或mysqli。使用您的问题代码,它应该是:

$row_Recordset2 = mysql_fetch_assoc($Recordset2);
$last = end($row_Recordset2);

foreach($row_Recordset2 as $key=>$val){
   //other code
   if(in_array("$last", array($val))==true){
       echo '<option value="" selected="selected">'.$val.'</option>';
       continue;
    }
     echo '<option>'.$val.'</option>'
}

Working Demo

答案 1 :(得分:0)

我重写了这个。 (最后的代码) 我做的第一件事是将 do_while 循环转换为循环,因为我认为这会给代码增加不必要的混淆 在这之后我移动了一些代码

$rows = mysql_num_rows($Recordset2);
if ($rows > 0) {
    mysql_data_seek($Recordset2, 0);
    $row_Recordset2 = mysql_fetch_assoc($Recordset2);
}

在while循环之上,因为我认为它需要&#34;启动泵&#34; while 循环

我也拉了

if ($varCycle_DetailRS4 == $row_Recordset2['Cycle']) {
    return ' selected';
} elseif ($varCycle2_DetailRS4 == $row_Recordset2['Cycle']) {
    return ' selected';
} else {
    return '';
}

进入函数以便进一步简化代码

现在我的假设是假设$ varCycle_DetailRS4是最后一个值,$ varCycle2_DetailRS4是为所提供的代码设置的currentSelected; 如果是这种情况,并且$ varCycle2_DetailRS4如果是第一个则将被取消设置,那么所有需要做的就是稍微修改isSelected以仅将一个选项设置为选中。

<?php
function isSelect($value)
{
    $lastValue = $varCycle_DetailRS4;
    $currentlySelected = $varCycle2_DetailRS4;

    if(isset($currentlySelected))
    {
        $selectValue = $currentlySelected;
    }
    else
    {
        $selectValue = $lastValue;
    }   


    if ($selectValue == $value) {
        return ' selected';
    } else {
        return '';
    }
 }
?>
<select name="selCycle" id="selCycle" onChange="formFilter.submit()">
    <option value="%">all cycles</option>
    <?php
    $rows = mysql_num_rows($Recordset2);
    if ($rows > 0) {
        mysql_data_seek($Recordset2, 0);
        $row_Recordset2 = mysql_fetch_assoc($Recordset2);
    }
    while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)) 
    {
        $value = $row_Recordset2['Cycle']
        echo "        <option value=\"".$value."\"".isSelect($value).">".$value."</option>/n";
    } ;   
    ?>
</select>