danluc 4 Denunciar post Postado Junho 11, 2015 Boa tarde, to tentando importa o conteúdo de um arquivo .txt para meu DB, e conseguir isso ja.. mais queria uma barra de progresso de 0 a 100 %, pq o arquivo é grandinho, tem 15000 linhas ou as vezes tem mais.. so que quando importo do jeito que to fazendo a barra anda muito rapido, e importa, mais não da ngm msg de error e nem de sucesso , e tbm aceita qualquer tipo de arquivo e se o txt tiver 0 linhas ele tbm enche a barra com 100% ... poderiam me ajudar a colocar um barra de progresso com msg e tbm que demore o tempo normal.. Segue o Codigo que estou usando.. <?php include('../conexao.php'); if(isset($_POST['BT_Enviar'])){ $data = $_POST['data']; $nometmp = $_FILES['buscar']['tmp_name']; $arquivo = $nometmp;// aquivo a ver importado txt $arq = fopen($arquivo,'r');// le o arquivo txt while(!feof($arq)) for($i=0; $i<1; $i++){ if ($conteudo = fgets($arq)){//se extrair uma linha e não for false $ll++; // $ll recebe mais 1 ==== em quanto o existir linha sera somada aqui $linha = explode(';', $conteudo);// divide por coluna onde tiver ponto e virgula } $sql = "INSERT INTO db_claro (`Tel`, `Secao`, `Data`, `Hora`, `UF`, `Numero`, `Duracao`, `Tarifa`, `Valor`, `MesComp`) VALUES ('$linha[0]', '$linha[1]', '$linha[2]', '$linha[3]', '$linha[4]', '$linha[5]', '$linha[6]', '$linha[7]', '$linha[8]', '$data')"; $result = mysql_query($sql) or die(mysql_error()); //$linha = array();// limpa o array de $linha e volta para o for }if($sql){ $sql3 = "INSERT INTO mes (`mescomp`) VALUES ('$data')"; $sql1 = "UPDATE db_test SET tel = REPLACE(tel, ' ','')"; $sql2 = "UPDATE db_test SET tel = REPLACE(tel, '-','')"; $result1 = mysql_query($sql1) or die(mysql_error()); $result2 = mysql_query($sql2) or die(mysql_error()); $result3 = mysql_query($sql3) or die(mysql_error()); } else{ $erro1 = "Não foi possivel Importar"; } $contlinhas = "Quantidade de linhas importadas = ".$ll; } ?> <!doctype html> <html> <head> <meta charset="iso-8859-1"> <title>Gerenciador</title> <link href="../estilo.css" rel="stylesheet" type="text/css"> <link href="bootstrap.css" rel="stylesheet" type="text/css"> <script src="jquery.js"></script> <script type="text/javascript" src="carregar.js"></script> <script type='text/javascript'> $('#form').ajaxForm({ uploadProgress: function(event, position, total, percentComplete) { $('progress').attr('value',percentComplete); $('#porcentagem').html(percentComplete+'%'); }, success: function(data) { $('progress').attr('value','100'); $('#porcentagem').html('100%'); $('pre').html(data); } }); </script> </head> <body> <?php /*=================INICIA A SESSAO DO USUARIO========================================================*/ session_start(); if((!isset ($_SESSION['UsuarioNome']) == true) and (!isset ($_SESSION['senha']) == true)) { unset($_SESSION['UsuarioNome']); unset($_SESSION['senha']); header('location:index.php'); } $logado = $_SESSION['UsuarioNome']; $numero=$_SESSION['UsuarioNumero']; $data = date("d/m/Y"); /*===========CONEXÃO===================*/?> <div id="top"> <div id="topo"> <p>Olá, <?php echo $logado?></p> Data: <?php echo $data?><br /> <a href="logout.php">Sair</a> </div><!--TOPO--> </div><!--TOP--> <div style="width:1000px; margin-left:auto; margin-right:auto"><br /> <?php if(isset($contlinhas)){ print '<div style="width:80%; background:#0093FF; color:#fff; padding: 5px 0px 5px 0px; text-align:center; margin: 0 auto;">'.$contlinhas.'</div>'; }if(isset($erro1)){ print '<div style="width:80%; background:red; color:#fff; padding: 5px 0px 5px 0px; text-align:center; margin: 0 auto;">'.$erro1.'</div>';} ?> <br /> <form action="teste.php" method="post" enctype="multipart/form-data" name="form" id="form"> <!-- DADOS PESSOAIS--> <fieldset id="fieldset"> <legend>Importação</legend> <table cellspacing="10"> <td> <label for="nome">Arquivo: </label> </td> <td align="left"> <input type="file" name="buscar" /> </td> <br ><br > <progress value="0" max="100" class="progress progress-striped" role="progressbar" style="width:100%;" ></progress><span id="porcentagem">0%</span> <tr> <td> <label for="images">Data Competente: </label> </td> <td align="left"> <input name="data" type="date" title="Coloque a Data do vencimento da Conta" /> </td> </tr> </table> </fieldset><br /> <input type="submit" name="BT_Enviar" id="BT_Enviar" value="Enviar" onClick="start();"/> </form> </div> </body> </html> alguém tem ideia ai? Compartilhar este post Link para o post Compartilhar em outros sites
Diegus Miestro 21 Denunciar post Postado Junho 12, 2015 Esse tipo de coisa eu nunca fiz, mas acredito que deva ser algo com Ajax Sobre a extensão, coloca uma verificação, se a extensão do arquivo é mesmo txt: http://php.net/manual/en/splfileinfo.getextension.php Sobre o loading, eu, quando precisei, não coloquei uma barra, apenas quando era dado o submit eu colocava uma div com fundo transparente com uma outra div dentro de fundo opaco e com a mensagem relacionada, que no caso era Instalando e uma animação de "loading", em um CMS que eu estava fazendo. Compartilhar este post Link para o post Compartilhar em outros sites
danluc 4 Denunciar post Postado Junho 12, 2015 valeu mano por responder ... teria um exemplo de como vc fez essa ai da div para mim ajudar aqui..? Compartilhar este post Link para o post Compartilhar em outros sites
vitorm11 3 Denunciar post Postado Junho 15, 2015 danluc, vamos por partes.... Primeiro, o que você está fazendo não está correto, você pode ser reportado por estar colocando um monte de "?" para subir o post. Vamos lá, tem várias pessoas com dúvida aqui, você não é a única. Para verificar a extensão você pode dar um explode no arquivo e verificar a ultima parte deste explode, um exemplo bem simples. $arquivo = "teste.txt"; $extensoesPermitidas = array("txt"); $extensaoArquivo = end(explode(".", $arquivo)); if(in_array($extensaoArquivo, $extensoesPermitidas)) { echo "Arquivo válido."; } else { echo "Arquivo inválido."; } Já do upload com barra de progresso procure no google, terá que fazer algo em Javascript, provavelmente jQuery para facilitar a sua vida. Qualquer dúvida só chamar. Atenciosamente, Vitor M. Braga. Compartilhar este post Link para o post Compartilhar em outros sites
Massa191 18 Denunciar post Postado Junho 16, 2015 Olá Danluc. Bom, em primeiro lugar te faço a seguinte pergunta. você. quer monitorar qual(is) tarefas ? 1 O Uplod 2 Os Inserts Mysql do BD 3 Ambos Qual tarefa é a demorada, o upload ou o BD ao insertar as linhas ? UPLOAD Se for o Upload, a tarefa será mais facilmente resolvida se implementar uma solução que se Baseie em HTML5 e navegadores mais recentes,pois os navegadores antigos, por questões de segurança não retornavam o tamanho do arquivo a Upar Do contrário você. terá grande dificuldade em resolver com PHP puro e ajax, sem algum script CGI (é possível mas bem complicado pelo fato de não poder determinar o nome do arquivo temp que o PHP vai usar, além do local padrão pelo qual o php ira usar para salvar o temp, que pode variar bastante) ex. de upload c progress-bar html5 - http://www.matlus.com/html5-file-upload-with-progress/ BD INSERTS Se for o trabalho do BD, eu já implementei uma solução similar, onde você. necessitará do seguinte: uma página HTML com o form de upload, onde o campo form aponta para uma página php que fará o upload. A página php que recebe o upload, é composta pelo handler, que recebe o arquivo, e grava no servidor. Esta mesma página com o handler mostra em sua html um progress-bar , controlado por javascript (ajax) que monitora o progresso através de chamadas temporizadas a outro script php somente usado para responder a chamada assincrona. , não esquecendo que é um iframe(hidden) nesta mesma página, que realiza a chamada ao script php que fará o "povoamento" da tabela. O script PHP, que fará o povoamento, antes do loop com os inserts, deve gravar em uma tabela auxiliar o tamanho do arquivo ou num de linhas total, e dentro do loop com os inserts, irá atualizando em outro campo, a posição do ponteiro, ou seja, o contador de linhas em qual o processo de insert está. o Javascript por sua vez, faz chamadas temporizadas ao script de monitoramento, que lê na tabela auxiliar, o tamanho total do arquivo, ou num de linhas, e a posição em que ele está com os inserts, e devolve ao javascript estas 2 informações, que com elas irá calcular o percentual e atualizar o progress-bar Sua estrutura será a seguinte index.html (form de upload) processa.php (handler do form, progress-bar , javascript , iframe) insert,php (faz os inserts e atualiza a tabela auxiliar de monitoramento) monitora.php (script que é chamado pelo javascript e faz a leitura da pos. do ponteiro) AS DUAS COISAS Como o próprio nome diz , ....rs Abraços e boa sorte Marcos Compartilhar este post Link para o post Compartilhar em outros sites
Diegus Miestro 21 Denunciar post Postado Junho 17, 2015 Sobre, submeter e ele mostrar uma div com carregando ou instalando, fiz um exemplo: https://jsfiddle.net/diegusmiestro/eshs6aqk/4/ Basicamente o grosso é o CSS e quando submeter ele vai mostrar o que chamei de #popup, quando o servidor terminar o processo ele vai devolver a resposta e a página vai atualizar, mas até lá fica esse popup mostrando. P.S. 1: Testei apenas no Google chrome P.S. 2: Usei o jquery 1.11 e o awesome fonts(pra ficar o negocio de carregamento) Compartilhar este post Link para o post Compartilhar em outros sites