2013-01-13 44 views
0

可能重複:
Nested array. Third level is disappearing顯示Moodle的數據庫的數據使用PHP UL李

我還挺這裏有一個問題,使用PHP顯示Moodle的數據庫的數據作爲UL李形式。 我想顯示所有類別的課程,而不是課程,以正確的嵌套形式顯示爲ul li。 我正在處理的表格是mdl_course_categories。 每當PHP腳本運行,那麼該列表必須動態地更新 的代碼如下所示:

<?php 
$con = mysql_connect("localhost","root",""); 
if (!$con) { 
die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("moodle19", $con); 
$result = mysql_query("SELECT name AS COURSE_NAME,parent FROM mdl_course_categories"); 

if (isset($result)!=1) { 
$message = 'Invalid query: ' . mysql_error() . "\n"; 
} 
echo "<p> The courses taught are: </p>"; 

while ($row = mysql_fetch_array($result)) { 
$b=$row['COURSE_NAME']; 
$c=$row['parent']; 

//  $a=mysql_query("Select id from mdl_course_categories"); 
//  $condition=mysql_query("SELECT name AS COURSE_NAME FROM mdl_course_categories WHERE parent='0'"); 

    if ($c==0) { 
    echo "<ul> 
    <li>" .$b. "</li> 
    </ul>"; 
    } 

    else { 
     echo "<ul> 
      <li>" .$b. "</li> 
      </ul>"; 
    $result1 = mysql_query("SELECT name AS COURSE_NAME FROM mdl_course_categories WHERE depth!='1'"); 
    while ($row1 = mysql_fetch_array($result1)) { 

     $b1=$row1['COURSE_NAME']; 
     echo "<ul> 
      <li>" .$b1. "</li> 
      </ul>"; 
     } 
    } 
} 
?> 

我有困惑明白是怎麼回事了?

回答

0

我覺得你這會有所幫助 -

$query_catetories = mysql_query('SELECT cc.id, cc.parent, cc.name FROM mdl_course_categories cc '); 
$categories = mysql_fetch_all($query_catetories); 

$tmp_categories = array(); 

foreach ($categories AS $row) { 

    $row['id'] = (int) $row['id']; 
    $row['parent'] = (int) $row['parent']; 
    if (!$tmp_categories[$row['parent']]) 
     $tmp_categories[$row['parent']] = array(); 
    $tmp_categories[$row['parent']][] = $row; 
} 

$course_catetories = buildNode($tmp_categories); 

echo '<ul>'; 
foreach ($course_catetories as $course_catetory) { 
    print_category_child($course_catetory); 
} 
echo '</ul>'; 

function print_category_child($category) { 
    echo '<li>' . $category['name']; 
    if (array_key_exists('children', $category)) { 
     echo '<ul>'; 
     foreach ($category['children'] as $child) { 
      print_category_child($child); 
     } 
     echo '</ul>'; 
    } 
    echo '</li>'; 
} 

function buildNode($inputArray, $parent = 0) { 
    $return = array(); 
    foreach ($inputArray[$parent] AS $key => $row) { 
     if (@$inputArray[$row['id']]) { 
      $row['children'] = buildNode($inputArray, $row['id']); 
     } 
     $return[] = $row; 
    } 
    return $return; 
} 

function mysql_fetch_all($result) { 
    $all = array(); 
    while ($all[] = mysql_fetch_assoc($result)) { 

    } 
    return array_filter($all); 
} 

感謝