вложенные таблицы

Тема в разделе "PHP программирование", создана пользователем CasperKZ, 7 апр 2011.

  1. CasperKZ

    CasperKZ Гость

    Всем привет!
    Ситуация такая, может кто сможет помочь

    Есть php скрипт который вытаскивает значение из базы данных и делает из него список сворачивающийся. почти то что мне нужно. Но уже неделю бьюсь, не могу сделать так чтобы у каждого нового вложения был свой заголовок... Чтобы понятней было, вот картинка, что в итоге примерно должно получиться, только вложенность не ограниченная.

    http://s56.radikal.ru/i151/1104/77/9143f9733291.png
    Код (PHP):
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <script language="javascript">
    <!--
    var t,lit,i;
    function tree(liter) {
    lit=liter;//
    i=1;//
    t = setInterval(show, 2); ///  
    //t = show();
    }
    function show() {
    var el;
    if(el = document.getElementById(lit + "." + i)) {
    el.style.display = (el.style.display == 'block')?'none':'block';
    i++;
    }
    else clearInterval(t);
    }
    -->
    </script>
    </head>
    <body>
    <?php
    $host = "localhost";
    $namedb = "vmode_ps";
    $user_login = "vmode_ps";
    $user_password = "1q2w3e4r5t";

    $db = mysql_connect($host, $user_login, $user_password) or die(mysql_error());
    mysql_select_db($namedb, $db) or die(mysql_error());
    @mysql_query ("SET NAMES `cp1251`");

    $sql_pid = "SELECT DISTINCT pid FROM tb_servers";
    $result_sql_pid = mysql_query($sql_pid, $db);
    $pid_arr = array();
    while ($row_result_sql_pid = mysql_fetch_array($result_sql_pid))
    {
    $pid_arr[] = $row_result_sql_pid['pid'];
    }


    function ShowTree($ParentID, $lvl) {

    global $name_res;
    global $ip_res;
    global $db;
    global $lvl;
    global $pid_arr;
    $lvl++;

    $sSQL="SELECT id,name,pid,ip FROM tb_servers WHERE pid=".$ParentID."";
    $result=mysql_query($sSQL, $db);

    if (mysql_num_rows($result) > 0) {

    echo("<ul>\n");
    while ( $row = mysql_fetch_array($result) ) {  
    $ID1 = $row["id"];
    $i++;
    if (in_array($ID1, $pid_arr)){
    $pref = "-PARENT";
    $style1 = "onclick=\"tree('".$ID1."')\"";
    }
    if (!in_array($ID1, $pid_arr) || $lvl >= 2){
    $style2 = "id='".$row['pid'].".".$i."' style='display: none';";
    }
    echo("<li ".$style2.">\n");  
    echo("<a ".$style1." title='".$row["name"]."'>".$row["name"]./*$pref."-LVL-".$lvl.*/"</a>"." \n");

    ShowTree($ID1, $lvl);
    $lvl--;
    }
    echo("</ul>\n");

    }
    }

    ShowTree(0, 0);
    ?>
    </body>
    </html>
    Нужно 1. у каждого уровня вложенности свой заголовок вывести
    Нужно 2. вложенные элементы сделать таблицами, чтобы красивей было
    Может кто помочь? а то не могу уже думать над ним(
     
  2. typak

    typak Гость

    Вначале бд спроектируй шоб внешний ключь был, а дальше добавляй в бд
    так шоб каждому уровню соответствовал внешний ключ уровня,
    а каждому подуровню первичный ключь уровня,
    Кароче када вставляеш данные ключи подставляеш в запросы соответственно: уровень - ключь уровня подуровень - пк уровня
    подподуровень - пк подуровня ..... итд.


    а затем вытаскивай из бд вначале уровени по вк уровней(вместе с ним и заголовки и всё шо хочеш),
    а потом подуровни по внешнему ключу подуровня тоесть первичному ключю соответствующего уровня(полностью строку)
    Вообщем формируеш ссылку типа уровень ? пк уровня ; подуровень пк подуровня итд апять-же в запрос подставляеш вместо внешнего ключа подуровня пк уровня......итд

    Вообщем в двух строчках сам принцип такой какой знаю.
    Мож есть и по другому строят незнаю.?!
     
Загрузка...

Поделиться этой страницей