2016-04-04 94 views
1

選項菜單我有一個選項菜單如下:與最後一個記錄爲默認

<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

嘗試使用end()拿到最後一個數組:使用MySQL擴展,使用PDO或mysqli的

<?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> 

停止。使用你的代碼有問題,應該是:

$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

+0

我試過不成功。我知道它不是一個數組,但不知道如何使用引用數組的代碼。我的選項菜單由一個表格提供。感謝您的幫助:<?php $ arr = array($ row_Recordset2 ['Cycle']); $ last = end($ arr); ?> user3258571

+0

我在我的例子1,2,3,4,5中使用,但實際上選項菜單是由查詢組成SELECT DISTINCT Cycle FROM Schedule ORDER BY DATE LIMIT 1.你可以請解釋沒有數組,使用記錄? – user3258571

+0

我已經更新了我的答案。覈實。 –

0

我在此改寫了一刀。 (末尾代碼) 我做的第一件事就是把你的DO_WHILE環路成循環,因爲我覺得它這樣做,我有些感動代碼後增加不必要的混亂代碼

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

while循環上面我認爲這是需要的循環

我還拉了

if ($varCycle_DetailRS4 == $row_Recordset2['Cycle']) { 
    return ' selected'; 
} elseif ($varCycle2_DetailRS4 == $row_Recordset2['Cycle']) { 
    return ' selected'; 
} else { 
    return ''; 
} 
「黃金泵」

伸到一個功能,從而簡化代碼進一步

現在來到這裏,我假設我假定$ varCycle_DetailRS4是最後值和$ varCycle2_DetailRS4是設置befor提供的代碼currentlySelected; 如果是這種情況,並且$ 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> 
+0

我收到以下語法錯誤:echo「/n」; – user3258571