选择字段,预设值

时间:2017-08-20 17:52:24

标签: php html sql arrays mysqli

作为我项目的一部分,我有一个列出所有类别的页面。他们每个人都有一个指向单一类别页面的链接,以便对其进行修改。

在类别页面中,我将“类别名称”字段设置为选择字段,列出默认情况下在所选类别上预设的所有类别。 这个例子应该澄清我的问题。

                      Category A
                      Category B
Selected Category --->Category C<--------Preset category opening the page
                      Category D
                      Category E

我实现了以下代码,预设类别有效。我发现的困难在于其他类别列表。 使用以下方法将类别ID传递到单个类别页面:

<a href="categorie_scheda.php?cat_id='.$rows['0'].'">Link</a>

---类别页面---

<?php
    $cat_id = $_GET['cat_id'];  //cat ID captured here 
    include '../sys/conn.php';
    $category = mysqli_query ($conn, "(mysqli_query)") or die ("Query non valida: " . mysqli_error($conn));

    $array = mysqli_fetch_array($category, MYSQL_NUM);
    mysqli_close($conn);
?>

--- ---- HTML

<label>Categorie</label>
<select class="form-control" name='category_list'>
    <option selected value=$cat_id><?php echo $array[1]; ?></option>

<?php 
    while ($listcat=mysqli_fetch_array($category)){
        echo '<option value="'.$listcat['0'].'"> '.$listcat['0'].' - '.$listcat['1'].'</option>';
}
?>
</select>

希望有人可以帮忙解决问题。

1 个答案:

答案 0 :(得分:0)

尝试在类别页面中使用此功能:

<?php
    $cat_id = intval($_GET['cat_id']);  //cat ID captured here. converting to int to avoid xss 
    include '../sys/conn.php';
    $category = mysqli_query ($conn, "(mysqli_query)") or die ("Query non valida: " . mysqli_error($conn));

    // replace $array = mysqli_fetch_array($category, MYSQL_NUM);
    $array = mysqli_fetch_all($category, MYSQL_NUM);
    mysqli_close($conn);
?>

您的HTML现在应该是这样的:

<label>Categorie</label>
<select class="form-control" name='category_list'>

<?php 
    for($i = 0; $i < count($array); $i++) {
        $listcat = $array[$i];
        echo '<option ' . ($listcat[0] == $cat_id ? 'selected ' : '') 
             . 'value="'.$listcat['0'].'"> ' 
             . $listcat['0'].' - '.$listcat['1'].'</option>';
    }
?>
</select>

如您的评论中所述,您在关闭连接时未先保存结果。要么就像我上面写的那样(如果出现一些小错误修正),或者只是在一切完成后关闭你的连接。