Jump to content

novoAquiNoForum

Members
  • Content count

    17
  • Joined

  • Last visited

Posts posted by novoAquiNoForum


  1. Olá, sei que jé faz tempo que foi criado este tópico, mas segue abaixo minha solução:

     

    Como o tooltip vem depois da pagina ser carregada, você precisa inicializá-lo novamente, depois de chamar o ajax, Ex:

    function func_select_dados_reservas(){
    	var cad_busca 		= $(".campo_busca_geral").val();
       	var cad_id_status 	= $('select[name=cad_status_reserva]').val();
    
       $.ajax({
            url: "METODOS/pt_metodos_consultas_geral.php",
            type:"post",
            cache:false,
            data:"cad_acao=ACAO_SELECT_RESERVAS_POR_USUARIO&cad_busca="+cad_busca+"&cad_id_status="+cad_id_status,
            success: function(retorno){
            	$(".recebe_retorno").html(retorno);
              
              	//AQUI INICIALIZA O TOOLTIP NOVAMENTE
    		    $('[data-toggle="tooltip"]').tooltip();
            }
        })
    
    }

    Espero ter ajudado...

     


  2. Olá,

     

    Resolvi meu problema, era muito simples e eu estava complicando.

     

    Para auto-selecionar um select multiple é preciso passar um array como valor. Sendo assim, fiz somente o split na vírgula, dos ids que estava recebendo e passei o array como valor para o select, segue o código:

     

      		
    //Recebo os ids desta forma: 1,2,3,4. Então tranformo em array com o split
    var id_area 		= 1,2,3,4;
    var arr_area        = id_area.split(',');
    
    //Passo o array para o valor do meu select multiple. O trigger('change') é reponsável por selecionar as opções.
    $("#combo_area").val(arr_area).trigger('change');
    
    //No fim, chamo a função selectpicker para atualizar a combo, isso é necessário, senão nada acontece.
    $('#combo_area').selectpicker('refresh');

     


  3. Olá Pessoal,

     

    Preciso selecionar um select multiple com valores retornados do banco. Os valores retornados são os IDs separados por vírgula, exemplo: 1,2,3,4,5

     

    Geralmente quando é somente um valor eu faço desta forma:

    $("#combo_area").val(36).trigger('change');

    No select multiple, se eu fizer desta maneira manualmente dá certo:

    $("#combo_area").val(["5","4"]).trigger('change');

    Porém estou com dificuldades de colocar desta forma. Tentei fazer um split, como exemplo:

    var area = "";
    var arr_area = id_area.split(',');
    for (i = 0; i < arr_area.length; i++) {
      area += '"'+arr_area[i]+'", ';
      valor = area.substr(0,(area.length - 2));
    };
    
    $("#combo_area").val([valor]).trigger('change');

    Mas não deu certo, alguém pode ajudar aí?


  4. Olá, depois de muita pesquisa, resolvi o meu problema com o seguinte código:

    <?php
    include("conexao.php");
    
    //recebo os ids dos arquivos selecionados pelo usuário
    $selecao  = substr($_GET['selecao'],0,-1);
    
    //Monto a query para a consulta no Banco de dados MYSQL
    $sql = "SELECT
             id_documento
            ,nome_documento_original
            ,dados_documento 
            FROM documentos 
            WHERE id_documento IN ($selecao)";
    
    //Executo a query
    $result = $conn->query($sql);
    
    //Faço um laço de repetição While enquanto existir registros
    while($query = mysqli_fetch_object($result)){
      	
       //Coloco meu arquivo BLOB na variável $arquivo
        $arquivo = $query->dados_documento;
    
       //Este é o caminho que quero criar os arquivos com o nome de cada um
        $caminho = "MINHA_PASTA/".$query->nome_documento_original;
    
       //Este comando cria o PDF com base dos arquivos binários listados do banco
       //Abre o arquivo
        $fp = fopen($caminho, "a");
       //Escreve dentro do arquivo o conteudo binário salvo no banco
        $criaPDF = fwrite($fp, $arquivo);
       //Fecha o arquivo
        fclose($fp); 
    }
    
    ?>

     


  5. Olá Pessoal,

     

    Estou com uma dúvida sagaz, tenho uma coluna tipo BLOB no MYSQL, a qual armazena arquivos PDF's enviados a partir do upload. Não salvo o arquivo em pasta na hora do UPLOAD, somente salvo no banco de dados, sei que não é aconselhável, mas tenho meus motivos para fazer desta forma. Emfim, agora preciso fazer um script em PHP que recupere este arquivo do banco e baixe ou salve direto numa pasta que tenho, pois depois preciso enviar estes arquivos como anexo em e-mail, através do PHP Mailer, pois acho que é o único jeito de fazer. Alguém tem uma luz aí?


  6. Olá Pessoal, consegui resolver, segue código abaixo para quem tiver a mesma dificuldade:

    Como eu tenho uma variavel contendo o resultado da leitura do PDF, precisava conferir cada palavra no banco, na tabela indexadores, que seriam as palavras-chave, que o usuario cadastra para para a identificação automática do documento, para isso fiz da seguinte forma:

    //Uso o mysqli_real_escape_string para escapar alguns caracteres não permitidos pelo Mysql.
    //$response é a que recebe todas o texto extraido
    
                $conteudo =  mysqli_real_escape_string($conn, $response);
    
                //Faço um explode na variavel response quebrando onde tiver espaço, transformando todo o texto extraido em um array.
                  
                $textoPDF = explode(" ", $response);
                //Faço um implode na variavel textoPDF colocando vírgula e aspas em cada palavra, para poder consultar no banco com o IN.
                $text = "'" . implode("','",$textoPDF) . "'";
                
                //Faço uma consulta juntando as tabelas tipo_documento e indexadores. E verifico se na tabela indexadores possui palavras iguais
                //ao texto extraido do PDF. Se o resultado for maior ou igual a 2
                //é listado as variaveis e inserido o documento já classificado no banco, recebendo o id_tipo, id_area etc.
                $result = $conn->query("SELECT * FROM indexadores INNER JOIN tipo_documento ON indexadores.id_tipo = tipo_documento.id_tipo WHERE palavraschave IN ($text) AND id_empresa = $empresa");
                if(@mysqli_num_rows($result) >= 2){ 
                while($doc = mysqli_fetch_array($result)) {
                                $id_tipo = $doc['id_tipo'];
                                $tipo = $doc['descricao'];
                                $id_area = $doc['id_area'];
                                // echo "palavras: ".$doc['palavraschave'];;
                                
                        }
                         $tipo_doc = $tipo;
                         $status = "Indexado";
                         //Se a condição for satisfeita,o arquivo foi classificado, faço o Insert na tabela documentos.
                         $query = $conn->query("INSERT INTO documentos (id_tipo, id_area, id_empresa, nome_documento, descricao_documento, tamanho_documento, dados_documento, conteudo_documento, status_documento) 
                         VALUES ($id_tipo,$id_area,$empresa,'$nome', '$tipo','$tamanho','$dados','$conteudo','$status')") or die(mysqli_error($conn));
                        
                }else{
    
                        //Caso o resultado for menor que 2 palavras, o documento é inserido, mas não classificado.
                         $tipo = "<b>Indefinido</b>";
                         $status = "<b>Não Indexado</b>";
                         $query = $conn->query("INSERT INTO documentos (id_tipo, id_area,id_empresa,nome_documento, descricao_documento, tamanho_documento, dados_documento, conteudo_documento, status_documento) 
                         VALUES (0,0,$empresa,'$nome', '$tipo','$tamanho','$dados','$conteudo','$status')") or die(mysqli_error($conn));
                    }
    

  7. Olá pessoal, consegui fazer aqui :)

    Para quem está com a mesma dificuldade segue o código abaixo:

    o html fica assim:

    <tr>
      <td style="font-size:14px;">Empresa:</td>
      <td>
      <select id="empresa" style="width:220px;">
         <?php					         	
            $result = $conn->query("SELECT id_empresa, nome_empresa FROM empresa");
    	while($empresa = mysqli_fetch_object($result)) { ?>
    	<option value="<?php echo $empresa->id_empresa?>"><?php echo $empresa->nome_empresa?></option>
          <?php } ?>
      </select>
     <td>
    </tr>
    
    <tr>
      <td style="font-size:14px;">Área:</td>
      <td>
      <select id="area" style="width:220px;">
      
      </select>
     </td>
    </tr>
    

    Jquery fica assim:

    
    $('#empresa').change(function(){
               $.ajax({            
                url:"selects.php",            
                type:"get",                
                data: "empresa="+$(this).val(),   
                success: function (result){         
                    $("#area").html(result);                 
                }
          })
    })
    

    PHP:

    <?php
    include("conexao.php");
     
    $id_empresa = $_GET['empresa'];
     
    $result = $conn->query("SELECT * FROM areas WHERE id_empresa = '$id_empresa'");
    
    
    while($area = mysqli_fetch_object($result)){
        echo "<option value='$area->id_area'>$area->nomearea</option>";
    }
    
    ?>
    

    Explicando:

    A segunda combo área, aguarda o resultado da primeira combo empresa, trazendo somente as áreas pertencentes a empresa selecionada. Na combo empresa, uso o PHP para preenche-la, para a segunda não ficar vazia quando carregar a pagina, chame uma função de consulta com ajax ao carregar o documento. Pode fazer assim:

    $(document).ready(function(){
     $.ajax({            
                url:"selects.php",            
                type:"get",                
                data: "empresa="+$("#empresa").val(),   
                success: function (result){         
                    $("#area").html(result);                 
                }
           })
    })
    

    Assim no carregar a pagina ,a segunda já vem selecionada.

    Quando é alterada a option ,o evento é disparado, passando para o PHP o id da option selecionada com o ajax.

    O PHP recebe esse id e faz a consulta no banco, trazendo somente as áreas referentes aquela empresa. O retorno da consulta é inserido na combo área.


  8. Olá,

    Tenho uma dúvida.

    Tenho um select, que recebe dados vindos do banco Mysql, como abaixo:

    <tr>
      <td style="font-size:14px;">Empresa:</td>
      <td>
      <select class="choiceChosen" id="empresa" style="width:220px;">
         <?php					         	
            $result = $conn->query("SELECT id_empresa, nome_empresa FROM empresa");
    	while($empresa = mysqli_fetch_object($result)) { ?>
    	<option value="<?php echo $empresa->id_empresa?>"><?php echo $empresa->nome_empresa?></option>
          <?php } ?>
      </select>
     <td>
    </tr>
    
    <tr>
      <td style="font-size:14px;">Área:</td>
      <td>
      <select class="choiceChosen" id="area" style="width:220px;">
      <option value="0">Todas</option>
         <?php					         	
            $result = $conn->query("SELECT * FROM areas");
    	while($arquivo = mysqli_fetch_object($result)) { ?>
    	<option value="<?php echo $arquivo->id_area?>"><?php echo $arquivo->nomearea?></option>
         <?php } ?>
      </select>
     </td>
    </tr>
    
    

    Abaixo minha tabela areas:

    id_area  id_empresa nomearea
    
    5	 4	    Financeiro
    6	 5	    Financeiro
    7	 4	    Fiscal
    8	 5	    Fiscal
    
    

    Abaixo minha tabela empresas:

    id_empresa  nome_empresa
    
    4	    google /*exemplo*/
    5	    Apple /*exemplo*/
    
    

    Seguinte, o que preciso fazer é o seguinte:

    Quando eu alterar a empresa, preciso que área também seja alterada, onde o id_empresa da area for igual ao id_empresa da empresa, como faço isso usando PHP?


  9. Olá, desculpa star ressuscitando este tópico, mais preciso de uma ajuda urgente. Quero fazer a extração de texto de PDF, no caso farei upload e o texto será extraído, o qual irei gravar no banco. Minha aplicação é em PHP, mas até agora não encontrei nada de OCR que me ajudasse, poderiam me auxiliar com esta questão do Tesseract, É preciso instalar ele pra funcionar ou só baixar a classe e usar como uma qualquer?


  10. Vou postar todo o meu código atual aqui para ficar melhor.

    upload.php

    <?php
    $conn = new mysqli("localhost", "root", "","clae");
    include ("PDF/PdfToText.phpclass");//classe que extrai o texto do PDF
    
    
    if(isset($_FILES["myfile"]))
      {
      $ret = array();
     
      $error = $_FILES["myfile"]["error"];
    
        {  
            if(!is_array($_FILES["myfile"]["name"]))
            {
              
                //pega as informações do upload
    
                $temp = $_FILES["myfile"]["tmp_name"]; 
                $nome = $_FILES["myfile"]["name"];
                $tamanho = $_FILES["myfile"]["size"];
               
                //abre o documento    
                $fp = fopen($temp,"rb");
                $documento = fread($fp,filesize($temp));
                fclose($fp); 
    
                //guardo o conteudo do PDF que é um binario e converto para hexadecimal
                $dados = bin2hex($documento);
                    
                //A classe faz a leitura do PDF  
                $pdf = new PdfToText ($temp);
    
                //a minha variavel conteudo armazena o texto extraido, escapo todos os caracteres especiais que surgem devido a uma má leitura do documento
                $conteudo = mysqli_real_escape_string($conn, $pdf -> Text);
                    
                //faço uma consulta na tabela indexadores e tipo_documento para me trazer as informações que preciso   
    
                $result = $conn->query("SELECT * FROM indexadores INNER JOIN tipo_documento ON indexadores.id_tipo = tipo_documento.id_tipo");
                    if(mysqli_num_rows($result) > 0){
    
                        while($doc = mysqli_fetch_array($result)) {
                                $palavras = $doc['palavraschave'];
                                $id_tipo = $doc['id_tipo'];
                                $tipo = $doc['descricao'];
    
                    }
                       
                    //verifico se minha variavel $conteudo possui alguma palavrachave de meus indexadores
                    if (strpos($conteudo, $palavras) !== false)
                            {
    
                            //Se possuir o documento é inserido no banco já classificado
                            $status = "Indexado";
                            $query = $conn->query("INSERT INTO documentos (id_tipo, nome_documento, descricao_documento, tamanho_documento, dados_documento, conteudo_documento, status_documento) 
                            VALUES ($id_tipo,'$nome', '$tipo','$tamanho','$dados','$conteudo','$status')") or die(mysqli_error($conn));;
                            }
                            else
                            {
                            //Se não possuir o documento é inserido porem sem classificação
                            $tipo = "<b>Indefinido</b>";
                            $status = "<b>Não Indexado</b>";
                            $query = $conn->query("INSERT INTO documentos (id_tipo, nome_documento, descricao_documento, tamanho_documento, dados_documento, conteudo_documento, status_documento) 
                            VALUES (0,'$nome', '$tipo','$tamanho','$dados','$conteudo','$status')") or die(mysqli_error($conn));;
                            }
                        }
                        else
                        {
                          echo "Nenhum tipo de documento encontrado."; 
                        }
                    }
                }
            }
    
    //Aqui é verificado se o documento foi inserido ou não
     if(mysqli_affected_rows($conn) < 1){
        
        $resposta = "<div title='Ocorreu um erro ao inserir o arquivo.'style='color:#AB4450;background-color: #F2DEDE; border-radius:5px;padding:10px; margin-top:10px; width:auto;height:auto;'>Erro: ".$nome."</div>";
        }
        else
        {
        $resposta = "<div  title='O arquivo foi inserido com sucesso.'style='color:#3C763D;background-color: #DFF0D8;border-radius:5px; padding:10px; margin-top:10px; width:auto;height:auto;'>Sucesso: ".$nome."</div>";
        }
    
        echo $resposta;
     
    $conn->close();
    
    
    ?>
    
    

    Ressalto que sou iniciante em PHP, então podem ter erros no código.


  11. Olá desculpe a demora em responder, o tempo realmente é curto.

    Tentei várias vezes resolver isto com Like e com o IN, mas não obtive sucesso, talvez não tenha feito da maneira correta me levando a recorrer a alguma função do PHP. Tentei fazer o seguinte:

     $pdf = new PdfToText ($temp);
    
    //A minha classe lê todo o PDF e guarda na variavel conteúdo
    
     $conteudo = mysqli_real_escape_string($conn, $pdf -> Text);
                    
                    
     $result = $conn->query("SELECT * FROM indexadores WHERE palavraschave IN ('$conteudo')");
    
     $pdf = new PdfToText ($temp);
     $conteudo = mysqli_real_escape_string($conn, $pdf -> Text);
                                  
    
     $result = $conn->query("SELECT * FROM indexadores where palavraschave LIKE '%".$conteudo."%'");
    
    

    a minha tabela indexadores e tipo_documento, estão desta forma:

    CREATE TABLE tipo_documento (
      id_tipo int(10) NOT NULL AUTO_INCREMENT,
      descricao varchar(200),
      indexadores varchar(200),
      PRIMARY KEY (id_tipo)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    CREATE TABLE indexadores(
      id_indexador int(10) NOT NULL AUTO_INCREMENT,
      id_tipo int(10) NOT NULL,
      palavraschave varchar(200),
      PRIMARY KEY (id_indexador)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    Resultado da minha tabela tipo_documento

    id_tipo   descricao
    
    3	  Conta de Luz		
    17	  Redes	
    20	  Boleto	
    
    

    Meus indexadores guardam cada palavra como um registro com um id único pertencente a um id_tipo do documento

    id   id_tipo    palavraschave
    
    7	3	RGE
    8	3	Emissor
    36	17	Bridge
    37	17	Address
    40      20      Banco
    41      20      Conta
    42      20      Sacado
    

    Assim talvez tenha ficado mais claro, o que preciso fazer.

    Sempre quando realizo o upload de um PDF a minha classe extrai o texto e armazena na variável $conteudo, logo após, preciso verificar se na tabela indexadores, possui palavras que contenham no documento, para definir qual tipo de documento é este PDF, EX:

    Se eu fazer o upload de um boleto, tenho que procurar palavras que contenham neste arquivo, se ele encontrar as palavras Banco,Sacado e conta, o arquivo vai ser classificado como boleto, caso ele não encontre nenhuma palavra, ele vai inserir no banco, porem este documento vai ficar como não classificado.

    Resumindo, ele tem que encontrar todas as palavras informadas para aquele documento na variável $conteudo para poder classificar o mesmo. Pois posso ter documentos que também possuam a palavra Banco, mas que não sejam boletos. Então o usuário vai cadastrar o máximo de palavras chaves que ele julga que só tenha em boleto, para este tipo ser único.

    Desde já agradeço.


  12. Olá primeiramente obrigado por responder, já fiz uso desta função realmente deu certo. Mas digamos que tenho um select no banco que traz todos meus indexadores:

    $result = $conn->query("SELECT * FROM indexadores INNER JOIN tipo_documento ON indexadores.id_tipo = tipo_documento.id_tipo");
                    if(mysqli_num_rows($result) > 0){
     
                        while($doc = mysqli_fetch_array($result)) {
                                $palavras = $doc['palavraschave'];
                                $id_tipo = $doc['id_tipo'];
                                $tipo = $doc['descricao'];
     
                    }
     
     
                    if (strpos($conteudo, $palavras) !== false)
                            {
                            $status = "Indexado";
                            $query = $conn->query("INSERT INTO documentos (id_tipo, nome_documento, descricao_documento, tamanho_documento, dados_documento, conteudo_documento, status_documento) 
                            VALUES ($id_tipo,'$nome', '$tipo','$tamanho','$dados','$conteudo','$status')");
                            }
                            else
                            {
                            $tipo = "<b>Indefinido</b>";
                            $status = "<b>Não Indexado</b>";
                            $query = $conn->query("INSERT INTO documentos (id_tipo, nome_documento, descricao_documento, tamanho_documento, dados_documento, conteudo_documento, status_documento) 
                            VALUES (0,'$nome', '$tipo','$tamanho','$dados','$conteudo','$status')");
                            }
                        }
                        else
                        {
                          echo "Nenhum tipo de documento encontrado."; 
                        }
    

    os meus indexadores são três Sacado,Boleto,Cedente.

    Essa função verifica se tem essas três palavras na variável ou se ela encontrar uma já retorna TRUE.

    Quero que contenha exatamente as três palavras.


  13. Pessoal tudo bem?

    Vou direto ao ponto.

    Estou desenvolvendo um sistema que faz upload de arquivos PDFs. No PHP eu pego este arquivo extraio o texto do mesmo e armazeno em uma variável $conteudo para depois inserir no banco da dados.

    Tenho no sistema uma rotina para cadastro de tipo documentais, onde o usuário cadastra um tipo de documento e palavras-Chave que existam somente naquele documento EX:

    Nome: Boleto palavras-Chave: Sacado, Banco, Cedente.

    o nome boleto será salvo na tabela tipo_documento contendo o id_tipo

    as palavras-Chave serão salvas em outra tabela chamada indexadores com os campos:

    id_indexador, id_tipo, palavraschaves. No PHP faço o explode na virgula, transformando essas palavras em array, ou seja cada palavra será um registro no banco com seu respectivo ID mas recebendo o id_Tipo que é o do documento.

    Até aqui tudo bem, mas o problema segue abaixo:

    Voltando um pouco acima, onde eu falava do upload e da extração do texto, sendo salvo na variável $conteudo.

    Esta variável contem todo o meu texto do PDF, mas antes de inserir no banco eu preciso classificar este documento verificando se ele é uma conta de luz, agua, contrato, boleto etc..

    Para verificar isto preciso consultar a tabela indexadores e ver se aquelas palavras chaves que cadastrei, possuam nesta variável $conteudo se possuir este documento receberá a descricao e o id do tipo_documento. EX:

    Fiz um upload de um boleto, a minha classe leu o arquivo e guardou todo o texto na variável $conteudo. Como já tenho um tipo documental Boleto com as palavras chaves: Banco, Cedente, Sacado, se eu encontrar na variável $conteudo estas palavras ela vai pertencer ao tipo de documento Boleto.

    Mas não estou conseguindo verificar isto, como tenho uma string enorme, como faço esta verificação? como procuro estas palavras dentro da string?

    Preciso urgentemente de uma resposta.

    Tentei ser o mais claro possível.


  14. Olá a todos, minha primeira vez aqui no fórum.

    Seguinte, tenho uma dúvida:

    Qual a forma correta de gravar tags no banco de dados MySql?

    Pra esclarecer melhor, tenho um campo que o usuário cadastra palavras chaves separadas por vírgula como é realizado aqui no fórum.

    Ex: boleto,cedente,banco

    No PHP usando o explode transformo essas palavras em array, sendo que cada palavra será um registro no banco de dados com id e descricao.

    Esta correto desta forma?

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.