好吧,我试了好几天,但我做不到,所以我试着一步一步地做,首先我需要从数据库中正确获取信息,并以表格的形式显示它,这里是数据库
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:如果您不记得选择了哪个选项,则无需指定选择了哪个元素,默认情况下将选择第一个元素。