2013-06-17 2 views
-1

Следующий запрос mysqli всегда будет вытаскивать один результат. Однако, посмотрев на мой код, я чувствую, что должен быть лучший способ упростить раздел html выпадающего списка. Как вы можете видеть, у меня есть куча операторов if и массива. Я сделал это так, чтобы установить selected в html в качестве текущего раскрывающегося списка. Может ли кто-нибудь помочь мне сделать это проще?Попытка упростить мои операторы if

$query = mysqli_query($mysqli, "SELECT * From referrals WHERE id = '".$edit."';"); 

    while($row = mysqli_fetch_array($query)) 

    { 
     $editstatus = $row['status']; 
    } 

      if($editstatus == "N") 
       { 
       $estatus = "N/A"; 
       } 

      if($editstatus == "I") 
       { 
       $estatus = "Installation Comp"; 
       } 

      if($editstatus == "SI") 
       { 
       $estatus = "Site Inspection"; 
       } 

      if($editstatus == "S") 
       { 
       $estatus = "Sold"; 
       } 

      if($editstatus == "C") 
       { 
       $estatus = "Cancelled"; 
       } 

      if($editstatus == "P") 
       { 
       $estatus = "Press/Follow-Up"; 
       } 

      if($editstatus == "W") 
       { 
       $estatus = "Being Installed"; 
       } 

        $bstatus[] = "N/A"; 
        $bstatus[] = "Installation Comp"; 
        $bstatus[] = "Site Inspection"; 
        $bstatus[] = "Sold"; 
        $bstatus[] = "Cancelled"; 
        $bstatus[] = "Press/Follow-Up"; 
        $bstatus[] = "Being Installed"; 
?> 

    <div class="status"><label for="edit_status">Edit Status</label> 
    <select id="edit_status" name="edit_status"> 

<?php 

           foreach($bstatus as $cstatus) { 

             if($cstatus == "N/A") 
              { 
              $dstatus = "N"; 
              } 

             if($cstatus == "Installation Comp") 
              { 
              $dstatus = "I"; 
              } 

             if($cstatus == "SI") 
              { 
              $dstatus = "Site Inspection"; 
              } 

             if($cstatus == "Sold") 
              { 
              $dstatus = "S"; 
              } 

             if($cstatus == "Cancelled") 
              { 
              $dstatus = "C"; 
              } 

             if($cstatus == "Press/Follow-Up") 
              { 
              $dstatus = "P"; 
              } 

             if($cstatus == "Being Installed") 
              { 
              $dstatus = "W"; 
              } 

?> 

    <option <?php if($cstatus == $estatus) { echo "selected=\"selected\""; } ?> value="<?php echo $dstatus; ?>"><?php echo $cstatus ?></option> 

<?php 
                  } 
?> 

    </select>  
    </div> 

Как я уже говорил, посмотрев на этот код, я знаю, что должен быть лучший способ сделать это, я просто не знаю, как. Любая помощь будет принята с благодарностью.

+1

Рассмотрим Переключателем случай –

+0

Вы можете использовать оператор коммутатора или ассоциативный массив – Musa

+0

Этот тип вопроса лучше подходит для [codereview.stackexchange.com] (http://codereview.stackexchange.com) –

ответ

0

отличный кандидат для switch

$editstatus = $row['status']; 
switch ($editstatus) 
{ 
    case 'N': 
     $estatus = 'N/A'; 
     break; 
    case 'I': 
     $estatus = 'Installation Comp'; 
     break; 
    // Fill in the rest here ... 
    default: 
     // None of my case statements were matched 
     break; 
} 
0

Используйте один из указанных ниже способов

Метода 1

switch ($editstatus) { 
    case "N": 
     $dstatus = "N"; 
     break; 
    case "I": 
     $estatus = "Installation Comp" 
     break; 
//rest of your code goes here 
} 

http://php.net/manual/en/control-structures.switch.php

Метод 2

Ассоциативный массив будет вполне подходящим слишком

$array = array(
    "N" => "N", 
    "I" => "Installation Comp", 
    .. 
    .. 
); 

http://php.net/manual/en/language.types.array.php

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