默认为“最后一条记录”的选项菜单


Option Menu with Last Record as Default

我有一个选项菜单,如下所示:

<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']; ?> 

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

我尝试过重写它。(代码在末尾)我做的第一件事是将do_while循环变成while环路,因为我认为这会给代码增加不必要的混乱之后我移动了一些代码

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

在while循环之上,因为我认为需要"启动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>

尝试使用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>'
}

工作演示