
		icefusion
		
		(usa Debian)
		
		Enviado em 29/06/2009 - 09:30h 
		<?php
include_once 'RemoverSimbolos.class.php';
include_once 'ManipularString.class.php';
include_once 'Conexao.class.php';
class ManipularArquivoCsv {
	private $handle;
	private $remSimb;
	private $limparStr;
	private $separador;
    private $conectar;
    private $cabecalho;
    private $menu;
    private $rodape;
    private $teste;
    				
	function __construct(){
		$this->remSimb = new RemoverSimbolos();
		$this->limparStr = new ManipularString();
		$this->separador = ";";
		$this->conectar = new Conexao('192.168.1.252','/smb_arquivos/gasoil/Flexis/bases/tabelas.gdb', 'SYSDBA', 'masterkey','IB');
		$this->cabecalho = 'montador/cabecalho.php';
		$this->rodape = 'montador/rodape.php';
		$this->menu = 'montador/menu.php';
		$this->teste = false;
	}
	
	private function abrir($caminho){
	    if(file_exists($caminho)){
			$this->handle = fopen($caminho, "r");
	    	return $this->handle;
    	}else {
    		include_once($this->cabecalho);
    		echo "<div id=\"principal\"> \n";
            echo "<table id=\"importar\">\n";
            echo "<tr>\n<th class=\"titulo\" colspan=\"2\">Abrir Arquivo - Resposta</th>\n</tr>\n";
    		echo "<tr>\n<td>Arquivo Não Existe ou Caminho Inválido!</td>\n</tr>\n";
    		echo "</table>\n";
	        echo "</div>\n";
    		include_once($this->menu);
    		include_once($this->rodape); 
        	
    	}
	}
		
	private function fechar(){
		fclose($this->handle);
	}
	
	private function numCampos($caminho){
		$hand = $this->abrir($caminho);
		while($data = fgetcsv ($hand, 1000, ";")){
             $matrizDeDados[] = $data;
             break;
        }
        foreach ($matrizDeDados as $linhas){
        	 $cont = count($linhas);
        }     
        $this->fechar();
        return $cont;	   
    }
    
    private function nomCampos($caminho, $ncampos){
    	$hand = $this->abrir($caminho);
    	while($data = fgetcsv ($hand, 1000, ";")){
             $matrizDeDados[] = $data;
             foreach ($matrizDeDados as $linhas){
             	for ($i=1; $i<=$ncampos; $i++){
                	$vet[$i]=$linhas[$i-1];
            	}
             }
             break;
        }
        $this->fechar();
        return $vet;
    }
    
    public function getNome($local){
        include_once($this->cabecalho);
	    echo "<div id=\"principal\"> \n";
        echo "<table id=\"importar\">\n";
        echo "<tr>\n<th class=\"titulo\" colspan=\"2\">Resultados: Importar Arquivo CSV</th>\n</tr>\n";
    	foreach (glob($local) as $filename){
	        $nomeArq = $this->remSimb->RemoveBar($filename);
	        $nomeArq = $this->remSimb->RemovePonto($nomeArq);
	        $ncampo = $this->numCampos($filename);
	        $nomCampo = $this->nomCampos($filename,$ncampo);
	        $tamanhoArq = filesize($filename);
	        $this->importar($tamanhoArq, $this->separador, $ncampo, $nomCampo, $filename, $nomeArq);
	    }
        echo "<tr>\n<td>Operação Completa!!</td>\n</tr>\n";
        echo "<tr>\n<td> </td>\n</tr>\n";
        echo "</table>\n";
	    echo "</div>\n";  
	    include_once($this->menu);
	    include_once($this->rodape);
    }
    
        
    private function importar($tamArq, $separador, $numCampos, $nomCampos, $arquivo, $tabela){
	    $tabela = strtoupper($tabela);
    	$sql = "INSERT INTO ";
	    $sql .= $tabela . " (";
	    foreach ($nomCampos as $c){
	    	$c = $this->remSimb->RemoverPontos($c);
	    	$c = $tabela.".".$c;
	    	$sql .= str_replace(' ','',$c).",";
	    	$sql = $this->limparStr->tirarCaracterEsp($sql);
	    	$sql = strtoupper($sql);
	    }
	    $sql = substr($sql, 0, strlen($sql) -1);
	    $sql .= " ) VALUES (";
	    $hand = fopen($arquivo, 'r');
	    $pular = fgetcsv($hand, $tamArq, $this->separador);
	    $sqlIni = $sql;
	    while(($linha = fgetcsv($hand, $tamArq, $this->separador)) != false){
          	$sql = $sqlIni;
	    	foreach ($linha as $valor){
	    		$valor = $this->remSimb->RemoveAspas($valor);
	    		$valor = strtoupper($valor);
          		$sql .= "'".$valor."',";
         	}
         	$sql = substr($sql,0,strlen($sql)-1);
         	$sql .= ")";
         	$conexao = $this->conectar->conectar();
         	if (!ibase_query($sql)) {
        		echo "<tr>\n<td> Erro: ".ibase_errmsg()."</td>\n</tr>\n"; 
                echo "<tr>\n<td> Arquivo: ".$arquivo." Tabela: ".$tabela."</td>\n</tr>\n";
        		echo "<tr>\n<td> </td>\n</tr>\n";
        		echo "<tr>\n<td> SQL com Erro: ".$sql . "</td>\n</tr>\n";
	    	}else {
	    		$this->teste = true;
	    	}
        }
        if ($this->teste == true){
        	echo "<tr>\n<td>Importação Arquivo ".$arquivo."</td>\n</tr>\n";
        	echo "<tr>\n<td>para Tabela ".$tabela." Concluído com Sussesso!</td>\n</tr>\n";
        	echo "<tr>\n<td> </td>\n</tr>\n";
        }else{
        	echo "<tr>\n<td>Importação Arquivo ".$arquivo."</td>\n</tr>\n";
        	echo "<tr>\n<td>para Tabela ".$tabela." Não Concluído</td>\n</tr>\n";
        	echo "<tr>\n<td> </td>\n</tr>\n";
        }    
        $this->conectar->desconectar($conexao);
     }
}
?>