MTavares Postado Março 22, 2012 Denunciar Share Postado Março 22, 2012 Pessoal,é o seguinte, tenho um foreach que vem de um campo. Gostaria de pegar os dados de dentro de foreach e colocar dentro de um determinado campo da tabela em mysql. Se eu colocar o insert dentro do foreach, ele duplica o cadastro. Ex:<?php foreach($Nome as $NomeCliente){ $NomeClientes = $NovosCliente; } $sqlCadastrar = mysql_query("INSERT...."); ?> <input type="text" name="Nome[]" value="">Tem solução para esse caso?!?!? rsrsrsrsrsVlw Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 blew Postado Março 22, 2012 Denunciar Share Postado Março 22, 2012 voce colocou foreach($Nome as $NomeCliente){ $NomeClientes = $NovosCliente; }tem um "s" no final da variavel dentro do foreach...e se você quiser inserir no banco, cada cliente, tem que colocar o insert dentro do foreach também Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MTavares Postado Março 22, 2012 Autor Denunciar Share Postado Março 22, 2012 Olá blew,na verdade foi erro de digitação na hora de postar aqui. O que quero na verdade não é ter um registro para cada cliente, mas um registro que armazene todos os clientes em um só campo. Por ex:foreach($Nome as $NomeCliente){ $NomeClientes = $NomeCliente; } Em vez de: insert into tabela values(null, '$NomeClientes 1'); insert into tabela values(null, '$NomeClientes 2'); insert into tabela values(null, '$NomeClientes 3'); Gostaria de que ficasse dessa forma: insert into tabela values(null, '$NomeClientes 1,$NomeClientes 2, $NomeClientes 3');Abs. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 blew Postado Março 22, 2012 Denunciar Share Postado Março 22, 2012 cara, pelo que eu sei , isso não é possivel, pois desse modo que você quer, você ta inserindo vários campos, e não apenas um unico que você quer, q é o nome do clientevocê teria que dar um insert pra cada cliente... provavelmente, se fisse o foreach, e dentro do foreach você criasse um for pra ele puxar o nome do cliente no array e colocasse a instrução de insert dentro do foreach..também não sei direito, meu nivel não é tão avançado assim heheheeu estou para sair de casa, senao testaria o código para vcmas vai tentando cara.. procura tutoriais na internet, é o unico jeito de aprender :)aff, desconsidera a mensagem acima, viajei total...seria na verdade:$NomeClientes[1] $NomeClientes[2] etcquando se trata de um array(), você usa o [chave_posição] para indicá-lo no array..assim você resgata os nome e insere em um só campo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MTavares Postado Março 22, 2012 Autor Denunciar Share Postado Março 22, 2012 blew,beleza... funfou... era isso mesmo....obrigado...abs Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MTavares Postado Março 22, 2012 Autor Denunciar Share Postado Março 22, 2012 Olá blew,funfou, mas na minha situação ainda esbarro com um obstáculo. Os campos são gerados automaticamente conforme o usuário escolher. Por ex: No formulário tem um campo que diz: Quantas pessoas irão viajar? Ao selecionar por ex 3, aparecerão 03 campos do tipo array, Veja:<input type="text" name="NomeCliente[]"> Após isso, ele preenche o restante dos campos e dá OK. Ao apertar o botão cadastrar, ele vai para o PHP, do qual usei o código que debatemos aqui. Até aqui tudo bem, porém esbarro no seguinte dilema, veja: foreach($Nome as $NomeCliente){ $NomeClientes = $NomeCliente; } $clientesUsuarios = $NomeClientes[1]. ",".$NomeClientes[2]; E se o cliente escolher por ex. 5 pessoas, como irei criar o array para colocar na variável clienteUsuarios para ficar: $clientesUsuarios = $NomeClientes[1]. ",".$NomeClientes[2]. ",".$NomeClientes[3]. ",".$NomeClientes[4]. ",".$NomeClientes[5];Quero pegar essa variável e colocar dentro de um campo mencionado anteriormente. Isso não estou conseguindo....Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MTavares Postado Março 23, 2012 Autor Denunciar Share Postado Março 23, 2012 (editado) Pensei em gravar no txt e depois jogar no campo do banco de dados. Não sei se seria o certo, porém ao fazer, só grava o primeiro valor:for($a = 0; $a < count($_POST["NomeClientes"]); $a++){ $clientes = $_POST["NomeClientes"][$a]; $abrir =fopen("clientestxt.txt",w); $array = fwrite($abrir,$clientes); fclose($abrir); }Realmente as minhas opções estão se esgotando... :(Consegui gravar no TXT... troquei o w pela letra a... Editado Março 23, 2012 por MTavares Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MTavares Postado Março 23, 2012 Autor Denunciar Share Postado Março 23, 2012 Pessoal,consegui resolver, porém quero pedir aos moderadores para não fechar esse tópico, pois fiz da seguinte forma: for($a = 0; $a < count($_POST["NomeClientes"]); $a++){ $clientes = $_POST["NomeClientes"][$a]; $abrir =fopen("ClientesTXT.txt","a"); $gravar = fwrite($abrir,$clientes); fclose($abrir); } $abrir = fopen ("ClientesTXT.txt","r"); $conteudo = fread ($abrir, filesize ("ClientesTXT.txt")); $sqlCadastrar = mysql_query(sprintf("INSERT INTO tabela VALUES('%s','%s','%s','%s','%s',)",valor1,valor2,valor3,[b]$conteudo[/b],valorn));Particularmente não gostei muito dessa solução, mas se alguém tiver uma outra solução que não tenha que gravar em um arquivo txt ou sessões e cookies, agradeço....abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romero Dias Postado Março 23, 2012 Denunciar Share Postado Março 23, 2012 Bom, não sei se entendi direito. Você possui uma página HTML que contém um formulário onde existem vários elementos do tipo TEXT com o nome "NomeClientes". Você quer recupera essa informação no PHP e colocar cada nome de cliente separando-os por vírgula?<?php $arrClientes = array('Cliente 1','Cliente 2','Cliente 3','Cliente 4'); echo implode(',',$arrClientes); /* * O resultado será: Cliente 1,Cliente 2,Cliente 3,Cliente 4 */ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MTavares Postado Março 23, 2012 Autor Denunciar Share Postado Março 23, 2012 Olá Romero,eu tenho um formulário aonde um dos campos é um combobox, do qual o usuário escolhe em qtos eventos quer participar. Esse campo é dinâmico, ou seja, vamos supor que o administrador do site cadastre 5 eventos, logo no combobox irá aparecer 5 options de com os números de 1 a 5 como valor. O usuário quer participar em 3 eventos, então ele selecionar o número 03 e aparecerá 3 campos texto para preencher com os nomes. <input type="text" name="NomeCliente"> Só que quero pegar esses nomes do campo texto e adicionar em uma tabela. Se eu colocar dentro do foreach conforme citado nos posts anteriores, irei dar 03 "insert's", quando na verdade quero dar apenas um insert e dentro do campo da tabela "NomeParticipantes", ficasse dessa forma: $sqlCadastrar = mysql_query(sprintf("INSERT INTO tabela VALUES('%s','%s','%s','%s','%s',)",valor1,valor2,valor3,'[b]NomeCliente 1,NomeCliente 2,NomeCliente 3[/b]',valorn));A única solução está no post anterior, do qual uso o txt para fazer essa inserção, porém não estou satisfeito com essa solução. Se tiver outra solução que não use txt, sessão ou cookie, será melhor do que essa que fiz.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 blew Postado Março 23, 2012 Denunciar Share Postado Março 23, 2012 cara, na verdade, eu não sei se campo de texto aceita isso que voce quer..o uso de value = "lalala[]", pelo que eu conheço, é só usado em checkbox..mas enfim, como eu falei, meu conhecimento é de programador junior, então eu posso estar errado...se voce conseguir colocar o codigo todo ai, seria melhor..porque eu copio e colo aqui, e tento resolver também...visualizando a pagina fica ateh melhor pra eu entender direito o que voce quer... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JaguA Postado Março 23, 2012 Denunciar Share Postado Março 23, 2012 se você tabalha com uma variavel unica isso dentro do foreach$conteudo = .= "Clientes: ".$_POST["NomeClientes"][$a]." \n"; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JaguA Postado Março 23, 2012 Denunciar Share Postado Março 23, 2012 Montei esse codigo bem simples, só para você entender.a primeira mensagem recebe a criaçao da variavel então na ARRAY é 0 fixo ou seja primeiro apontamento. na hora de percorrer a array voce já na comeca do 0 porque já foi colocado na variavel mensagem, sendo assim comecamos do 1 ... espero que resolva seu problema ^^.<?php if($_POST) { $a = 1; $mensagem = "Clientes: ".$_POST['NomeCliente'][0]." \n"; while($a <= 2 ) { $mensagem .= "Clientes: ".$_POST['NomeCliente'][$a]." \n"; $a++; } } ?> <?php echo $mensagem; ?> <form action="" method="post"> <input type="text" name="NomeCliente[]"> <input type="text" name="NomeCliente[]"> <input type="text" name="NomeCliente[]"> <input type="submit" /> </form> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romero Dias Postado Março 23, 2012 Denunciar Share Postado Março 23, 2012 Da uma olhada se te ajuda! Faça o teste!<html> <body> <form method="post" ACTION="teste.php"> Cliente 1: <br/> <INPUT TYPE="text" NAME="Cliente[]"/><br/> Cliente 2: <br/> <INPUT TYPE="text" NAME="Cliente[]"/><br/> Cliente 3: <br/> <INPUT TYPE="text" NAME="Cliente[]"/><br/> <INPUT TYPE="submit" VALUE="Entrar"/> </form> </body> </html> <?php if($_POST['Cliente']){ echo implode(',',$_POST['Cliente']); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MTavares Postado Março 23, 2012 Autor Denunciar Share Postado Março 23, 2012 Olá JaguA e Romero,muito obrigado pelas soluções alternativas que me passaram. Ambas solucionaram o meu desafio....Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
MTavares
Pessoal,
é o seguinte, tenho um foreach que vem de um campo. Gostaria de pegar os dados de dentro de foreach e colocar dentro de um determinado campo da tabela em mysql. Se eu colocar o insert dentro do foreach, ele duplica o cadastro. Ex:
Tem solução para esse caso?!?!? rsrsrsrsrs
Vlw
Link para o comentário
Compartilhar em outros sites
14 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.