Jump to content

Archived

This topic is now archived and is closed to further replies.

asacap1000

Insert multiplica as informações no hora de salvar

Recommended Posts

Galera estou surtando aqui e não tem nem café mais rsrsrs. Preciso de uma ajuda.

 

Tenho um formulário que carrega quase todas as informações vindo do banco. todas elas estão formatadas como array. Também neste formulário constam áreas para preenchimento. Após preencher os dados envio para a página que fará o insert.

 

Chamei as informações na tela e ele me retornou desta forma.

array
  'cod_cliente' => 
    array
      0 => string '457' (length=3)
  'tb_nome' => 
    array
      0 => string 'INTERNATIONAL TECN LTDA' (length=35)
  'tb_cnpj' => 
    array
      0 => string '74404229000854' (length=14)
  'tb_endereco' => 
    array
      0 => string 'LIBERDADE' (length=9)
  'tb_numero' => 
    array
      0 => string '6315' (length=4)
  'tb_bairro' => 
    array
      0 => string 'IPORANGA' (length=8)
  'tb_cep' => 
    array
      0 => string '18087670' (length=8)
  'tb_estado' => 
    array
      0 => string 'SP' (length=2)
  'tb_telefone' => 
    array
      0 => string '15 1234 5678' (length=12)
  'cep_transp' => 
    array
      0 => string '18084125' (length=8)
  'cnpj_transp' => 
    array
      0 => string '0177784598545' (length=14)
  'nome_transp' => 
    array
      0 => string 'TRANSPORTADORA' (length=30)
  'end_transp' => 
    array
      0 => string 'Rodovia Senador' (length=40)
  'numero_transp' => 
    array
      0 => string 'km11110,0' (length=6)
  'bairro_transp' => 
    array
      0 => string 'Iporangaba' (length=8)
  'cid_transp' => 
    array
      0 => string 'Campinas' (length=8)
  'uf_transp' => 
    array
      0 => string 'SP' (length=2)
  'tel_transp' => 
    array
      0 => string '32354884' (length=8)
  'email_transp' => 
    array
      0 => string 'transportes@ALGUAMCOISA' (length=29)
  'tb_email' => 
    array
      0 => string 'deivid.santos@ALGUMACOISA' (length=31)
  'tb_veic' => 
    array
      0 => string '2' (length=1)
  'tb_ajudante' => 
    array
      0 => string 'NAO' (length=3)
  'tb_agenda' => 
    array
      0 => string '28/08/2015 07:00:00' (length=19)
  'tb_doc' => 
    array
      0 => string '  1515165363' (length=12)
  'nome_motor' => 
    array
      0 => string 'MOTORISTA' (length=9)
      1 => string 'MOTORISTA2' (length=10)
  'cpf_motor' => 
    array
      0 => string 'CPF' (length=3)
      1 => string 'CPF2' (length=4)
  'cnh_motor' => 
    array
      0 => string 'CNH' (length=3)
      1 => string 'CNH2' (length=4)
  'val_motor' => 
    array
      0 => string 'VALIDADE' (length=8)
      1 => string 'VALIDADE2' (length=9)
  'plcav' => 
    array
      0 => string 'VEICULO' (length=8)
      1 => string 'VEICULO2' (length=9)
  'plcar' => 
    array
      0 => string 'CARRETA' (length=7)
      1 => string 'CARRETA2' (length=8)
  'bitr' => 
    array
      0 => string 'BITREM' (length=6)
      1 => string 'BITREM2' (length=7)
  'cont' => 
    array
      0 => string 'CONTAINER' (length=9)
      1 => string 'CONTAINER2' (length=10)
  'envia' => string 'Enviar' (length=6)
Enviar

Verificando as informações acima pode ver que quando entra as informações de motorista elas me trazem duas linhas cada, até aí perfeito pois se trata de um carregamento e serão utilizados dois veículos.

Salvando no Mysql ele teria que salvar duas linhas repetindo as informações acima e alterando apenas os dados duplicados. Porém quando salvo ele multiplica, triplica, quadriplica e assim vai, fica uma bagunça no banco. o que eu preciso fazer para que isso não aconteça?

 

abaixo o insert que estou utilizando.

//DADOS DA EMRPESA - VARIÁVEL-
foreach($_POST['cod_cliente'] as $dados => $cod_cliente) {
foreach($_POST['tb_nome'] as $dados => $tb_nome) {
foreach($_POST['tb_cnpj'] as $dados => $tb_cnpj) {
foreach($_POST['tb_endereco'] as $dados => $tb_endereco) {
foreach($_POST['tb_numero'] as $dados => $tb_numero) {
foreach($_POST['tb_bairro'] as $dados => $tb_bairro) {
foreach($_POST['tb_cep'] as $dados => $tb_cep) {
foreach($_POST['tb_estado'] as $dados => $tb_estado) {
foreach($_POST['tb_telefone'] as $dados => $tb_telefone) {
foreach($_POST['tb_email'] as $dados => $tb_email) {
foreach($_POST['tb_doc'] as $dados => $tb_doc) {
 
//DADOS DA TRANSPORTADORA - VARIÁVEL-
foreach($_POST['nome_transp'] as $dados => $nome_transp) {
foreach($_POST['cnpj_transp'] as $dados => $cnpj_transp) {
foreach($_POST['cep_transp'] as $dados => $cep_transp) {
foreach($_POST['end_transp'] as $dados => $end_transp) {
foreach($_POST['bairro_transp'] as $dados => $bairro_transp) {
foreach($_POST['cid_transp'] as $dados => $cid_transp) {
foreach($_POST['numero_transp'] as $dados => $numero_transp) {
foreach($_POST['uf_transp'] as $dados => $uf_transp) {
foreach($_POST['tel_transp'] as $dados => $tel_transp) {
foreach($_POST['email_transp'] as $dados => $email_transp) {
foreach($_POST['tb_agenda'] as $dados => $tb_agenda) {
//DADOS DO MOTORISTA - VARIÁVEL-
foreach($_POST['nome_motor'] as $dados => $nome_motor) {
foreach($_POST['cpf_motor'] as $dados => $cpf_motor) {
foreach($_POST['cnh_motor'] as $dados => $cnh_motor) {
foreach($_POST['val_motor'] as $dados => $val_motor) {  
//DADOS DO VEÍCULO - VARIÁVEL-
foreach($_POST['plcar'] as $dados => $plcar) {
foreach($_POST['plcav'] as $dados => $plcav) {
foreach($_POST['bitr'] as $dados => $bitr) {
foreach($_POST['cont'] as $dados => $cont) {
 
$insert = "INSERT INTO ordem (cod_cliente, tb_nome, tb_cnpj, tb_endereco, tb_numero, tb_bairro, tb_cep, tb_estado, tb_telefone, tb_email, datacoleta, tb_doc, nome_transp, cnpj_transp, cep_transp, end_transp, numero_transp, bairro_transp, cid_transp, uf_transp, tel_transp, email_transp, nome_motor, cpf_motor, cnh_motor, val_motor, plcar, plcav, bitr, cont)
VALUES
('$cod_cliente', '$tb_nome', '$tb_cnpj', '$tb_endereco', '$tb_numero', '$tb_bairro', '$tb_cep', '$tb_estado', '$tb_telefone', '$tb_email', '$tb_agenda', '$tb_doc', '$nome_transp', '$cnpj_transp', '$cep_transp', '$end_transp', '$numero_transp', '$bairro_transp', '$cid_transp', '$uf_transp', '$tel_transp', '$email_transp', '".$nome_motor."', '".$cpf_motor."', '".$cnh_motor."', '".$val_motor."', '".$plcar."', '".$plcav."', '".$bitr."', '".$cont."')"; mysql_query ($insert) or die (mysql_error() .'<BR><BR>ERRO - NÃO FOI POSSIVEL ENVIAR OS DADOS') ; }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}

Se puderem me ajudar...

Share this post


Link to post
Share on other sites

Realizei algumas alterações porém agora ele está gravando apenas a ultima entrada do formulário, se tiverem dois motoristas por exemplo ele pega apenas o ultimo e lança.

 

Ela está trazendo desta forma agora.

array
  'cod_cliente' => string '457' (length=3)
  'tb_nome' => string 'INTERNATIONAL TECN LTDA' (length=35)
  'tb_cnpj' => string '744xxxxxxxx51' (length=14)
  'tb_endereco' => string 'LIBERDADE' (length=9)
  'tb_numero' => string '6315' (length=4)
  'tb_bairro' => string 'IPORANGABA' (length=8)
  'tb_cep' => string '18087190' (length=8)
  'tb_estado' => string 'SP' (length=2)
  'tb_telefone' => string '15 0009 0577' (length=12)
  'cep_transp' => string '18000125' (length=8)
  'cnpj_transp' => string '0100000000196' (length=14)
  'nome_transp' => string 'SERVICOS LT' (length=30)
  'end_transp' => string 'Rodovia Senador de Moraes' (length=40)
  'numero_transp' => string 'km' (length=6)
  'bairro_transp' => string 'Iporangaba' (length=8)
  'cid_transp' => string 'Sorocaba' (length=8)
  'uf_transp' => string 'SP' (length=2)
  'tel_transp' => string '32354884' (length=8)
  'email_transp' => string 'transportes@....' (length=29)
  'tb_email' => string 'deivid.santos@....' (length=31)
  'tb_veic' => string '2' (length=1)
  'tb_ajudante' => string 'NAO' (length=3)
  'tb_agenda' => string '01/09/2015 09:00:00' (length=19)
  'tb_doc' => string '  1515854869' (length=12)
  'nome_motor' => 
    array
      0 => string 'MOTORISTA' (length=9)
      1 => string 'MOTORISTA2' (length=10)
  'cpf_motor' => 
    array
      0 => string 'CPF' (length=3)
      1 => string 'CPF2' (length=4)
  'cnh_motor' => 
    array
      0 => string 'CNH' (length=3)
      1 => string 'CNH2' (length=4)
  'val_motor' => 
    array
      0 => string 'VALIDADE' (length=8)
      1 => string 'VALIDADE2' (length=9)
  'plcav' => 
    array
      0 => string 'VEÃCULO' (length=8)
      1 => string 'VEÃCULO2' (length=9)
  'plcar' => 
    array
      0 => string 'CARRETA' (length=7)
      1 => string 'CARRETA2' (length=8)
  'bitr' => 
    array
      0 => string 'BITREM' (length=6)
      1 => string 'BITREM2' (length=7)
  'cont' => 
    array
      0 => string 'CONTAINER' (length=9)
      1 => string 'CONTAINER2' (length=10)
457
INTERNATIONAL TECN LTDA
748978985551
LIBERDADE
6315
IPORANGABA
18087170
SP
15 0000 0577
00087125
00000036000196
 E SERVICOS LT
Rodovia Senado de Moraes
km10,2
Iporanga
Sorocaba
SP
32354884
transportes@.....
deivid.santos@.....
2
NAO
01/09/2015 09:00:00
  1515098569
Array
(
    [0] => MOTORISTA
    [1] => MOTORISTA2
)
Array
(
    [0] => CPF
    [1] => CPF2
)
Array
(
    [0] => CNH
    [1] => CNH2
)
Array
(
    [0] => VALIDADE
    [1] => VALIDADE2
)
Array
(
    [0] => VEÃCULO
    [1] => VEÃCULO2
)
Array
(
    [0] => CARRETA
    [1] => CARRETA2
)
Array
(
    [0] => BITREM
    [1] => BITREM2
)
Array
(
    [0] => CONTAINER
    [1] => CONTAINER2
)

Se puderem me dar uma ajuda aí...

Share this post


Link to post
Share on other sites

Mostra como esta fazendo

Estou fazendo desta forma.

//DADOS DA EMRPESA-
$cod_cliente   = $_GET['cod_cliente'];
$tb_nome       = $_GET['tb_nome'];
$tb_cnpj       = $_GET['tb_cnpj']; 
$tb_endereco   = $_GET['tb_endereco']; 
$tb_numero     = $_GET['tb_numero'];   
$tb_bairro     = $_GET['tb_bairro'];   
$tb_cep        = $_GET['tb_cep'];   
$tb_estado     = $_GET['tb_estado']; 
$tb_telefone   = $_GET['tb_telefone'];  
$tb_email      = $_GET['tb_email'];   
//DADOS DA TRANSPORTADORA -
$nome_transp = $_GET['nome_transp'];   
$cnpj_transp = $_GET['cnpj_transp'];   
$cep_transp  = $_GET['cep_transp'];   
$end_transp  = $_GET['end_transp'];
$bairro_transp  = $_GET['bairro_transp'];
$cid_transp  = $_GET['cid_transp'];
$numero_transp  = $_GET['numero_transp']; 
$uf_transp   = $_GET['uf_transp']; 
$tel_transp   = $_GET['tel_transp']; 
$email_transp   = $_GET['email_transp']; 
$tb_agenda = $_GET['tb_agenda'];
$tb_doc = $_GET['tb_doc'];

{
//DADOS DO MOTORISTA E VEICULOS-
foreach($_GET['nome_motor'] as $indice => $nome_motor) 
foreach($_GET['cpf_motor'] as $indice => $cpf_motor) 
foreach($_GET['cnh_motor'] as $indice => $cnh_motor) 
foreach($_GET['val_motor'] as $indice => $val_motor)  
foreach($_GET['plcar'] as $indice => $plcar) 
foreach($_GET['plcav'] as $indice => $plcav) 
foreach($_GET['bitr'] as $indice => $bitr) 
foreach($_GET['cont'] as $indice => $cont)
	
	
		
$insert =  "INSERT INTO ordem  (cod_cliente, tb_nome, tb_cnpj, tb_endereco, tb_numero, tb_bairro, tb_cep, tb_estado, tb_telefone, tb_email, datacoleta, tb_doc, nome_transp, cnpj_transp, cep_transp, end_transp, numero_transp, bairro_transp, cid_transp, uf_transp, tel_transp, email_transp, nome_motor, cpf_motor, cnh_motor, val_motor, plcar, plcav, bitr, cont) 
VALUES 
('$cod_cliente', '$tb_nome', '$tb_cnpj', '$tb_endereco', '$tb_numero', '$tb_bairro', '$tb_cep', '$tb_estado', '$tb_telefone', '$tb_email', '$tb_agenda', '$tb_doc', '$nome_transp', '$cnpj_transp', '$cep_transp', '$end_transp', '$numero_transp', '$bairro_transp', '$cid_transp', '$uf_transp', '$tel_transp', '$email_transp', '".$nome_motor."', '".$cpf_motor."', '".$cnh_motor."', '".$val_motor."', '".$plcar."', '".$plcav."', '".$bitr."', '".$cont."')";		
		mysql_query ($insert) or die (mysql_error() .'<BR><BR>ERRO - NÃO FOI POSSIVEL ENVIAR OS DADOS') ;
	
}
	mysql_close($db); 

	?>

Share this post


Link to post
Share on other sites

você pôs um loop dentro de outro

logo ele vai fazer varios insert

Então como seria o correto, ja tentei mudar essas chaves pra tudo que é canto e nada. Se eu colocar a chave após

foreach($_GET['nome_motor'] as $indice => $nome_motor)

 

ele grava as duas linhas para o caso de dois motorista, porém o restante cadastra o ultimo registro.

 

Ele deveria cadastrar

motorista1 - veiculo1 etc...

motorista2 - veiculo2 etc...

 

mas ele está gravando...

motorista1 - veiculo2 etc...

motorista2 - veiculo2 etc...

 

Se puder me orientar como deve ser feito vou ganhar a semana.

Share this post


Link to post
Share on other sites

Vou dar uma ideia próxima do que vc usará

tenta isso

vc precisaria fazer o um loop no array com maior numero de itens

ex:

$qtd = count($_GET['nome_motor']) //maior 

for($i = 0; $i <= $qtd; $i++){
//insere 
//repete as variaveis 
//e a cada passada pega pelo indice numerico
//ex:
//$_GET['cpf_motor'][$i], $_GET['nome_motor'][$i] etc.
}

Share this post


Link to post
Share on other sites

 

Vou dar uma ideia próxima do que você usará

tenta isso

você precisaria fazer o um loop no array com maior numero de itens

ex:

$qtd = count($_GET['nome_motor']) //maior 

for($i = 0; $i <= $qtd; $i++){
//insere 
//repete as variaveis 
//e a cada passada pega pelo indice numerico
//ex:
//$_GET['cpf_motor'][$i], $_GET['nome_motor'][$i] etc.
}

 

 

Vou dar uma ideia próxima do que você usará

tenta isso

você precisaria fazer o um loop no array com maior numero de itens

ex:

$qtd = count($_GET['nome_motor']) //maior 

for($i = 0; $i <= $qtd; $i++){
//insere 
//repete as variaveis 
//e a cada passada pega pelo indice numerico
//ex:
//$_GET['cpf_motor'][$i], $_GET['nome_motor'][$i] etc.
}

Meu amigo você fez eu ganhar a semana com essa sua ajuda....perfeito. olha como ficou.

$qtd = count($_GET['nome_motor']); //maior
 
for ($i=0; $i<$qtd; $i++){

$nome_motor = $_GET['nome_motor'][$i];	
$cpf_motor = $_GET['cpf_motor'][$i];	
$cnh_motor = $_GET['cnh_motor'][$i];
$val_motor = $_GET['val_motor'][$i];
$plcar = $_GET['plcar'][$i];
$plcav = $_GET['plcav'][$i];
$bitr = $_GET['bitr'][$i];
$cont = $_GET['cont'][$i];
		
$insert =  "INSERT INTO ordem  (cod_cliente, tb_nome, tb_cnpj, tb_endereco, tb_numero, tb_bairro, tb_cep, tb_estado, tb_telefone, tb_email, datacoleta, tb_doc, nome_transp, cnpj_transp, cep_transp, end_transp, numero_transp, bairro_transp, cid_transp, uf_transp, tel_transp, email_transp, nome_motor, cpf_motor, cnh_motor, val_motor, plcar, plcav, bitr, cont) 
VALUES 
('$cod_cliente', '$tb_nome', '$tb_cnpj', '$tb_endereco', '$tb_numero', '$tb_bairro', '$tb_cep', '$tb_estado', '$tb_telefone', '$tb_email', '$tb_agenda', '$tb_doc', '$nome_transp', '$cnpj_transp', '$cep_transp', '$end_transp', '$numero_transp', '$bairro_transp', '$cid_transp', '$uf_transp', '$tel_transp', '$email_transp', '{$nome_motor}', '{$cpf_motor}', '{$cnh_motor}', '{$val_motor}', '{$plcar}', '{$plcav}', '{$bitr}', '{$cont}')";		
		mysql_query ($insert) or die (mysql_error() .'<BR><BR>ERRO - NÃO FOI POSSIVEL ENVIAR OS DADOS') ;

		
}

Share this post


Link to post
Share on other sites

  • Similar Content

    • By EvertonFD
      Olá alguém pode me ajudar?
      estou tentando pegar valores do check box selecionado e por no banco de dados a questão é que:
      Quando eu faço uma seleção vai de boa quando seleciono mais de uma fica tudo em branco.
      estou usando esse codigo:
      <?php if(isset($_POST['submit'])){ if(!empty($_POST['checkArr'])){ foreach($_POST['checkArr'] as $checked){ echo $checked . '<br>'; } } else { echo '<div class="error">Checkbox is not selected!</div>'; } } ?> <div class=" form-row"> <div class="col-md-4 text-left"> <div class="form-check col-md-12"> <input class="form-check-input" type="checkbox" name="checkArr[]" value="Iluminação Publica"> <label class="form-check-label" for="gridCheck"> Iluminação Publica </label> </div> <div class="form-check col-md-12"> <input class="form-check-input" type="checkbox" name="checkArr[]" value="Saneamento Basíco"> <label class="form-check-label" for="gridCheck"> Saneamento Basíco </label> </div> <div class="form-check col-md-12"> <input class="form-check-input" type="checkbox" name="checkArr[]" value="Alamentos"> <label class="form-check-label" for="gridCheck"> Alagamentos </label> </div> //que vai para o insert: <?php session_start(); include_once("../conexao.php"); $nome = filter_input(INPUT_POST, 'nome', FILTER_SANITIZE_STRING); $email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL); $tel = filter_input(INPUT_POST, 'telefone', FILTER_SANITIZE_STRING); $bairro = filter_input(INPUT_POST, 'bairro', FILTER_SANITIZE_STRING); $end = filter_input(INPUT_POST, 'end', FILTER_SANITIZE_STRING); //--------------------------------- $problema = filter_input(INPUT_POST, 'checkArr[]', FILTER_SANITIZE_STRING); $observacao = filter_input(INPUT_POST, 'observacao', FILTER_SANITIZE_STRING); //--------------------------------- //$resposta = filter_input(INPUT_POST, 'resposta', FILTER_SANITIZE_STRING); $result_usuario = "INSERT INTO itaim ( nome, email, telefone, bairro, rua_cep, problemas, detalhes, created) VALUES ('$nome', '$email' , '$tel' , '$bairro' , '$end' , '$problema' , '$observacao' , NOW())"; $resultado_usuario = mysqli_query($conn, $result_usuario); if(mysqli_insert_id($conn)){ $_SESSION['msg'] = "<p style='color:green;'>Menssagem envida</p>"; header("Location: ../index.php"); }else{ header("Location: ../index.php"); //$_SESSION['msg'] = "<p style='color:red;'>Houve um errono envio favor informar.</p>"; } Quem puder me ajudar agradeço muito
       
    • By juliosertori
      Amigos, estou utilizando um sistema de FormValidation, e vem pronta algumas coisas, mas estou com dúvida:
       
      Como pego os dados desse POST no PHP?
       
      FormValidation.utils.fetch(formSubmitUrl, { method: 'POST', dataType: 'json', params: { name: form.querySelector('[name="username"]').value, email: form.querySelector('[name="password"]').value, }, }) Obrigado!
    • By msergioaguiar
      boa noite a todos

      hoje um cliente me procurou querendo um sistema.
      ele Trabalha com aposta esportiva ele quer um sistema q quando ele fazer a aposta na conta dele esta aposta seja feita em varios outros usuarios q esta logados em pcs na intarnet.

      Gostaria de uma ajuda como vou fazer isso mais gostei muito do projeto

      desde ja fico muito grato a todos pela ajuda
    • By Usleydocarmo
      Estou com o seguinte erro:
      Ao acessar o meu site na pagina principal tudo ok. Porém quando acesso em um menu que vai carregar um arquivo que está em uma pasta e não na pasta raiz, ai o arquivo css não é carregado.
       
      <a href="usuarios"> home</a> chamo o arquivo funcionarios na mesma pasta onde está o arquivo index.php -funciona
      <a href="usuarios/usuarios"> home</a>  Pasta 'usuarios' e dentro dela chamo o arquivo 'usuarios' - ai não funciona
       
      Descobri que quando entro na pasta usuários fica assim, com a basta no diretório do arquivo. Como corrigir?
      <link rel="stylesheet" href="http://localhost/keiri/admin/usuarios/plugins/fontawesome-free/css/all.min.css&nbsp;">
       
      Meu htaccess
      RewriteRule ^([a-z]+)\/?$ dashboard.php?arquivo=$1 [NC,L]
      RewriteRule ^([a-z]+)\/([a-z]+)$ dashboard.php?pasta=$1&arquivo=$2 [NC,L]
      RewriteRule ^([a-z]+)\/([a-z]+)\/([0-9]+)$ dashboard.php?pasta=$1&arquivo=$2&item=$3 [NC,L]
    • By msantino
      Bom dia.
       
      Estou desenvolvendo uma aplicação que vai acessar e gravar dados via webservice dentro do nosso crm... mas estou com um problema que quando tento fazer o acesso mostra a seguinte mensagem de erro:
       
      Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing Schema: can't import schema from 'http://dsksp015.phonoway.com.br:8051/wsDataServer/mex?xsd=xsd0' in /home/httpd/html/phonoweb.com.br/public_html/carrinhobitrix_busca/teste_soap.php:113 Stack trace: #0 /home/httpd/html/phonoweb.com.br/public_html/carrinhobitrix_busca/teste_soap.php(113): SoapClient->SoapClient('http://187.93.2...') #1 {main} thrown in /home/httpd/html/phonoweb.com.br/public_html/carrinhobitrix_busca/teste_soap.php on line 113
       
      Não sei se faz alguma diferença, mas nosso CRM é o TOTVS RM
       
      Grato.
×

Important Information

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