问题编号1 - 状态=已解决
使用过的表格为:
CREATE TABLE Rubriek(
rubrieknaam char(50) not null, /* char(24) */
rubrieknummer numeric(38) not null, /* numeric(3) */
rubriek numeric(38) null, /* numeric(3) */
volgnr numeric(38) not null, /* nuemric(2) */
constraint pk_rubrieknummer primary key(rubrieknummer),
constraint fk_rubriek foreign key(rubriek) references Rubriek (rubrieknummer)
)
我一直在尝试在PHP中创建一个垂直菜单,该菜单将填充所提供的表格,但我遇到了一些困难。我尝试了一些代码,但我不能让它为我工作:(。菜单包括类别(rubrieken)和子类别。
对表格进行更多说明:
rubrieknaam - >类别名称
rubrieknummer - >类别的id
rubriek - >告诉我们一个类别是否属于子类别,如果不是,那么该值将为null
当我收到一些'通知:未定义的索引'错误时。更具体地说,有以下几行:
if($parent != $menu['rubriek']){//if not seen item before
echo "<li>".$menu['rubrieknummer']."</li>";//echo item
if($parent != $menu['rubriek']){//if not seen before not then the value will be null:
我尝试了以下但是无济于事。
//connection to SQL Database
$connectionInfo = array( "UID"=>$uid,"PWD"=>$pwd,"Database"=>$databaseName);
//Connecting with SQL Authentication
$conn = sqlsrv_connect( $serverName, $connectionInfo);
$query = sqlsrv_query($conn, "SELECT * FROM Rubriek");
$parent=0;
$sub=0;
echo "<ul>";//start list
while($menu = sqlsrv_fetch_array($query)){
if($parent != $menu['rubriek']){//if not seen item before
if($sub != 0){echo "</ul>";}else{$sub++;}//if not first submenu, close submenu before. If first sub sub++.
echo "<ul>";}//open submenu
echo "<li>".$menu['rubrieknaam']."</li>";//echo item
if($parent != $menu['rubriek']){//if not seen before
$parent = $menu['rubriek']; //set to seen before so next loop will be recognised
}
}
echo "</ul>"; //end list
?>
问题编号2
我已经实施了提到的修复皇家BG,它的工作原理!但现在有一个不同的问题。我还想实现子类别,我为几个类别创建了子类别。
例如,我制作了下一个测试数据:
Rubrieknaam | rubrieknummer | rubriek
(= Name of Category) | (=Category ID)| (=Category is a subcategory of the following category):
----------------------------------------------------------------------------------
Cars | 1 | Null
Audio | 2 | Null
Ford | 3 | 1 (subcategory of Cars)
Toyota | 4 | 1 (subcategory of Cars)
Speakers | 5 | 2 (subcategory of Audio)
Microphones | 6 | 2 (subcategory of Audio)
Instruments | 7 | Null
Guitar | 8 | 7 (subcategory of Instruments)
记录按此顺序列在数据库中。前两个类别列为一个类别。其余的都列为'音频'的子类别,即使'乐器'应该是一个新的类别而不是子类别。
答案 0 :(得分:1)
$query = sqlsrv_query($conn, "SELECT rubrieknaam FROM Rubriek");
...
while($menu = sqlsrv_fetch_array($query)){
if($parent != $menu['rubriek']){//if not seen item before
您只选择了一列 - &gt; rubrieknaam
,您正在请求名为rubriek
和rubrieknumer
的列。您还需要选择它们,以便在获取时使用它们。