PHP if операторы внутри echo для создания списка опций HTML - PullRequest
2 голосов
/ 10 февраля 2012

У меня есть список опций HTML из 10 цифр.Я хочу, чтобы один из этих параметров был предварительно выбран на основе значения, полученного из базы данных.Если полученное значение равно 0 или FALSE, следует выбрать значение = «0», если полученное значение равно 1, следует выбрать значение = «1» и т. Д.

Я посмотрел: Однако если блокировать внутри оператора echo? , я не смог исправить свою проблему, используя ее информацию.

Могу ли я вообще так поступить?Я получаю ошибку разбора при первом вызове оператора 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.

Ответы [ 2 ]

4 голосов
/ 10 февраля 2012

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

echo "Blah".($somecondition == true ? "something" : "another thing")."more blah";
1 голос
/ 10 февраля 2012

Вы можете разбить процесс на две части:

$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);
    }
}

Создайте свой выбор здесь:

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

...