2012-02-10 31 views
2

我有一個10個數字的HTML選項列表。我希望根據從數據庫中檢索的值預先選擇其中一個選項。如果檢索值爲0或FALSE,則應選擇value =「0」,如果檢索值爲1,則應選擇value =「1」等。PHP if語句裏面創建HTML選項列表

我已看過:if block inside echo statement?但是,我避難使用它的信息無法解決我的問題。

我可以這樣做嗎?我在第一個if語句調用中得到一個分析錯誤,我的語法肯定是錯誤的。

驗證碼:

$uv = FALSE; 

     while ($r2_rows = mysqli_fetch_array($r2, MYSQLI_ASSOC)) { 
      if (array_key_exists($r1_rows['article_id'], $r2_rows)) { 
       $uv = $r2_rows['user_vote']; // Get user_vote value. 
       $selected = 'selected="selected"'; 
       echo' 
        <td align="left"> 
         <select class="articlevote" name="article_vote"> 
          <option id="vote0" value="0"'.if($uv == 0 || $uv == FALSE) $selected.'>No Vote</option> 
          <option id="vote1" value="1"'.if($uv == 1) $selected.'>1</option> 
          <option id="vote2" value="2"'.if($uv == 2) $selected.'>2</option> 
          <option id="vote3" value="3"'.if($uv == 3) $selected.'>3</option> 
          <option id="vote4" value="4">4</option> 
          <option id="vote5" value="5">5</option> 
          <option id="vote6" value="6">6</option> 
          <option id="vote7" value="7">7</option> 
          <option id="vote8" value="8">8</option> 
          <option id="vote9" value="9">9</option> 
          <option id="vote10" value="10">10</option>   
         </select> 
        </td>'; 
      } // End of IF - article_id has a user vote. 

     } // End of WHILE - checking current article_id against every user_id vote. 

回答

1

你可以破解過程分爲兩個部分:

$uv = FALSE;  

while ($r2_rows = mysqli_fetch_array($r2, MYSQLI_ASSOC)) { 
    if (array_key_exists($r1_rows['article_id'], $r2_rows)) { 
     echo buildVotes($r2_rows['user_vote'], $uv); 
    } 
} 

建立你的selectmenu這裏:

function buildVotes($selectedIndex, $uv){ 
    $noOfVotes = 10; 
    $selectMenu = '<td align="left"><select class="articlevote" name="article_vote">'; 
    $options = ""; 
    for($i = 0; $i<$noOfVotes; $i++){ 
     if($uv == true){ 
      $selected = ($selectedIndex == $i) ? 'selected="selected"' : ""; 
     } 
     if($i == 0){ 
      if($uv == false){ 
       $selected = 'selected="selected"'; 
      } 
      $options .= '<option id="vote'.$i.'" value="'.$i.'" '.$selected.' >No Vote</option>'; 
     }else{ 
      $options .= '<option id="vote'.$i.'" value="'.$i.'" '.$selected.' >'.$i.'</option>'; 
     } 
    } 
    $selectMenu .= $options."</select></td>"; 
    return $selectMenu; 
} 

看樣http://codepad.org/1O0PpQ7R

+1

乾杯,這是非常有用的,更多的將它分解成一個功能更整潔! – leokennedy 2012-02-11 12:40:15

4

使用三元運算?:

echo "Blah".($somecondition == true ? "something" : "another thing")."more blah"; 
+0

謝謝,我會檢查出來。 – leokennedy 2012-02-11 12:39:50