混淆在回声中的echo mysql结果

时间:2017-05-16 09:42:33

标签: php mysql echo

登录并重定向到下一页后,我会使用$_SESSION检查用户。 然后,如果用户名有效,我想显示列表从数据库中获取的下拉列表。我很困惑如何echo

    <?php
    session_start(); //Start the session
    if(!isset($_SESSION['pic']))
    {
       header('Location:index.php?p=signin');
    }
    else {
       echo '<div class="form-group">
             <label for="symcat" class="control-label">Symptom Category</label>
             <select id="symcat" name="symcat" class="selectlist form-control">
             <option value=""></option>
             $sql='SELECT category FROM sym_category';
             if ($sql) {
                $res=mysqli_query($dbc,$sql) or die(_ERROR26.': '.mysqli_connect_error());
             }
             while ($dat = mysqli_fetch_array($res, MYSQLI_NUM)) {
                echo '\t<option value="'.$dat[0].'">'.$dat[0].'</option>\n';
             }
             mysqli_free_result($res);
             </select>
             </div> <!-- /form-group -->';
}
?>

3 个答案:

答案 0 :(得分:1)

这可能会更好:

<?php
    session_start(); //Start the session
    if(!isset($_SESSION['pic']))
    {
       header('Location:index.php?p=signin');
    }
    else {
        $sql = 'SELECT category FROM sym_category';
        if ($sql) {
            $res = mysqli_query($dbc,$sql) or die(_ERROR26.': '.mysqli_connect_error());
        }
        ?>
        <div class="form-group">
            <label for="symcat" class="control-label">Symptom Category</label>
            <select id="symcat" name="symcat" class="selectlist form-control">
                <option value=""></option>
                <?php if (isset($res)): ?>
                    <?php while ($dat = mysqli_fetch_array($res, MYSQLI_NUM)): ?>
                        <option value="<?php echo $dat[0] ?>"><?php echo $dat[0] ?></option>
                    <?php endwhile ?>
                    <?php mysqli_free_result($res); ?>
                <?php endif ?>
            </select>
        </div> <!-- /form-group -->
<?php } ?>

老实说,我仍然不认为这是一个非常好的方式。如果可能,请使用视图文件。 我认为你不应该在另一个回声中使用回声是合理的。 Echo用于在屏幕上打印某些内容,因此无需在同一回音中使用回音。

答案 1 :(得分:0)

查看此示例代码。也许它会帮助你。

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

// Fetch the option list details from DB
$optionList = array();
$sql = "SELECT category FROM sym_category";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {         
        $optionList[] = $row['category']
    }
} else {
    echo "0 results";
}

// Create the dropdown list
echo "<div class='form-group'>";
    echo '<label for="symcat" class="control-label">Symptom Category</label>';
        echo '<select id="symcat" name="symcat" class="selectlist form-control">';
            echo '<option value=""></option>';
            foreach ($optionList as $key => $value)
            {
                echo "<option value='$value'>$value</option>";
            }
        echo '</select>';
    echo '</label>';
echo "</div>"

答案 2 :(得分:0)

作为Akintunde&amp; SheperOfFire说好的和整洁的方式是:

<?php
session_start(); //Start the session
if(!isset($_SESSION['pic']))
{
   header('Location:index.php?p=signin');
}
else {
   header('Location:index.php?p=forminputcar');
   }
?>

因为forminputcar内部还有php tagecho。或者您也可以将上面的脚本放在forminputcar页面的顶部。所以,如果会话匹配,我们会留在当前页面。

<?php
session_start();

if(isset($_SESSION['pic']))
{
   header('charset=UTF-8');
}
else {
   header('Location:index.php?p=signin');
   }
?>