2016-04-04 3 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(), чтобы получить последний массив:

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

Stop с использованием расширения 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

+0

Я пробовал безуспешно. Я знаю, что это не массив, но не знаю, как использовать свой код, который ссылается на массив. Меню опций подается по таблице. Справка приветствуется: user3258571

+0

Я использовал в моем примере 1,2,3,4,5, но на самом деле меню опций состоит из запроса SELECT DISTINCT Cycle FROM Schedule ORDER BY DATE LIMIT 1. Не могли бы вы объяснить без массива, используя Recordset? – user3258571

+0

Я обновил свой ответ. Проверь это. –

0

я принял удар на переписывание это. (Код в конце) первое, что я сделал, было превратить do_while петлю в в то время как цикла, как я думаю, что это добавление ненужной путаницы в коде после того, как это делать я переехал код

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

выше время цикла, как я думал, что это было необходимо, чтобы «премьер-насос» из в то время как петля

я вытащил

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

из в функцию таким образом, чтобы упростить код дальнейшего

теперь вот пришли мои предположения, я предположил, что $ varCycle_DetailRS4 был последним значением и что $ varCycle2_DetailRS4 был currentlySelected, который был установлен Befor коды при условии; , если это так, и что $ 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 "<значение опции = \" ". $ Value." \ "". IsSelect ($ value). ">". $ Value. "/n"; – user3258571

Смежные вопросы