Jump to content
romario@seg

gravar um array no banco de dados metohd post

Recommended Posts

olá, estou com um formulario feito com colunas fixas e uma parte dinamica(um botao adiciona um conjunto de colunas) , como faria para enviar os dados dos campos dinamicos no banco de dados já que eles serão variais, 

 

 

$tipoendereco = $_POST['data']['ClientesEndereco'][0]['nome_tipo']; 


$cep = $_POST['data']['ClientesEndereco'][0]['cep'];  
$logradouro = $_POST['data']['ClientesEndereco'][0]['logradouro']; 

$numeroendereco = $_POST['data']['ClientesEndereco'][0]['numero'];  
$complemento = $_POST['data']['ClientesEndereco'][0]['complemento']; 
$bairro = $_POST['data']['ClientesEndereco'][0]['bairro'];   
$codcidade = $_POST['data']['ClientesEndereco'][0]['codigo_cidade'];   
$nomecidade = $_POST['data']['ClientesEndereco'][0]['nome_cidade'];   
$estadocidade = $_POST['data']['ClientesEndereco'][0]['estado']; 

 

existe um botao que duplica essa parte do formulaio quantas vezes a pessoa quiser .... porem só fica registrado os dados preenchidos no primeiro formulario, o segundo ja vem assim:

 

$cep = $_POST['data']['ClientesEndereco'][1]['cep'];  
$logradouro = $_POST['data']['ClientesEndereco'][1]['logradouro']; 

$numeroendereco = $_POST['data']['ClientesEndereco'][1]['numero'];  
$complemento = $_POST['data']['ClientesEndereco'][1]['complemento']; 
$bairro = $_POST['data']['ClientesEndereco'][1]['bairro'];   
$codcidade = $_POST['data']['ClientesEndereco'][1]['codigo_cidade'];   
$nomecidade = $_POST['data']['ClientesEndereco'][1]['nome_cidade'];   
$estadocidade = $_POST['data']['ClientesEndereco'][1]['estado']; 

 

como faço para gravar todos os formulario para pegar de acordo com a quantidade desejada por pessoa ?

agradeço desde já

 

 

 

Share this post


Link to post
Share on other sites

@romario@seg, beleza!

Se entendi o problema, isso deve resolver:
 

if (isset($_POST['data']['ClientesEndereco'][0])) {
        
  $values = '';    
  $fields = "(" . implode(",", array_keys($_POST['data']['ClientesEndereco'][0])) . ")";
  
  foreach ($_POST['data']['ClientesEndereco'] as $endereco) {
    $values .= "('" .implode("','", $endereco) . "'),";
  }
  
  $values = substr($values, 0, -1);
  $sql = 'INSERT INTO SUATABELA ' . $fields . ' VALUES ' . $values;

  /*
    Agora basta pegar essa variavel $sql e dar o insert com o seu PDO, mysqli ou o que estiver usando
  */
}

 

Share this post


Link to post
Share on other sites
23 minutos atrás, EdCesar disse:

@romario@seg, beleza!

Se entendi o problema, isso deve resolver:
 


if (isset($_POST['data']['ClientesEndereco'][0])) {
        
  $values = '';    
  $fields = "(" . implode(",", array_keys($_POST['data']['ClientesEndereco'][0])) . ")";
  
  foreach ($_POST['data']['ClientesEndereco'] as $endereco) {
    $values .= "('" .implode("','", $endereco) . "'),";
  }
  
  $values = substr($values, 0, -1);
  $sql = 'INSERT INTO SUATABELA ' . $fields . ' VALUES ' . $values;

  /*
    Agora basta pegar essa variavel $sql e dar o insert com o seu PDO, mysqli ou o que estiver usando
  */
}

 

na pagina que recebe não deu nenhum erro, mas como faço para imprimir na tela os dados preenchidos para verificar os dados?

Share this post


Link to post
Share on other sites
1 hora atrás, romario@seg disse:

na pagina que recebe não deu nenhum erro, mas como faço para imprimir na tela os dados preenchidos para verificar os dados?


Normal, só dar um:

echo $sql;

Após:

$sql = 'INSERT INTO SUATABELA ' . $fields . ' VALUES ' . $values;

Não se esqueça de troca SUATABELA pelo nome correto da sua tabela

Share this post


Link to post
Share on other sites
1 hora atrás, EdCesar disse:


Normal, só dar um:


echo $sql;

Após:


$sql = 'INSERT INTO SUATABELA ' . $fields . ' VALUES ' . $values;

Não se esqueça de troca SUATABELA pelo nome correto da sua tabela

INSERT INTO cliente (nome_tipo,cep,logradouro,numero,complemento,bairro,pais,cidade_id,codigo_cidade,nome_cidade,estado) VALUES ('','','','','','','','','','','')

esses sao os names que estão no formulario se observar no primeiro exmplo 

"nome_tipo,cep,logradouro,numero,complemento,bairro,pais,cidade_id,codigo_cidade,nome_cidade,estado" e os values vem em branco.

 

foi isso que apareceu quando atualizei a pagina, desculpa sou leigo, mas agradeço a grande ajuda!

Share this post


Link to post
Share on other sites
1 hora atrás, romario@seg disse:

foi isso que apareceu quando atualizei a pagina, desculpa sou leigo, mas agradeço a grande ajuda!


Ótimo, esta funcionando, aparentemente você só não preencheu os campos do formulário.
Se mais duvidas aparecer, pesquise por enviar dados do formulário para o PHP e salvar no banco de dados, caso tenha dificuldades, poste o seu código para auxiliarmos melhor.

Share this post


Link to post
Share on other sites
1 hora atrás, EdCesar disse:


Ótimo, esta funcionando, aparentemente você só não preencheu os campos do formulário.
Se mais duvidas aparecer, pesquise por enviar dados do formulário para o PHP e salvar no banco de dados, caso tenha dificuldades, poste o seu código para auxiliarmos melhor.

não estou conseguindo inserir no banco de dados, criei uma tabela para cada resultado, mas onde eu faço o endereçamento para aparecer nas colunas?

 

eu costumo fazer desse jeito quando tem a tabela fixa, mas não estou conseguindo nesse jeito que me passou? como faço ?

$nome = $_POST['data  ']['ClientesEnderecos'][0]['nome'];

$tipo = $_POST['data  ']['ClientesEnderecos'][0]['cep'];

$sql = INSERT INTO endereco_cliente (`nome_tipo`,`cep`) VALUES ($nome, $tipo);

Share this post


Link to post
Share on other sites
Em 2017-5-20 at 20:01, EdCesar disse:


Ótimo, esta funcionando, aparentemente você só não preencheu os campos do formulário.
Se mais duvidas aparecer, pesquise por enviar dados do formulário para o PHP e salvar no banco de dados, caso tenha dificuldades, poste o seu código para auxiliarmos melhor.

não esta indo para a minha tabela do banco de dados , estou com o projeto parado, pode me ajudar ?

tem algum email ?

Share this post


Link to post
Share on other sites
6 minutos atrás, EdCesar disse:

Coloque o seu código e os erros que estão dando.

Informe também o que você já tentou fazer para resolver o problema e não deu certo.

 essa é a pagina que vem do formulario para enviar para o banco de dados ... 

<?php

include 'conexao.php';

 

if (isset($_POST['data']['ClientesEndereco'][0]))
if (isset($_POST['data']['ClientesContato'][0])) {
        
  $values = ''; 
  $fields = "(" . implode(",", array_keys($_POST['data']['ClientesEndereco'][0])) . ")";


  $value = '';
  $field  = "(" . implode(",", array_keys($_POST['data']['ClientesContato'][0])) . ")";
  
  foreach ($_POST['data']['ClientesEndereco'] as $endereco) {
    $values .= "('" .implode("','", $endereco) . "'),";

  }


  foreach ($_POST['data']['ClientesContato'] as $contato) {
    $value .= "('" .implode("','", $contato) . "'),";

  }


  
  $values = substr($values, 0, -1);
  $sql = 'INSERT INTO cliente_endereco ' . $fields  . ' VALUES ' . $values;

  $value = substr($value, 0, -1);
  $sq  = 'INSERT INTO cliente_contato  ' . $field. ' VALUES ' .$value;


  $quer = mysqli_query($cnx,$sql);
    var_dump($quer);


echo $sql ;
  
}

//header ("Location:/1-login/home/clientes.php");
       
?>

 

no meu banco de dados criei duas tabelas, uma com nome cliente_endereco e outra com contato_endereco

 

na tabela cliente endereco criei as colunas 
nome_tipo,cep,logradouro,numero,complemento,bairro,pais,cidade_id,codigo_cidade,nome_cidade,estado.

 

mas não esta enviando, esse é o resultado que aparece na pagina retorno .

 

 

INSERT INTO cliente_endereco (nome_tipo,cep,logradouro,numero,complemento,bairro,pais,cidade_id,codigo_cidade,nome_cidade,estado) VALUES ('','','','','','','','','','','')

Share this post


Link to post
Share on other sites
Em 20/05/2017 at 20:01, EdCesar disse:

Ótimo, esta funcionando, aparentemente você só não preencheu os campos do formulário.
Se mais duvidas aparecer, pesquise por enviar dados do formulário para o PHP e salvar no banco de dados, caso tenha dificuldades, poste o seu código para auxiliarmos melhor.


A impressão que da, é que você esta tentando obter os dados sem submeter o formulário, se não existem dados em $_POST['data']['ClientesEndereco']  ficara em branco mesmo, então reitero a sugestão acima que já tinha lhe dado.

Que testes você esta fazendo, já deu um var_dump em $_POST['data']['ClientesEndereco'] ?


 

Share this post


Link to post
Share on other sites
5 minutos atrás, EdCesar disse:


A impressão que da, é que você esta tentando obter os dados sem submeter o formulário, se não existem dados em $_POST['data']['ClientesEndereco']  ficara em branco mesmo, então reitero a sugestão acima que já tinha lhe dado.

Que testes você esta fazendo, já deu um var_dump em $_POST['data']['ClientesEndereco'] ?


 

testei, porem a inserção que conheço e que estou fazendo para meu formulario fixo esta dando certo, esta enviando para o banco de dados, esse é os dados do formulario fixo:
 

<?php
include 'conexao.php';

$tipo = $_POST['data']['Cliente']['tipo_pessoa'];
$situacao = $_POST['data']['Cliente']['ativo'];
$nome = $_POST['data']['Cliente']['nome'];
$email = $_POST['data']['Cliente']['email'];
$cpf = $_POST ['data']['Cliente']['pf_cpf'];
$rg = $_POST ['data']['Cliente']['pf_rg'];
$dtnascimento = $_POST ['data']['Cliente']['pf_data_nascimento'];

$cnpj = $_POST['data']['Cliente']['pj_cnpj'];
$rzsocial = $_POST ['data']['Cliente']['pj_razao_social'];
$ie = $_POST ['data']['Cliente']['pj_inscricao_estadual'];
$ieisent = $_POST['data']['Cliente']['pj_isento_ins_est'];
$pjcontribuinte = $_POST['data']['Cliente']['pj_tipo_contribuinte'];
$imunicipal = $_POST['data']['Cliente']['pj_inscricao_municipal'];
$isuframa = $_POST['data']['Cliente']['pj_inscricao_suframa'];
$respon = $_POST['data']['Cliente']['pj_responsavel'];
$telcomercial = $_POST['data']['Cliente']['telefone'];
$telcelular = $_POST['data']['Cliente']['celular'];
$fax =$_POST['data']['Cliente']['fax'];
$site = $_POST['data']['Cliente']['site'];

 

$sql = "INSERT INTO  `cliente`( `tipocliente`, `situacao`, `nome`, `email`, `cpf`, `rg`, `nascimento`, `cnpj`, `razao`, `ie`, `ieisento`,`contribuinte`, `inscmunicipal`, `inscsuframa`, `responsavel`, `telefone`, `celular`, `fax`, `site` ) 
   
   VALUES ('$tipo', '$situacao', '$nome','$email','$cpf','$rg','$dtnascimento','$cnpj','$rzsocial','$ie','$ieisent','$pjcontribuinte','$imunicipal','$isuframa','$respon','$telcomercial','$telcelular','fax','$site');";
       $qur = mysqli_query($cnx, $sql);
        var_dump($qur);

 

a inserção desta forma esta dando certo, mais para a parte do formulario dinamico  que é o endereço e o contato que pode ser adicionado mais campos dinamicamente não está ...

Share this post


Link to post
Share on other sites
14 minutos atrás, EdCesar disse:


A impressão que da, é que você esta tentando obter os dados sem submeter o formulário, se não existem dados em $_POST['data']['ClientesEndereco']  ficara em branco mesmo, então reitero a sugestão acima que já tinha lhe dado.

Que testes você esta fazendo, já deu um var_dump em $_POST['data']['ClientesEndereco'] ?


 

estou preenchendo o formulario, mas não todo porque da trabalho ficar preenchendo toda hora, preencho 1 ou dois campos até dar certo.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By marcosberaldo
      Boa noite.
       
      Estou criando um ranking de pontuação e preciso colocar uma paginação nesse ranking mas não posso fazer a paginação pelo select, pois a select tem que somar os pontos de cada jogador informados em cada registro no banco, se eu limito a select ele só vai somar os pontos dos registros da página e não todos os pontos do jogador.
       
      Dessa forma optei por fazer a select normalmente e criar um array onde eu pretendo exibir somente parte dos dados.
       
      Em resumo, consegui fazer da seguinte forma:
      $dados = mysqli_query($conn, "SELECT *, sum(Pontos) as TotalPontos, sum(Acerto_Exato) as Acertos FROM placares INNER JOIN jogadores ON placares.JogadorID = jogadores.id WHERE campeonato='$campeonato' GROUP BY JogadorID ORDER BY TotalPontos DESC, Acertos DESC "); for($a = 0; $a < 9; $a++ ) { $row = mysqli_fetch_array($dados); echo $row['JogadorID']. " - " .$row['nome']; } Esse código me retorna 10 registros do array, até ai tudo bem, mas eu gostaria de exibir apenas um intervalo, por exemplo do registro 5 ao 9. 
      Tentei da seguinte forma:
      $dados = mysqli_query($conn, "SELECT *, sum(Pontos) as TotalPontos, sum(Acerto_Exato) as Acertos FROM placares INNER JOIN jogadores ON placares.JogadorID = jogadores.id WHERE campeonato='$campeonato' GROUP BY JogadorID ORDER BY TotalPontos DESC, Acertos DESC "); for($a = 5; $a < 9; $a++ ) { $row = mysqli_fetch_array($dados); echo $row['JogadorID']. " - " .$row['nome']; } Dessa forma ele me mostra apenas 5 registros, mas ele sempre me mostra os 5 primeiros e eu preciso carregar os últimos 5.
       
      Como faço???
    • By Suspeito
      Boa tarde.
       
      To com uma dúvida talvez simples, mas como ainda não tenho tanto conhecimento é muito complexa kk
       
      Seguinte: Tenho essas 12 dezenas: (só exemplos)
      -   37,38,39,40
      -   17,18,19,20
      -   05,06,07,08
       
      Queria fazer com que elas fossem exibidas em combinações de 3 dezenas, sem que nenhuma combinação se repita, até o final das combinações possíveis.
       
      05,37,40
      19,17,05
      37,18,06
      ...
    • By dinhoow
      Fala pessoal, tudo certo?
       
      Eu não tenho muita experiência em PHP/Mysql. Não programava nada desde 2009 então to beeeem enferrujado haha
       
      Mas é o seguinte, eu criei uma tabela com as seguintes informações:
       
      Dados do cliente:

       
      Dados da ordem de serviço:

       
      Cada usuário que se cadastra no sistema recebe uma ID auto-incrementada;
      Todo chamado aberto recebe a ID deste usuário para que só ele consiga visualizá-la;
      O número da OS também é auto-incrementada;
       
      Fiz tudo certinho a parte de receber os dados no Mysql (depois de muito trabalho kkkk), mas o que não estou conseguindo fazer é o seguinte:
       
      Preciso que ele me retorne todas as OSs com a ID do cliente (no caso do print, é o cliente 1).
       
      "Ahhh, mas como funciona esse App Inventor?"
      No meu caso, eu criei o php para printar com "echo" cada campo separado por vírgula, e no App Inventor eu faço a separação, ele reconhece que na vírgula ele tem que separar e criar um Index na mesma ordem que ele recebeu as informações. Segue exemplo abaixo:

       
      No caso a variável "os_list" vai receber a lista completa relacionada ao chamado que foi aberto, cada informação seguida da "vírgula", e vai reconhecer que ela é o ponto de separação para gerar a lista.
      No print acima informei que a nona informação deverá vir como uma mensagem na tela. Que seria o "osnum" no meu php:
      <?php include_once "conexao.php"; $id = $_POST['id']; $tipo = $_POST['tipo']; $status = $_POST['status']; $descricao = $_POST['descricao']; $endereco = $_POST['endereco']; $bairro = $_POST['bairro']; $cidade = $_POST['cidade']; $timestamp = date("Y-m-d H-i-s"); $sql1 = $dbcon->query("SELECT * FROM tbos WHERE id='$id'"); $sql2 = $dbcon->query("INSERT INTO tbos(id,tipo,status,descricao,endereco,bairro,cidade,dataabertura) VALUES ('$id','$tipo','$status','$descricao','$endereco','$bairro','$cidade','$timestamp')"); if($sql2) { echo "abertura_os_ok,"; while($dados = $sql1->fetch_array()) { echo $dados['id']; echo ","; echo $dados['tipo']; echo ","; echo $dados['status']; echo ","; echo $dados['descricao']; echo ","; echo $dados['endereco']; echo ","; echo $dados['bairro']; echo ","; echo $dados['cidade']; echo ","; echo $dados['osnum']; echo ","; echo $dados['dataabertura']; } } else { echo "abertura_os_erro"; } ?> Este código está funcionando certinho, o problema é que, do jeito que estou fazendo ele só me retorna a primeira linha da tabela, o que preciso mesmo é que ele selecione todas as linhas que contenham o "$id" do cliente, e imprima todas as linhas com o echo, no App Inventor vou dar um jeito de gerar uma lista com todas as linhas e umas 4 colunas ("osnum", "dataabertura", "datafechamento" e "status").
       
      (Desculpem se meu código está um tanto "simples", eu utilizei o que aprendi nessas duas últimas semanas apenas para o funcionamento do sistema, sei apenas estas funções que usei, pode ser que exista alguma outra coisa que gere da maneira que preciso, mas não sei ainda rs).
       
       
      Fico agradecido desde já, e se precisarem de informações mais específicas me solicitem que mando pra vcs.
       
      Abraço!
    • By Matheus Guermandi Ribeiro
      tabela Chamado
          idChamado
          dataChamado,
          statusChamado,
          descricaoChamado,
          tituloChamado,
          idChamadoPai,
          idRemetente,
          idDestinatario
       
      function historicoChamado($idChamdoFilho) {
          static $ArrayIdChamadoPai = array();
          global $link;
          $cmdAux = "SELECT
                 idChamadoPai
                 FROM Chamado 
                 WHERE idChamado = '$idChamdoFilho'";
          $resultAux = mysqli_query($link, $cmdAux);
          $dadosAux = mysqli_fetch_array($resultAux);
          $idChamadoPai = $dadosAux['idChamadoPai'];
          if ($idChamadoPai != NULL) {
              array_unshift($ArrayIdChamadoPai, $idChamadoPai);
              historicoChamado($idChamadoPai);
          } else {
              return $ArrayIdChamadoPai;
          }
      }
       
       
       
      Preciso que esse array retorno todos os idChamadoPai. Já tentei colocar o ArrayIdChamadoPai como global mais tbm não funciona. Quem puder ajudar salvaria muito 
    • By laloproces
      Boa noite. Segue o texto do método main:
       
      /*O sistema basicamente faz é pedir informções para o usuário, pergutando quantas pessoas vai cadastrar, *qual o nome, telefone, se a pessoa trabalha, pede o cargo e a empresa para no final exibir essas informações na tela. */ public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("Quantas pessoas você vai cadastrar? (Somente números)\n"); int pessoas = (int)in.nextInt(); String[] nome = new String[pessoas]; String[] telefone = new String[pessoas]; String[] profissao = new String[pessoas]; String[] empresa = new String[pessoas]; int op = 0; for(int i=0; i<pessoas; i++) { System.out.println("\nDigite o nome do serumaninho:\n"); nome[pessoas] = in.toString(); //Tá dando erro aqui, provavelmente por causa da variável dinâmica pessoas System.out.println("\nDigite o telefone desse serumaninho:\n"); telefone[pessoas] = in.nextLine(); System.out.println("\nEsse vivente trabalha? (0 para não, 1 para sim)\n"); op = in.nextInt(); if(op == 1){ System.out.println("\nDigite a profissão dele:\n"); profissao[pessoas] = in.nextLine(); System.out.println("\nDigite o nome da empresa em que ele trabalha:\n"); empresa[pessoas] = in.nextLine(); } } for(int j=0; j<pessoas; j++){ if(op ==1){ Pessoa[] p = {new Profissional(nome[j], telefone[j], profissao[j], empresa[j])}; } else{ Pessoa[] p2 = {new Pessoa(nome[j], telefone[j])}; } } for(int h=0; h<pessoas; h++){ if(op==1){ Pessoa[] p = {new Profissional(nome[h], telefone[h], profissao[h], empresa[h])}; System.out.println(Arrays.toString(p)); } else{ Pessoa[] p2 = {new Pessoa(nome[h], telefone[h])}; System.out.println(Arrays.toString(p2)); } } } //Abaixo estão as classes, que estão em outros arquivos Java. public class Pessoa { public String getNome(){ return nome; } public void setNome(String nome){ this.nome = nome; } public String getTelefone(){ return telefone; } public void setTelefone(String telefone){ this.telefone = telefone; } private String nome; private String telefone; Pessoa(String nome, String telefone){ this.nome = nome; this.telefone = telefone; } void exibir(){ System.out.println(getNome()+" :: "+getTelefone()); } } //Abaixo a classe Profissional, derivada da classe Pessoa. public class Profissional extends Pessoa { private String profissao; private String empresa; public String getProfissao(){ return profissao; } public void setProfissao(String profissao){ this.profissao = profissao; } public String getEmpresa(){ return empresa; } public void setEmpresa(String empresa){ this.empresa = empresa; } Profissional(String nome, String telefone, String profissao, String empresa){ super(nome, telefone); this.profissao = profissao; this.empresa = empresa; } @Override public void exibir(){ super.exibir(); System.out.println("\tTrabalha como "+profissao+"no(a) "+empresa+"."); } } Minha dúvida é: como posso corrigir o problema sem tirar a maneira dinâmica do sistema e se da maneira como fiz não irá gerar outros erros ou poderia fazer de uma maneira mais simples.
      Desde já agradeço!
×

Important Information

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