通过查询从数据库中检索值并在下拉列表中显示+ if / elseif

时间:2018-02-08 11:47:41

标签: php html sql

我的网站包含一个向数据库添加数据的页面。现在,我正在处理该数据的输出,并在必要时对其进行编辑。

在我的添加页面上,我有一个包含多个选项的下拉列表。如果选中,则该值将转到数据库。现在我想扭转它。从数据库中选择值,并在下拉列表中显示该值,其值与添加页面上的值相同。但是,数据库中的值需要默认选择。

在我的代码中,我只尝试使用2个值,但如果此代码有效,则应该很容易添加更多值。

<?php
    $A = "A";
    $B = "B";
    $query  = mysqli_query($conn, "SELECT * FROM table WHERE id='$id'");

    while ($record = mysqli_fetch_assoc($query))
    {

        echo "<table>";
            echo "<tr>";
                echo '<td><b>Type: </b>

                            <select name="type">
                                if ($record['type'] == "A"){                    
                                    echo "<option selected value ="' . $A . '">A</option>";
                                    echo "<option value="' . $B . '">B</option>";
                                } elseif ($record['type'] == "B"){
                                    echo "<option selected  value="' . $B . '">B</option>";
                                    echo "<option value="' . $A . '">A</option>";
                                }
                            </select>

                      </td>';
            echo "</tr>";
        echo "</table>";
    }
?>

我想我在某处遗漏了一些“”或“引号”。

2 个答案:

答案 0 :(得分:0)

你的if是在一个字符串里面,因为你没有关闭回声,因此它们被处理为字符串而不是实际代码。

<?php
    $A = "A";
    $B = "B";
    $query  = mysqli_query($conn, "SELECT * FROM table WHERE id='$id'");

    while ($record = mysqli_fetch_assoc($query))
    {

        echo "<table>";
            echo "<tr>";
                echo '<td><b>Type: </b>

                            <select name="type">';
                            // You were missing closing '; on the line above

                                if ($record['type'] == "A"){                    
                                    echo "<option selected value ="' . $A . '">A</option>";
                                    echo "<option value="' . $B . '">B</option>";
                                } elseif ($record['type'] == "B"){
                                    echo "<option selected  value="' . $B . '">B</option>";
                                    echo "<option value="' . $A . '">A</option>";
                                }

       // Dont forget to then open the echo again              
       echo '              </select>

                      </td>';
            echo "</tr>";
        echo "</table>";
    }
?>

答案 1 :(得分:0)

您已使用一个echo不要使用多个回显来显示一个字符串。

echo '<td><b>Type: </b>
                            <select name="type">'.
                                if ($record["type"] == "A"){.'                    
                                    <option selected value ="' . $A . '">A</option>
                                    <option value="' . $B . '">B</option>
                                .'} elseif ($record['type'] == "B"){.'
                                    <option selected  value="' . $B . '">B</option>
                                    <option value="' . $A . '">A</option>.'
                                }.'
                            </select>
                      </td>';

其他方式是使用Concatenate和变量:

$A = "A";
    $B = "B";
    $query  = mysqli_query($conn, "SELECT * FROM table WHERE id='$id'");
    $tbl = '';

    while ($record = mysqli_fetch_assoc($query))
    {
        echo "<table>";
            echo "<tr>";        
              $tbl .= '<td><b>Type: </b>
                            <select name="type">';
                    if ($record["type"] == "A"){
                        $tbl .= '<option selected value ="' . $A . '">A</option>
                                <option value="' . $B . '">B</option>';
                    } elseif ($record['type'] == "B"){
                        $tbl .= '<option selected  value="' . $B . '">B</option>
                                <option value="' . $A . '">A</option>';
                    }
                    $tbl .= '</select>
                        </td>';
              echo $tbl;
            echo "</tr>";
        echo "</table>";
    }