Grid и SubGrid

Тема в разделе "PHP", создана пользователем pronax, 27 мар 2011.

Модераторы: latteo
  1. pronax

    pronax Постоялец

    Регистр.:
    21 сен 2008
    Сообщения:
    146
    Симпатии:
    10
    Есть задача, сделать таблицу не ограниченной вложенности
    сделал почти, но она немного не так отображается как надо.
    Надо чтобы вид был примерно такой:
    http://mikhailstadnik.com/wp-content/uploads/2009/12/nested-grids-screen.png
    У меня не получается привести к такому виду...
    Может кто решение подскажет?
    Читал на форумах - не помогло
    Есть такие js плагины, но чтобы сделать вложенность, они платные

    вот мой код:
    PHP:
    <?php
    mysql_connect
    ('localhost','grid','grid');     //коннект к базе
    mysql_select_db('grid');                //выбираем базу
    $dbpf 'tb'// префикс таблиц 


    //начало функции
    function show_cat($pid=0,$old=0){
      global 
    $dbpf,$lev$out ''
      
    $lev++;
        
    $sql "SELECT * FROM ".$dbpf."_servers WHERE pid=".$pid." AND status='1' ORDER BY pos"//выбираем из базы все наши записи
        
    $qur mysql_query($sql); //
        
    $kol mysql_num_rows($qur); //
        
    if ($qur && $kol){
            while(
    $rez mysql_fetch_assoc($qur)){
                if (
    $rez['pid'] == 0){ $str_s='<b>';$str_e='</b>'$bg_c='#E8E8E8';} // если это верхний уровень
                
    else { $str_s='';$str_e=''$bg_c='#f3f3f3'; }
                
    $out .= '<tr bgcolor="'.$bg_c.'">';
                
    $out .= '<td>'.$str_s;
                
    $out .= '<table border="1">';
                
    $out .= '<tr><td>'.$i.'ID</td>';
                if (
    $rez['name'] != '') {
                if (
    $i != '6'){
                
    $out .= '<td>Name</td>';
                }
                }
                if (
    $rez['desc'] != '') {
                
    $out .= '<td>Description</td>';
                }
                if (
    $rez['ip'] != '') {
                
    $out .= '<td>IP</td>';
                }
                if (
    $rez['sms'] != '0') {
                
    $out .= '<td>SMS</td>';
                }
                if (
    $rez['login'] != '') {
                
    $out .= '<td>Login/E-mail</td>';
                }
                if (
    $rez['pass'] != '') {
                
    $out .= '<td>Password</td>';
                }
                if (
    $rez['link'] != '') {
                
    $out .= '<td>Link</td>';
                }
                
    $out .= '<tr><td>';
                for(
    $i=2;$i<=$lev;$i++) { 
                
    $out .= '--';
                }
                
                if (
    $rez['status']==0$out .= stripslashes($rez['name']);
                else 
                
    $out .= ''.$rez['id'].'</td>';
                if (
    stripslashes($rez['name']) != '' ) {
                
    $out .= '<td>'.stripslashes($rez['name']).'</td>';}
                if (
    $rez['desc'] != '' ) {
                
    $out .= '<td>'.$rez['desc'].'</td>';}
                if (
    $rez['ip'] != '' ) {
                
    $out .= '<td>'.$rez['ip'].'</td>';}
                if (
    $rez['sms'] != '0' ) {
                
    $out .= '<td>'.$rez['sms'].'</td>';}
                if (
    $rez['login'] != '' ) {
                
    $out .= '<td>'.$rez['login'].'</td>';}
                if (
    $rez['pass'] != '' ) {
                
    $out .= '<td>'.$rez['pass'].'</td>';}
                if (
    $rez['link'] != '' ) {
                
    $out .= '<td>'.$rez['link'].'</td>';}
                
    $out .= '</tr></table>';

                
    $out .= '</td>';
                
    $out .= '</tr>';
                
    $out .= show_cat($rez['id'],$rez['pid']);
                
    $lev--;
            }
        }
        return 
    $out;
    }

    ?>

    <script src="jquery-1.4.2.min.js" type="text/javascript"></script>
    <script src="jquery-ui-1.8.1.custom.min.js" type="text/javascript"></script>
    <style>
    .container{font-size:14px;line-height:19px;color:#000;background:#ffd65d;border:1px solid #878d59;width:400px;padding:5px;}
    </style>

    <?php
    echo '<table cellpadding="0" cellspacing="0" border="0" width="100%" border="0">';
    echo 
    show_cat(0,0); //вывод функции
    echo '</table>';
    ?>
    </div>
     
  2. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    посмтри верстку в том примере, и повтори у себя
    это вопрос не про PHP, а про базовые знания HTML и CSS
     
  3. pronax

    pronax Постоялец

    Регистр.:
    21 сен 2008
    Сообщения:
    146
    Симпатии:
    10
    тот пример на JS, А точнее ExtJS 3.
    Может сможешь помочь?
    у меня каждая строка выводится как отдельная таблица(и заголовок получается у каждой строки тоже), но мне надо так:
    Заголовок
    Строка 1
    --заголовок
    --под строкатрока 1
    --под строкатрока 2
    --под строкатрока 3
    --под строкатрока 4
    ------заголовок
    ------под под строкатрока 1
    ------под под строкатрока 1
    ------под под строкатрока 1
    --под строкатрока 5

    и т.п.
     
  4. pronax

    pronax Постоялец

    Регистр.:
    21 сен 2008
    Сообщения:
    146
    Симпатии:
    10
    и вот, скрипт я обновил до такого:
    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 
    'Жопа';            
                echo(
    "<a ".$style1." title='".$row["name"]."'>".$row["name"]./*$pref."-LVL-".$lvl.*/"</a>"."  \n");

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

            }
        }
        
        
    ShowTree(00);
    ?>
    </body>
    </html>
    теперь кто сможет помочь сделать у каждого уровня заголовок?