Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ułożenie danych do CSV
Forum PHP.pl > Forum > PHP
pieto
Witam potrzebuje prawidłowo ułożyć dane do pliku csv
  1. <?php
  2. do {
  3.            $i++;
  4.            
  5.            //Dane    wartosci
  6.            
  7.            
  8.                     print($row_var['timeEnter']."\t");    
  9.                        
  10.                        $ii   = 0;
  11.                        $skip = false;
  12.                        $next = false;
  13.                        
  14.                        
  15.                        
  16.                         for($ii=0;$ii<$count_header;$ii++) {
  17.                         //print $row_var['Address'] .'-'.$ii. '-' .$rows_header[$ii]['adr'].'<br>';
  18.                          // echo '$ii'. $ii . "r\n";
  19.                            
  20.                            $next = false;
  21.                            $skip = false;
  22.                            
  23.                            if($row_var['Address'] == $rows_header[$ii]['adr']){//&&  row_var['timeEnter']!=$last_time
  24.                            print($row_var['Value']. "\t");
  25.                            $skip = true;
  26.                            break;  
  27.                             }
  28.                            else
  29.                            print('-'. "\t");
  30.                            }
  31.            
  32.                     print('wyjscie '."r\n");        
  33.                    
  34.                        
  35.        
  36.                
  37.                $last_time = $row_var['timeEnter'];
  38.                $last_adr  = $row_var['Address'];
  39.            //    }    
  40.            
  41.            } while ($row_var = $var->fetch());
  42. ?>


Petla do{ }while() to rekordy z bazy

w wyniku powyższego kodu otrzymuje
2009-01-27 17:09:13 0.0 wyjscie
2009-01-27 17:09:13 - 0.0 wyjscie
2009-01-27 17:09:13 - - 0.0 wyjscie
2009-01-27 17:09:13 - - - 0.0 wyjscie
2009-01-27 17:09:13 - - - - 0.0 wyjscie
2009-01-27 17:09:13 - - - - - 0.0 wyjscie
2009-01-27 17:09:13 - - - - - - 0.0 wyjscie
2009-01-27 17:09:13 - - - - - - - 1.0 wyjscie
2009-01-27 17:09:13 - - - - - - - - 0.0 wyjscie
2009-01-27 17:09:13 - - - - - - - - - 0.0 wyjscie
2009-01-27 17:09:13 - - - - - - - - - - 0.0 wyjscie
2009-01-27 17:09:13 - - - - - - - - - - - 0.0 wyjscie
2009-01-27 17:09:13 - - - - - - - - - - - - 0.0

a chciałbym wartości (0.0) mieć w jednym rekordzie (dla danego czasu) czyli trzeba odpowiednio ułożyć pętle,
tylko że nie wiem jak sad.gif
Drugi dzień kombinuje i lipa, duzy browar kto pomoże
bazyliszek83
Podaj może przykład tego co chciałbyś otrzymac...smile.gif
pieto
Chciałbym dostać coś mniej więcej takiego

Czas Wartosc1 Wartosc2 Wartosc3
2009-01-27 17:09:13 0.0 - 0.0 wyjscie
2009-01-28 17:09:13 1.0 2.0 2.0 wyjscie
2009-01-28 18:09:13 - - - wyjscie
Wave
daj więcej kodu, bo niejasne to wszystko. generalnie najprościej utwórz tablicę i w pętli dodawaj nowe wartosci dla jednego timestampa:
  1. <?php
  2. $baza[$timestamp][] = $wartosc;
  3. ?>

o to Ci chodzi tak?
pieto
No to daję całą funkcję

  1. <?php
  2. if(exclude_power('historia_action')) {    
  3.           set_time_limit(300);
  4.           $period   = $_POST['t_DLD'];
  5.              $type     = $_POST['t_DLF'];
  6.           $sort     = $_POST['t_DLO'];
  7.           $selected = $_POST['t_DLV'];
  8.        
  9.           if($sort == 'DLONO') {
  10.            $sql_order = 'order by h.timeEnter desc ';
  11.        }
  12.            else {
  13.            $sql_order = 'order by h.timeEnter asc ';
  14.        }
  15.        
  16.        if($period=='DLDALL') {
  17.            $sql_period  = '';
  18.        }
  19.        
  20.        if($period=='DLDTODAY') {
  21.            $sql_period  = 'AND strftime("%m-%d",h.timeEnter) = ''.date('m-d').''';
  22.        }
  23.        
  24.        if($period=='DLDTHISMONTH') {
  25.            $sql_period  = 'AND strftime("%m",h.timeEnter) = ''.date('m').''';
  26.        }
  27.        
  28.        if($period=='DLDYESTERDAY') {
  29.            $yesterday   = date('m-d', mktime(0, 0, 0, date("m") , date("d") - 1, date("Y")));
  30.            $sql_period  = 'AND strftime("%m-%d",h.timeEnter) = ''.$yesterday.''';
  31.            //echo $yesterday;
  32.        }
  33.        
  34.        if($period=='DLDLASTMOTH') {
  35.            $lastmonth = date('m', mktime(0, 0, 0, date("m") , date("m") - 1, date("Y")));
  36.            $sql_period  = 'AND strftime("%m",h.timeEnter) = ''.$lastmonth.''';
  37.        }
  38.        
  39.        //Nagłówki            
  40.        $var_h = $db3->query("SELECT distinct h.Address,  h.Name FROM dane h where SheduleID =0  order by h.timeEnter, h.Address ");//and DataLogging = 1
  41.        @$row_var_h = $var_h->fetch();
  42.        
  43.        if(!$row_var_h['Address']=='') {
  44.            $csv_output = "";
  45.            $csv_header = "Czas\t";
  46.        
  47.            do {
  48.                $ih++;
  49.            
  50.                $csv_header .= $row_var_h['Address'].' - '.$row_var_h['Name'];
  51.                $csv_header .= "\t";
  52.                
  53.                if($ih>1)
  54.                
  55.                $sql_addr            .= ' or ';
  56.                $sql_addr         .= 'h.Address ='. $row_var_h['Address'];
  57.                
  58.                $rows_header[] = array('adr'  => $row_var_h['Address'],
  59.                                       'name' => $row_var_h['Name']);
  60.                
  61.            } while ($row_var_h = $var_h->fetch());
  62.    
  63.    
  64.        $count_header = count($rows_header);
  65.        $csv_header .= "r\n";
  66.        //print_r($rows_header);
  67.  
  68.    
  69.    $sql = "SELECT     h.Address  ,h.Value ,     h.timeEnter  FROM dane h
  70.    WHERE $sql_addr  order by h.timeEnter, h.Address ";
  71.    //".$sql_period."
  72.  
  73.    //    echo $sql;
  74.        
  75.        $var = $db3->query($sql);
  76.        $row_var = $var->fetch();        
  77.  
  78.        
  79.        if($row_var[0]==0){
  80.        $msg->add("E","Brak danych w wybranym zakresie");
  81.        }
  82.        else {
  83.        
  84.        
  85.    get_config('model');
  86.    $file_name = str_replace(' ', '_',MODEL);
  87.    
  88.    //Content-Disposition", "attachment; filename=MyFile.xls"
  89.      if($type == 'DLFCSV') {
  90.       header("Content-type: application/vnd.ms-excel");
  91.       header("Content-disposition: csv; attachment; filename=$file_name-".  date("Y-m-d_H:i") . ".xls");
  92.       }
  93.      
  94.      elseif($type == 'DLFTXT') {
  95.        //header("Content-Type: application/txt");
  96.        //header("Content-Disposition: txt; attachment; filename=$file_name-".  date("Y-m-d_H:i") . ".txt");
  97.        //header("Content-Type: text/enriched\n");
  98.       }
  99.        //    echo '$count_header'. $count_header;
  100.      print($csv_header);
  101.            //$rows[] = array();
  102.            
  103.            $i=0;
  104.                
  105.        
  106.            $ii=0;
  107.            $i=0;
  108.            do {
  109.            $i++;
  110.            
  111.            //Dane    wartosci
  112.            
  113.            
  114.                     print($row_var['timeEnter']."\t");    
  115.                        
  116.                        $ii   = 0;
  117.                        $skip = false;
  118.                        $next = false;
  119.                        
  120.                        
  121.                        
  122.                         for($ii=0;$ii<$count_header;$ii++) {
  123.                         //print $row_var['Address'] .'-'.$ii. '-' .$rows_header[$ii]['adr'].'<br>';
  124.                          // echo '$ii'. $ii . "r\n";
  125.                            
  126.                            $next = false;
  127.                            $skip = false;
  128.                            
  129.                            if($row_var['Address'] == $rows_header[$ii]['adr']){//&&  row_var['timeEnter']!=$last_time
  130.                            print($row_var['Value']. "\t");
  131.                            $skip = true;
  132.                            break;  
  133.                             }
  134.                            else
  135.                            print('-'. "\t");
  136.                            }
  137.            
  138.                     print('EOL '."r\n");        
  139.                    
  140.                        
  141.        
  142.                
  143.                $last_time = $row_var['timeEnter'];
  144.                $last_adr  = $row_var['Address'];
  145.            //    }    
  146.            
  147.            } while ($row_var = $var->fetch());
  148.            
  149.    
  150.  
  151.        //for($iii=1;$iii<count($rows_time);$iii++){
  152.                        
  153.                        
  154.                        
  155.        //}
  156.                
  157.                
  158.    
  159.    
  160.  
  161.    
  162.     //  print $csv_output;
  163.       exit;
  164.      
  165.      }
  166.       }
  167.      
  168.       else {
  169.        $msg->add("E","Brak danych");
  170.       }
  171.            }
  172. ?>


Miałem wcześniej tablice ale zamula bo to na mało wydajne urządzenie wiec tablica odpada,
musi zostać przefiltrowane w pętli / pętlach
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.