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);
}
}
?>