MTavares Posted March 22, 2012 Report Share Posted March 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 Quote Link to comment Share on other sites More sharing options...
0 blew Posted March 22, 2012 Report Share Posted March 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 Quote Link to comment Share on other sites More sharing options...
0 MTavares Posted March 22, 2012 Author Report Share Posted March 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. Quote Link to comment Share on other sites More sharing options...
0 blew Posted March 22, 2012 Report Share Posted March 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 Quote Link to comment Share on other sites More sharing options...
0 MTavares Posted March 22, 2012 Author Report Share Posted March 22, 2012 blew,beleza... funfou... era isso mesmo....obrigado...abs Quote Link to comment Share on other sites More sharing options...
0 MTavares Posted March 22, 2012 Author Report Share Posted March 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 Quote Link to comment Share on other sites More sharing options...
0 MTavares Posted March 23, 2012 Author Report Share Posted March 23, 2012 (edited) 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... Edited March 23, 2012 by MTavares Quote Link to comment Share on other sites More sharing options...
0 MTavares Posted March 23, 2012 Author Report Share Posted March 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 Quote Link to comment Share on other sites More sharing options...
0 Romero Dias Posted March 23, 2012 Report Share Posted March 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 */ Quote Link to comment Share on other sites More sharing options...
0 MTavares Posted March 23, 2012 Author Report Share Posted March 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 Quote Link to comment Share on other sites More sharing options...
0 blew Posted March 23, 2012 Report Share Posted March 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... Quote Link to comment Share on other sites More sharing options...
0 JaguA Posted March 23, 2012 Report Share Posted March 23, 2012 se você tabalha com uma variavel unica isso dentro do foreach$conteudo = .= "Clientes: ".$_POST["NomeClientes"][$a]." \n"; Quote Link to comment Share on other sites More sharing options...
0 JaguA Posted March 23, 2012 Report Share Posted March 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> Quote Link to comment Share on other sites More sharing options...
0 Romero Dias Posted March 23, 2012 Report Share Posted March 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']); } Quote Link to comment Share on other sites More sharing options...
0 MTavares Posted March 23, 2012 Author Report Share Posted March 23, 2012 Olá JaguA e Romero,muito obrigado pelas soluções alternativas que me passaram. Ambas solucionaram o meu desafio....Abraços. Quote Link to comment Share on other sites More sharing options...
Question
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 to comment
Share on other sites
14 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.