2015-02-17 3 views
2

У меня есть этот HTML:PHP Еогеасп не выбрать из выпадающего списка

<option value="yes">Yes</option> 
<option value="no">No</option> 

и мой PHP:

<?php 
exec('uci get sms_gateway.setting.filter',$filt); 
echo '<form action='.$_SERVER['PHP_SELF'].' method="post"> 
<select name="filter">'; 
foreach ($filt as $value){ 

if ($filt = "yes"){ 
    echo '<option value="'.$value.'" selected>Yes</option><br> 
      <option value="no">No</option><br>ini yes';} 
else { 
    echo '<option value="yes">Yes</option><br> 
      <option value="'.$value.'" selected>No</option><br> ini no'; 
} 
} 
echo ' 
</select> 
<input type="submit" name="submit" value="Submit">'; 
if(isset($_POST['submit'])){ 
    { 
     $data = $_POST['filter']; 
     echo "<br>halo ". $data; 
    } 
    } 
?> 

$filt имеет только одну строку, это либо yes или no , когда это yes Я хочу, чтобы часть «да» была выбрана в раскрывающемся меню, но когда это no, я хочу, чтобы часть no в раскрывающемся списке выбрана. Как мне это сделать?

+0

Во-первых, вы выполняете присвоение 'if ($ filt =" yes ") {' а не сравнение 'if ($ filter ==" yes ") {' –

+0

Я пробовал это, но это испортило мой код, вывод 'no' в выпадающем списке становится' yes', пока он должен оставаться 'no' – Lin

+0

Вам нужно передать свой POST и установить для него переменную, а затем сравнить. –

ответ

1

Этот бит кода:

foreach ($filt as $value) вы делаете as $value так использовать:

foreach ($filt as $value){ 
if ($value == "yes"){ 

Тогда у вас есть 2 набора фигурных скобок, которые не нужны; они просто лишние нажатия клавиш зря:

if(isset($_POST['submit'])){ 
    { 
     $data = $_POST['filter']; 
     echo "<br>halo ". $data; 
    } 
    } 

Изменить это:

if(isset($_POST['submit'])){ 
     $data = $_POST['filter']; 
     echo "<br>halo ". $data; 
    } 

Другой вещь, которую я заметил, отсутствующие закрытия </form> тега.


Просто для записи, вы также присвоение с использованием одного = знака, вместо сравнения с использованием двух == для:

if ($filt = "yes") 

, который теоретически должен читаться как

if ($filt == "yes") 

Добавить error reporting в начало вашего файла (ов) wh ich поможет найти ошибки.

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// rest of your code 

Sidenote: Сообщения об ошибках не должно быть сделано только в постановке, и никогда производства.

0

В коде есть много чего не так: вы обрабатываете «$ filt» как как массив, так и значение, вы также присваиваете (=) вместо сравнения. Я дам вам рабочий пример, вместо того, чтобы пытаться исправить код:

<?php $possibleValues = array('yes', 'no'); // All possible options ?> 
<?php $valueYouWantSelected = 'yes'; // 'yes' will be selected ?> 

<select> 

    <?php foreach ($possibleValues as $value): ?> 

     <?php $selected = ($valueYouWantSelected == $value) ? 'selected' : null; // Select this option if it equals $valueYouWantSelected ?> 

     <option value="<?php echo $value;?>" <?php echo $selected; ?>> 
      <?php echo $value; ?> 
     </option> 

    <?php endforeach ?> 

</select> 

Если вы смущены о том, как я задаю $ выбран, проверьте ternary operators.

Кроме того, я использую alternative syntax, это упрощает организацию PHP-кода в HTML (и правильно кодирует код в вашем редакторе).

+1

Благодарим вас за прогулку, позвольте мне взглянуть на ваш код .... – Lin

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