Ir para conteúdo

POWERED BY:

Arquivado

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

Guarde

Adicao de multiplos campos

Recommended Posts

bem, inicialmente, é meu primeiro post, nao sei se postei na area certa, se nao foi desculpa, mova por favor..

 

bem, eu queria algo simples por exemplo, tenho uma pagina de cadastro, aonde insere nome e email,

queria que ela inserisse mais de um nome e email por vez, sem ter que copiar novamente o codigo

de insert na db alterando os valores.

 

exemplo.

 

nome :

email:

 

adicionar mais

 

quando clica em adicionar mais ele cria novos campos, quantos eu clicar, e que nao seja limitado e nem necessario ter que editar toda vez manualmente o php de insert para poder inserir mais de um campo...

 

acho que deu para entender, se nao deu um exemplo disso, seria sites de upload de imagem, voce clica em mais e libera outro campo, e nao prescisam editar manualmente..para ser inserido o registro no banco de dados

 

Agradeço a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para adicionar mais campos quando o usuário clicar para adicionar você usa Javascript, eu costumo utilizar a biblioteca jQuery pra fazer isso.

 

Para tratar os dados recebidos no PHP é simples, você usa um array em vez de ter um nome diferente pra cada campo.

 

Por exemplo, no HTML deve ficaria assim:

 

<input type="text" name="email[]" /><br />
<input type="text" name="email[]" /><br />
<input type="text" name="email[]" /><br />

 

No PHP você vai receber um array contendo os e-mails:

var_dump($_POST['email']);

 

Depois disso basta você tratar esses dados e utilizar conforme a sua necessidade.

 

Um abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixa eu ver se entendi, o codigo ficaria mais ou menos assim

o php

 

<?

@$nome = var_dump($_POST['nome']);

 

@$email = var_dump($_POST['email']);

 

mysql_query("INSERT INTO usuarios (nome,email)VALUES('$nome','$email')");

?>

 

mas e o html, como eu faria para aparecer so quando eu clicar em adicionar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

$_POST['nome'] e $_POST['email'] serão arrays, você tem que tratá-las:

// Para cada par de $nome e $email, inserir um registro
foreach ($_POST['nome'] as $i => $nome) {
 $email = $_POST['email'][$i];
 // Agora você tem o par $nome e $email e pode fazer sua lógica de inserção no banco de dados
}

 

mas e o html, como eu faria para aparecer so quando eu clicar em adicionar?

O modo mais prático seria adicionar via Javascript ao clicar nesse botão adicionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu me perdi

Você ainda nem se encontrou...

 

alguem pode fazer pra mim *-*

Com todo o respeito, espero que queime no inferno. :) [1]

Compartilhar este post


Link para o post
Compartilhar em outros sites
eu me perdi

 

Você ainda nem se encontrou...

por isso mesmo to perdido

 

Com todo o respeito, espero que queime no inferno.

gente egoista é assim mesmo <_<

 

dificil, estar aprendendo php, e ver um comentario desse...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não perde algo que nunca encontrou. E com essa posição, nunca vai encontrar aquilo que acha que perdeu.

 

Estas duas declarações suas são contraditórias:

alguem pode fazer pra mim *-*
estar aprendendo php

 

É difícil ver um comentário desse sim, mas espero que no futuro você volte aqui e ajude outros novatos a se encontrarem com as próprias pernas.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Você não perde algo que nunca encontrou. E com essa posição, nunca vai encontrar aquilo que acha que perdeu.

quem disse que eu perdi algo, oq eu me referi foi que eu me perdi na explicacao nao um codigo ou algo do tipo

 

soobre oq você fala sobre contradicao, sim to aprendendo aos poucos php, mas eu perguntei justamente porque nao sei, vocês falaram, e eu nao entendi, por isso peerguntei se poderia fazer ja que para vcs é algo facil,

Compartilhar este post


Link para o post
Compartilhar em outros sites

comente apenas o que for somar ao topico!

ele esta num forum, não sabe e deseja saber, tem todo direito de pedir alguma coisa, se alguem vai fazer já são outros 500... se nao quer ajudar o cara, simplesmente ignore-o

 

Guarde

o que você quer pronto?

o js ou o php?

Compartilhar este post


Link para o post
Compartilhar em outros sites

soobre oq você fala sobre contradicao, sim to aprendendo aos poucos php, mas eu perguntei justamente porque nao sei, vocês falaram, e eu nao entendi, por isso peerguntei se poderia fazer ja que para vcs é algo facil,

Você não vai aprender a pescar recebendo o peixe na mão. De códigos prontos o Oráculo tá saturado. A grande vantagem de um fórum de discussão é compartilhar e discutir conhecimento. Se não entendeu ainda, se esforce um pouco mais, exponha sua dúvida.

 

Entenda o seguinte: eu já fui muito ajudado em forums, ajuda de verdade, que me fizeram aprender, e hoje procuro retribuir... O que eu quero é que você volte aqui no futuro e ajude os outros, de verdade.

 

Volte aos posts antes da sua declaração, procure entendê-los e exponha sua dúvida. Daqui há 1 ano você voltará aqui e _ajudará_ alguém a encontrar uma solução, afinal, você já vai saber se encontrar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que muitos não perceberam, inclusive eu no começo, é que aqui é um local para APRENDER a fazer o código e não receber ele pronto, para isto existem inúmeros free-lancers que podem lhe dar o código todo bonitinho (por um preço é claro :P).

 

O que o nosso amigo tentou mostrar, é que se a intenção do usuário for postar esperando receber o código pronto, ele vai queimar no inferno de esperar. :lol:

 

Mas voltando no assunto, o próprio comentário incluído no código está mostrando como fazer, apenas veja o código que você postou e depois o código mostrado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpe, pela pequena discursao, o que eu queria era apenas o JS para poder implementar, mas eu vo te que continuar na mesma, pois nao entendo nada de JS.

 

mas tudo bem, eu me viro do jeito que eu do conta, obrigado a todos que postaram...

JCMais

Mas voltando no assunto, o próprio comentário incluído no código está mostrando como fazer, apenas veja o código que você postou e depois o código mostrado.

ou ja que nao postem o JS, mas como to iniciando queria que explicassem um pouco só mais detalhado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpe, pela pequena discursao, o que eu queria era apenas o JS para poder implementar, mas eu vo te que continuar na mesma, pois nao entendo nada de JS.

 

mas tudo bem, eu me viro do jeito que eu do conta, obrigado a todos que postaram...

JCMais

Mas voltando no assunto, o próprio comentário incluído no código está mostrando como fazer, apenas veja o código que você postou e depois o código mostrado.

ou ja que nao postem o JS, mas como to iniciando queria que explicassem um pouco só mais detalhado.

 

 

Amigo, não leve as respostas a mal, foi apenas uma forma de lhe mostrar que você somente irá aprender, se você mesmo tentar fazer o código.

Sobre o código que passaram, é PHP e deve ser colocado no arquivo que recebe os valores, no caso você deseja o código para adicionar mais campos com JS?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Amigo, não leve as respostas a mal, foi apenas uma forma de lhe mostrar que você somente irá aprender, se você mesmo tentar fazer o código.

Sobre o código que passaram, é PHP e deve ser colocado no arquivo que recebe os valores, no caso você deseja o código para adicionar mais campos com JS?

poderiam ter feito isso, com apenas um post como você fez, e sobre o JS isso mesmo que eu quero

Compartilhar este post


Link para o post
Compartilhar em outros sites

O cérebro normalmente guarda situações de mais impacto com mais facilidade.

 

Cola ai o código HTML e PHP aos quais você chegou.

No javascript você simplesmente vai duplicar a última linha (resetada) no evento "click" do botão adicionar.

 

Exemplo para duplicar uma input com jQuery:

// #addBtn é um botão 'adicionar'
// #wrapper é o container das inputs
$('#addBtn').click(function(evt) {
 evt.preventDefault(); // Isso previne que a ação padrão do botão seja executada
 $('#wrapper').append($('#wrapper input:last').clone(true).reset());
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta assim:

 

HTM

<center><ul>
<li><u>Testando Novo Cadastro</u></li>
</ul></center>
<form action="cadastrado.php" method="post" name="cadastro">

<p align="center">
Nome : <input type="text" name="nome[]" />  Email : <input type="text" name="email[]" />
<br>
Nome : <input type="text" name="nome[]" />  Email : <input type="text" name="email[]" />
<br>
Nome : <input type="text" name="nome[]" />  Email : <input type="text" name="email[]" />
<br><br>
</p>
 <p align="center">
   <label>
   <input type="submit" name="Cadastrar" id="Cadastrar" value=" Cadastrar ">
   </label>
   <br />
   </p>
</form>

PHP

<?php
include('_conecta.php');
// Para cada par de $nome e $email, inserir um registro
foreach ($_POST['nome'] as $i => $nome) {
$email = $_POST['email'][$i];
Agora você tem o par $nome e $email e pode fazer sua lógica de inserção no banco de dados
mysql_query("INSERT INTO usuarios (nome,email)VALUES('$nome','$email')");
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora você deve utilizar o código seguindo as instruções no próprio código.

Primeiro você deve colocar as inputs dentro de uma div, e então aplicar uma ID a ela e trocar no Javascript onde está a Wrapper.

Após isto veja que você tem o seguinte formato de código:

Nome : <input type="text" name="nome[]" />  Email : <input type="text" name="email[]" />

 

Como o código passado apenas faz um clone do último Input, o melhor seria você colocar o último conjunto de inputs dentro de uma div e clonar esta div. Ex:

// #addBtn é um botão 'adicionar'
// #wrapper é o container das inputs
// #InputClonar é a ID da div contendo os inputs para clonar
$('#addBtn').click(function(evt) {
 evt.preventDefault(); // Isso previne que a ação padrão do botão seja executada
 $('#wrapper').append($('#wrapper #InputClonar').clone(true));
});

<div id="InputClonar">Nome : <input type="text" name="nome[]" />  Email : <input type="text" name="email[]" /></div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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