Запуск более одного оператора Else If на странице PHP - PullRequest
1 голос
/ 06 октября 2011

Мне было интересно, как лучше всего запустить два (или более) оператора if на одной странице PHP.Это часть формы, в которой ищется тип билета и сколько дней.Мне нужно выполнить два из этих утверждений на одной странице, и мне кажется, что они не работают, потому что, как только оно попадает в истинное утверждение, оно останавливается.Как я могу заставить это работать?

<?php
    if($ticket_type=='Child (5 & Under)'){
     echo "
     <select name=\"ticket_type[]\">
       <option value=\"\">Select one...</option>
       <option selected=\"selected\">Child (5 &amp; Under)</option>
       <option>Child (6 - 12)</option>
       <option>Teen (13 - 17)</option>
     </select>";
    }else if($ticket_type=='Child (6 - 12)'){
     echo "
     <select name=\"ticket_type[]\">
       <option value=\"\">Select one...</option>
       <option>Child (5 &amp; Under)</option>
       <option selected=\"selected\">Child (6 - 12)</option>
       <option>Teen (13 - 17)</option>
     </select>";
    }else if($ticket_type=='Teen (13 - 17)'){
     echo "
     <select name=\"ticket_type[]\">
       <option value=\"\">Select one...</option>
       <option>Child (5 &amp; Under)</option>
       <option>Child (6 - 12)</option>
       <option selected=\"selected\">Teen (13 - 17)</option>
     </select>";
    }else{
     echo "
     <select name=\"ticket_type[]\">
       <option value=\"\">Select one...</option>
       <option>Child (5 &amp; Under)</option>
       <option>Child (6 - 12)</option>
       <option>Teen (13 - 17)</option>
     </select>";


  }?>




<?php
        if($days=='1 Day'){
         echo "
         <select name=\"ticket_type[]\">
           <option value="">Select one...</option>
           <option selected=\"selected\">1 Day</option>
           <option>2 Days</option>
           <option>3 out of 4 Days</option>
         </select>";
        }else if($days=='2 Days'){
         echo "
         <select name=\"ticket_type[]\">
           <option value="">Select one...</option>
           <option>1 Day</option>
           <option selected=\"selected\">2 Days</option>
           <option>3 out of 4 Days</option>
         </select>";
        }else if($days=='3 out of 4 Days'){
         echo "
         <select name=\"ticket_type[]\">
           <option value="">Select one...</option>
           <option>1 Day</option>
           <option>2 Days</option>
           <option selected=\"selected\">3 out of 4 Days</option>
         </select>";
        }else{
         echo "
         <select name=\"days[]\">
           <option value="">Select one...</option>
           <option>1 Day</option>
           <option>2 Days</option>
           <option>3 out of 4 Days</option>
         </select>";
        }?>

Ответы [ 3 ]

4 голосов
/ 06 октября 2011

Вы можете значительно упростить код:

$options = array(
   'Select One' => 'Select One',
   '1 Day' => '1 Day',
   '2 Days' => '2 Days',
   '3 or more' => '3 or More'
);

echo '<select name="ticket_type[]">';
foreach($options as $key => $val) {
   $select = (($key == $days) ? ' selected="selected"' : '');
   echo "<option value=\"", htmlspecialchars($key), "\"$select>", htmlspecialchars($val), "</option>";
}
echo '</select>';

Таким образом, у вас есть только ОДНО место, где указаны опции выбора, поэтому, если вам нужно добавить больше в будущем, вы измените только это место. Прямо сейчас вам придется изменить каждый раздел вашего блока if (), который станет утомительным и подверженным ошибкам.

1 голос
/ 06 октября 2011

о, боже ... почему вы все усложняете?

<select name="ticket_type[]">
   <option value="">Select one...</option>
   <option <? echo ($ticket_type == 'Child (5 &amp; Under) ? 'selected="selected" : ''; ?>'>Child (5 &amp; Under)</option>
   <option <? echo ($ticket_type == 'Child (6 - 12) ? 'selected="selected" : ''; ?>>Child (6 - 12)</option>
   <option <? echo ($ticket_type == 'Child (13 - 17) ? 'selected="selected" : ''; ?>>Teen (13 - 17)</option>
</select>";

но вам действительно стоит подумать об использовании идентификаторов, чтобы вам не приходилось сравнивать строки.

0 голосов
/ 06 октября 2011

Да, это немного грязно. Вы должны прочитать о Альтернативный синтаксис PHP .

<?php if ($condition): ?>
This is a test..
<?php endif; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...