Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Remazela

[Resolvido] PHP - Não Importa dados (TXT) p/ Banco de Dados (MySql)

Recommended Posts

Caros amigo.

 

Estou com o seguinte problema:

Não consigo Importar Dados de um arquivo( .TXT)  para GRAVAR no Banco de Dados.

 

O banco de dados está assim:

-- -----------------------------------------------------
-- Table `siscotaweb`.`cotacaoItens`
-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `siscotaweb`.`cotacaoItens` (
  `cotaItensId` INT NOT NULL AUTO_INCREMENT ,
  `cotaNumImport` VARCHAR(50) NOT NULL ,
  `codProdClie` VARCHAR(50) NOT NULL ,
  `cotaDtde` DECIMAL(10,2) NOT NULL ,
  `cotaComenta` VARCHAR(150) NOT NULL ,
  `cotaVerTxt` VARCHAR(1) NOT NULL ,
  `cotaNumero` VARCHAR(50) NOT NULL ,
  `cotacao_cotaId` INT NOT NULL ,
  PRIMARY KEY (`cotaItensId`) ,
  INDEX `fk_cotacaoItens_cotacao1_idx` (`cotacao_cotaId` ASC) ,
  CONSTRAINT `fk_cotacaoItens_cotacao1`
    FOREIGN KEY (`cotacao_cotaId` )
    REFERENCES `siscotaweb`.`cotacao` (`cotaId` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

 

Abaixo o código:

Nessa parte informo qual arquivo desejo:

    <div class="col-md-12">
      <!-- general form elements -->
      <div class="box box-primary">

        <div class="box-header with-border">
          <h3 class="box-title">Importar Itens para Cotação</h3>
        </div>

          <form role="form" name="cotaItens" id="cotaItens" action="" enctype="multipart/form-data" method="POST" >

              <div class="box-body">

              <?php

              //Pesquisa para verificar se já foi efetuado a Importação do arquivo .TXT
                $cnx = mysql_connect("localhost", "root", "");
                mysql_select_db("siscotaweb", $cnx);

                $sql = mysql_query("SELECT cotaVerTxt FROM cotacaoItens WHERE cotaNumero = '$cotaNumero' AND cotaVerTxt = '1' ");
                $res = mysql_num_rows($sql);
              ?>

                <?php if($res > 0){ ?>

                      <div class="alert alert-danger alert-dismissible">
                        <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
                        <h4><i class="icon fa fa-ban"></i> Alert!</h4>
                        Após efetuar as alterações necessárias. Clique em Finalizar, para enviar aos Fornecedores!
                      </div>                       

                   <?php } else { ?>                

                  <div class="form-group">

                      <input type="file" name="arquivo" id="arquivo" required />

                      <p class="help-block">Atenção! Importar somente arquivo .TXT</p>

                      <input class="btn btn-primary btn-xs" type="submit" name="confirmar" value="Confirmar"> 

                  </div>


              <?php } ?>      


                  <input type="hidden" name="cotaId" value="<?php echo $cotaId;?>" />
                  <input type="hidden" name="cotaNumero" value="<?php echo $cotaNumero;?>" />                

              </div>                   

          </form>

      </div>

    </div>

 

Nesta parte, uso para importar e gravar no Banco de dados.

         <?php

          //Variável Passada da Página Anterior
          $cotacao_cotaIdGet = isset($_GET['cotaId']) ? $_GET['cotaId'] : false;
          $cotacao_cotaId  = isset($_POST['cotaId']) ? $_POST['cotaId'] : $cotacao_cotaIdGet;   

          $cotaNumeroGet = isset($_GET['cotaNumero']) ? $_GET['cotaNumero'] : false;
          $cotaNumero    = isset($_POST['cotaNumero']) ? $_POST['cotaNumero'] : $cotaNumeroGet;       


            //Função para importar Arquivo
            function Inserir($itens, Pdo $pdo){
                $sts = $pdo->prepare("INSERT INTO cotacaoItens(cotaNumImport, codProdClie, cotaQtde, cotaVerTxt, cotaNumero, cotacao_cotaId) VALUES(?,?,?,?,?,?);");  

                $sts->bindValue(1, $itens[0], PDO::PARAM_STR);
                $sts->bindValue(2, $itens[1], PDO::PARAM_STR);        
                $sts->bindValue(3, $itens[2], PDO::PARAM_STR);            
                $sts->bindValue(4, $itens[3], PDO::PARAM_STR);        
                $sts->bindValue(5, $itens[4], PDO::PARAM_STR);          
                $sts->bindValue(6, $itens[5], PDO::PARAM_STR);                                
                $sts->execute();
                $sts->closeCursor();
                $sts = NULL;
            }
            
            if (!empty($_FILES['arquivo'])) {

                $Pdo  = new PDO("mysql:host=localhost; dbname=siscotaweb", "root", "");
                $file = fopen($_FILES['arquivo']['tmp_name'], 'r');

                while (!feof($file)){
                    $linha = fgets($file);          
                    $itens = explode(';', $linha);   
                    $itens[] = '1';     
                    $itens[] = $cotaNumero;                
                    $itens[] = $cotacao_cotaId;                                  
                    Inserir($itens, $Pdo);
                }
                  echo '<br/>';
                  echo '<div class="comunicado">Arquivo Importado com Sucesso!</div><!--aviso-->';
                  echo '<br/>';

                  //Redirecionando para Caixa de Enrada do Cliente
                  echo '<meta http-equiv="refresh" content="2, URL=painel.php?exe=admin-cliente/cotacao_lista" />';

            }

        ?>

 

Como consigo gravar no Banco de Dados ?

 

Grato,

 

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se puder postar a solução, poderá ajudar outros usuários no futuro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros amigos

 

Segue a solução do erro encontrado, acredito que isso acontece tantos com programadores iniciantes e mais experientes.

 

Motivo do erro: DIGITAÇÃO

 

Solução do erro: descansar a mente e ler com mais atenção.

 

O código abaixo de importação não apresenta nenhum erro:

         <?php

          //Variável Passada da Página Anterior
          $cotacao_cotaIdGet = isset($_GET['cotaId']) ? $_GET['cotaId'] : false;
          $cotacao_cotaId  = isset($_POST['cotaId']) ? $_POST['cotaId'] : $cotacao_cotaIdGet;   

          $cotaNumeroGet = isset($_GET['cotaNumero']) ? $_GET['cotaNumero'] : false;
          $cotaNumero    = isset($_POST['cotaNumero']) ? $_POST['cotaNumero'] : $cotaNumeroGet;       


            //Função para importar Arquivo
            function Inserir($itens, Pdo $pdo){
                $sts = $pdo->prepare("INSERT INTO cotacaoItens(cotaNumImport, codProdClie, cotaQtde, cotaVerTxt, cotaNumero, cotacao_cotaId) VALUES(?,?,?,?,?,?);");  

                $sts->bindValue(1, $itens[0], PDO::PARAM_STR);
                $sts->bindValue(2, $itens[1], PDO::PARAM_STR);        
                $sts->bindValue(3, $itens[2], PDO::PARAM_STR);            
                $sts->bindValue(4, $itens[3], PDO::PARAM_STR);        
                $sts->bindValue(5, $itens[4], PDO::PARAM_STR);          
                $sts->bindValue(6, $itens[5], PDO::PARAM_STR);                                
                $sts->execute();
                $sts->closeCursor();
                $sts = NULL;
            }
            
            if (!empty($_FILES['arquivo'])) {

                $Pdo  = new PDO("mysql:host=localhost; dbname=siscotaweb", "root", "");
                $file = fopen($_FILES['arquivo']['tmp_name'], 'r');

                while (!feof($file)){
                    $linha = fgets($file);          
                    $itens = explode(';', $linha);   
                    $itens[] = '1';     
                    $itens[] = $cotaNumero;                
                    $itens[] = $cotacao_cotaId;                                  
                    Inserir($itens, $Pdo);
                }
                  echo '<br/>';
                  echo '<div class="comunicado">Arquivo Importado com Sucesso!</div><!--aviso-->';
                  echo '<br/>';

                  //Redirecionando para Caixa de Enrada do Cliente
                  echo '<meta http-equiv="refresh" content="2, URL=painel.php?exe=admin-cliente/cotacao_lista" />';

            }

        ?>

 

O erro foi que no banco de Dados, escrevi com erro:

-- -----------------------------------------------------
-- Table `siscotaweb`.`cotacaoItens`
-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `siscotaweb`.`cotacaoItens` (
  `cotaItensId` INT NOT NULL AUTO_INCREMENT ,
  `cotaNumImport` VARCHAR(50) NOT NULL ,
  `codProdClie` VARCHAR(50) NOT NULL ,
  `cotaDtde` DECIMAL(10,2) NOT NULL , /* aqui está o erro, escrevi cotaDtde ao invés de cotaQtde, apenas uma letra "D" */
  `cotaComenta` VARCHAR(150) NOT NULL ,
  `cotaVerTxt` VARCHAR(1) NOT NULL ,
  `cotaNumero` VARCHAR(50) NOT NULL ,
  `cotacao_cotaId` INT NOT NULL ,
  PRIMARY KEY (`cotaItensId`) ,
  INDEX `fk_cotacaoItens_cotacao1_idx` (`cotacao_cotaId` ASC) ,
  CONSTRAINT `fk_cotacaoItens_cotacao1`
    FOREIGN KEY (`cotacao_cotaId` )
    REFERENCES `siscotaweb`.`cotacao` (`cotaId` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.