2014-01-17 2 views
0

Я получаю головную боль от этого. Мне нужно поставить if заявление внутри эха (это эхо в функции, это для представления формы на самом деле)Как вставить if statement внутри echo

Вот пример частичного моего кода. В этой ситуации, как я могу поставить тезис, если выражение внутри моего эха?

<?php echo '<td><select id="depuis" name="depuis"> 
    <option value=\'4\' <?php if(isset($_POST[\'depuis\']) && $_POST[\'depuis\'] == \'4\'){ echo \'selected\'; } else { echo ''; } ?> ></option> 
    <option value=\'1\' <?php if(isset($_POST[\'depuis\']) && $_POST[\'depuis\'] == \'1\'){ echo \'selected\'; } else { echo ''; } ?> >2 ans et moins</option> 
    <option value=\'2\' <?php if(isset($_POST[\'depuis\']) && $_POST[\'depuis\'] == \'2\'){ echo \'selected\'; } else { echo ''; } ?> >2 &agrave; 5 ans</option> 
    <option value=\'3\' <?php if(isset($_POST[\'depuis\']) && $_POST[\'depuis\'] == \'3\'){ echo \'selected\'; } else { echo ''; } ?> >5 ans et plus</option> 
</select> 
</td>' 
; ?> 

ответ

5

Все PHP поэтому нужно использовать больше, чем первый <?php Finish каждый echo перед проверкой с if. Например:

<?php 
    echo '<td><select id="depuis" name="depuis"> 
    <option value="4"'; 
    if(isset($_POST['depuis']) && $_POST['depuis'] == '4') { 
     echo ' selected'; 
    } 
echo ' >Something here maybe?</option>...etc 
+0

Great! Это довольно просто, не нужно новых переменных, +1! – user3038607

0

Не уверен, что вы можете сделать это, как вы просите. Вам просто нужно использовать регулярный if/else if block и выводить результат отдельно.

<?php 
echo("<td><select id=\"depuis\" name=\"depuis\">"); 
echo("<option value='4'"); 
if(isset($_POST['depuis']) && $_POST['depuis'] == '4'){ echo("selected"); } 
echo("></option>"); 

[ ...etc... ] 
?> 
2

Это будет работать - хотя я уверен, что это может быть упрощен:

<?php 

$out = ' 
    <td> 
     <select id="depuis" name="depuis"> 
     <option value="4" 
    '; 

    if(isset($_POST['depuis']) && $_POST['depuis'] == '4'){ 
     $out .= 'selected'; 
    } 

    $out .= ' 
     ></option> 
     <option value='1' 
    '; 

    if(isset($_POST['depuis']) && $_POST['depuis'] == '1'){ 
     $out .= 'selected'; 
    } 

    $out .= ' 
     >2 ans et moins</option> 
     <option value=\'2\' 
    '; 


    if(isset($_POST['depuis']) && $_POST['depuis'] == '2'){ 
     $out .= 'selected'; 
    } 

    $out .= ' 
     >2 &agrave; 5 ans</option> 
     <option value='3' 
    '; 

    if(isset($_POST['depuis']) && $_POST['depuis'] == '3'){ 
     $out .= 'selected'; 
    } 

    $out .= ' 
      >5 ans et plus</option> 
     </select> 
    </td> 
    '; 

    echo $out; 
?> 

Meilleurs Voeux ...

+0

Merci beaucoup, toi aussi! :) – user3038607

1

Вы не должны бежать ключи массива в строке

if(isset($_POST[\'depuis\']) ... 

Должно быть

if(isset($_POST['depuis']) && ... 

Также вы можете очистить поколение опций с массивом и петлей

$options = array(
    'label1' => 1, 
    'label2' => 2, 
    'label3' => 3, 
    'label4' => 4 
); 
$value = (isset($_POST['depuis'])) ? $_POST['depuis'] : 0; 

foreach ($options as $label => $optionValue) { 
    $selected = ($optionValue == $value) ? ' selected' : ''; 

    printf('<option value="%s"%s>%s</option>', $optionValue, $selected, $label); 
} 
+0

Если заказ важен, вы можете сказать 'foreach (['4', '1', '2', '3'] как $ x)'. – cHao

+0

(BTW, все ваши варианты имеют значение «value =» 4 »'.) – cHao

+0

@cHao Спасибо, обновлено – AlexP

1

Используйте встроенный, если оператор:

echo 'Based on your score, you are a ',($score > 10 ? 'genius' : 'nobody'); 
+0

Конкатенация выполняется с точкой вместо запятой – machineaddict

+1

@machineaddict - 'echo' может принимать разделенный запятыми список аргументов, а также как строка. – andrewsi

+0

@andrewsi: Спасибо за информацию. Я просто тестировал его, и он работает. Извините Айдан. – machineaddict

1

Вы хотите использовать трехкомпонентный оператор который действует как укороченный IF/Else заявление:

echo '<option value="'.$value.'" '.(($value=='United States')?'selected="selected"':"").'>'.$value.'</option>';

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