我有一个选项菜单如下:
<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']; ?>
是页面加载时的默认选项菜单还是选定选项菜单?目前,默认只显示所有记录,加载速度极慢,因此我希望最新记录成为默认记录。
答案 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>'
}
答案 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>