正在尝试制作动态选项表单


Trying to make dynamic option form

好吧,我试了好几天,但我做不到,所以我试着一步一步地做,首先我需要从数据库中正确获取信息,并以表格的形式显示它,这里是数据库

CategoryID  |  CategoryName  |    ParentID
----------------------------------------
1           | FirstMenuCat1  |      0
2           | FirstMenuCat2  |      0
3           | SubMenuCat1    |      1
4           | SubMenuCat2    |      1
5           | SubMenuCat3    |      2

这是我最后一次尝试,所以我知道我从数据库中得到了正确的数据,但我不知道如何将其作为一种形式:

<?php
require_once ('mysqli_connect.php');
$q = "SELECT CategoryName FROM menus where ParentID = '0' ORDER by CategoryID";
$r = @mysqli_query ($dbc, $q) or die("Error: ".mysqli_error($dbc));
/* associative array */
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)){
printf ("%s'n", $row["CategoryName"]);

}
 ?>

这是我的尝试,但不起作用

/* associative array */
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)){
foreach($row){
                echo "<option value='"". urlencode( $_ ) ."'" $selected >$_</option>'n";
                $selected = ""; // only the first element will be marked as selected
}
}
 ?>

有什么想法吗?

通过查看选项标记,我认为您正在尝试创建一个组合框列表。如果是,则首先不要使用''n。组合框列表中的选项已逐行显示。

其次,您尚未打印选择标记。如果没有它,列表将无法正确呈现。尝试以下代码:

echo "<select name='mylist'>";
$selected = "selected";
while (($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) !== FALSE){
   echo "<option value='". $row['key']."' $selected >".$row['value']."</option>";
   $selected = ""; // only the first element will be marked as selected
}
echo "</select>";

希望它能有所帮助。

检查此

echo '<select name="" id="">';
/* associative array */
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)){
// Check the $_ correctly
foreach($row){
        echo "<option value='". urlencode( $_ ) ."'>$_</option>'n";
}
}
echo '</select>';

注*:默认情况下,将为dd.

选择第一个元素

不确定,但我认为这正是您需要的

$optionString = '';
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC))
{
   $value         = urlencode($row['CategoryName']);
   $optionString .= "<option value='{$value}'>{$row['CategoryName']}</option>";

 }
 echo "<select>$optionString</select>";
$selected = 'selected';
$htmlSelect = '<select name="elementName" id="elementId">';
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)){
    $htmlSelect .= '<option value="' . urlencode( $_ ) . '" ' . $selected . ' >' . $_ . '</option>';
    $selected = ""; // only the first element will be marked as selected
}
$htmlSelect .= '</select>';
echo $htmlSelect;

注意1:在元素属性上最好使用双引号",而不是单引号'。有些浏览器不喜欢单引号。

注意2:无法理解为什么在while语句中再次使用foreach

注意3:如果您不记得选择了哪个选项,则无需指定选择了哪个元素,默认情况下将选择第一个元素。