2015-11-12 3 views
0

У меня есть поле выбора, которое при загрузке страницы устанавливает значение, выбранное на основе переменной. У меня также есть 2 оператора IF, которые проверяют переменную и возвращают результаты. Вот мой код, который я пытаюсь сделать:Использование переменной PHP для определения выбора окна выбора HTML

<select id="satbreak1" name="satbreak1"> 
<?php if ($trimmed_title[0] == "Guest") 
    { 
    echo ('<option selected value="#">Select One</option>'); 
    echo ('<option value="y">Yes</option>'); 
    echo ('<option value="n">No</option>'); 
    } 
if  ($trimmed_title[0] != "Guest") 
    { 
    echo ('<option <?php if($trimmed_satBreakfast[0] == "") echo ("selected ") ; ?> value="#">Select One</option>'); 
    echo ('<option <?php if($trimmed_satBreakfast[0] == "y") echo ("selected ") ; ?> value="y">Yes</option>'); 
    echo ('<option <?php if($trimmed_satBreakfast[0] == "n") echo ("selected ") ; ?> value="n">No</option>'); 
    } 
?> 
</select> 

Что мне нужно сделать, если $ trimmed_title [0] == «Гость», то эхо первой части, но если $ trimmed_title [0] = «Гость»), затем выделите вторую часть, а также проверьте, какой статус $ trimmed_satBreakfast [0] установлен и задано выбранное значение.

Каков наилучший/правильный способ справиться с этим?

Первая часть работает нормально, но наличие сценария php в эхо, похоже, терпит неудачу.

+0

Вы не можете просто повторно вставьте PHP-логику в эхо. Echo сообщает PHP, чтобы выводить некоторую строку на окончательный вывод страницы. Если вы хотите, чтобы эти операторы if работали, вам нужно было бы построить вывод строки, а затем «echo». – Aeolingamenfel

ответ

1

Я думаю, что это может сделать трюк - не проверял, но теоретически выглядит нормально

<select id="satbreak1" name="satbreak1"> 
    <?php 
     if ($trimmed_title[0] == "Guest") { 
      echo ' 
       <option selected value="#">Select One</option> 
       <option value="y">Yes</option> 
       <option value="n">No</option>'; 

      } else { 

      $tsb=$trimmed_satBreakfast[0]; 
      echo ' 
       <option selected value="#" '.($tsb=='' ? 'selected' : '').'>Select One</option> 
       <option value="y" '.($tsb=='y' ? 'selected' : '') .'>Yes</option> 
       <option value="n"'.($tsb=='n' ? 'selected' : '').'>No</option>'; 

     } 
    ?> 
</select> 
+0

Спасибо @RamRaider, это было большой помощью и решило мою проблему. – RdDragon

1

Что-то вроде этого:

<?php 
$options = array(
    'values' => array('', 'y', 'n'), 
    'titles' => array('Select One', 'Yes', 'No') 
) 

$index = $trimmed_title[0] == 'Guest' ? 0 : array_search($trimmed_satBreakfast[0], $options['values']); 
//if ($index === false) $index = 0; 

$optHtml = array(); 
foreach($options['values'] as $i => $val) { 
    $selected = $index == $i ? 'selected' : ''; 
    $optHtml[] = "<option $selected value=\"$val\">{$options['titles'][$i]}</option>"; 
} 
$optHtml = implode("\n", $optHtml); 
?> 

<select id="id" name="name"> 
    <?php echo $optHtml?> 
</select> 

или любой другой стиль, чтобы разделить HTML от PHP:

//if ($index === false) $index = 0; 
... 
?> 

<select id="id" name="name"> 
<?php foreach($options['values'] as $i => $val) {?> 
    <option <?=$index==$i?'selected':''?> value="<?=$val?>"> 
    <?=$options['titles'][$i]?> 
    </option> 
<?php } ?> 
</select> 

В этом случае HTML не используется в общем коде PHP, но PHP используется в HTML (только общие функции шаблона: циклические данные и эхо).
Общим назначением является возможность извлечь часть шаблона в отдельный файл.

0

Это уже PHP, так что вы должны удалить теги PHP

echo ('<option '.($trimmed_satBreakfast[0] == "") ? : '"selected"' : ''.' value="#">Select One</option>'); 
echo ('<option '.($trimmed_satBreakfast[0] == "y") ? : '"selected"' : ''.' value="y">Yes</option>'); 
echo ('<option '.($trimmed_satBreakfast[0] == "n") ? : '"selected"' : ''.' value="n">No</option>'); 
Смежные вопросы