Помогите с алгоритмом

Discussion in 'PHP' started by -=Zhenek=-, 18 May 2012.

  1. -=Zhenek=-

    -=Zhenek=- Elder - Старейшина

    Joined:
    31 Dec 2007
    Messages:
    271
    Likes Received:
    76
    Reputations:
    1
    Есть таблица, это диаграмма ганта.

    И есть БД в ней 3 столбца. Дата начала, дата конца и ФИО

    Выборку делаю из базы норм.. такой ф-й

    PHP:
    function xx($x1,$x2){
     
      
    //$res = mysql_query("SELECT * FROM graph WHERE (($x2 BETWEEN `time_start` AND `time_end`) OR ($x1 BETWEEN `time_start` AND `time_end`))");
      
    $res mysql_query("SELECT * FROM graph WHERE (($x1 >= `time_start` AND  $x2 >= `time_start`) AND ($x1 < `time_end` AND $x2 <`time_end`))");
      if(
    mysql_num_rows($res)>0){
        
    $d mysql_fetch_array($res);
        return 
    $d['client'];
      }
    }
    На вход даю х1 начала отрезка времени х2 конец

    на выходе получаю или пусто или ИД клиента

    А вот этой функцией уже заливаю ячейку нужным градинтом

    PHP:
     function get_img($tt){
     
    //return date('H:i:s',$tt-1740).' '.date('H:i:s',$tt).'<br>';
            
    switch (date('w',$tt)) {
            case 
    '1':
            
    $img1 '1/graph-gradient_01.png'$img2 '1/graph-gradient_02.png'$img3 '1/graph-gradient_03.png';
            break;
            case 
    '2':
            
    $img1 '2/graph-gradient_01_01.png'$img2 '2/graph-gradient_01_02.png'$img3 '2/graph-gradient_01_03.png';
            break;
            case 
    '3':
            
    $img1 '3/graph-gradient_01.png'$img2 '3/graph-gradient_02.png'$img3 '3/graph-gradient_03.png';
            break;
            case 
    '4':
            
    $img1 '4/graph-gradient_01.png'$img2 '4/graph-gradient_02.png'$img3 '4/graph-gradient_03.png';
            break;    
            case 
    '5':
            
    $img1 '5/graph-gradient_01.png'$img2 '5/graph-gradient_02.png'$img3 '5/graph-gradient_03.png';
            break;    
            case 
    '6':
            
    $img1 '6/graph-gradient_01.png'$img2 '6/graph-gradient_02.png'$img3 '6/graph-gradient_03.png';
            break;
            case 
    '0':
            
    $img1 '7/graph-gradient_01.png'$img2 '7/graph-gradient_02.png'$img3 '7/graph-gradient_03.png';
            break;        
            } 
            
    $t1 xx($tt-1750,$tt); // предыдущая
            
    $t2 xx($tt-10,$tt);  // текущая
            
    $t3 xx($tt,$tt+1810); // следующая
            
     
    if($t1!='') {  
     if(
    $t2 != '' AND $t3 !='') {return $img2.'|'.$t3;}
     if(
    $t2 != '' AND $t3 == '') {return $img3.'|'.$t3;}
     
     }else{
     return 
    $img1.'|'.$t2;
     }
     
     }
    Как видно там 7 градиентов для 7 дней недели.
    И в каждом 3 разных. Начало градиента, середина и конец.

    Сейчас алгоритм вроде как должен смотреть, если перед нами свободная ячейка, то ставим начало градиента, если занята, то проверяем, свободна ли ячейка за ним. Если свободна ставим конец, если занята, середина и так просчитываем для каждой ячейки.

    Но вот один градиент он мне норм выводит, а во втором или лишнюю клетку займет и конец не поставит. и т.д

    Уже головка не варит чето( Весь листик изрисовал схемками
     
Loading...