2012-02-10 36 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