Ir para conteúdo

POWERED BY:

Arquivado

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

Inu_Yasha

[Resolvido] Inserir vários dados

Recommended Posts

Olá a todos,

Tenho um formulário onde pode-se inserir vários dados no sistema. Por exemplo, eu posso inserir 15 nomes, na mesma tabela e linha, usando uma página, enviando vários de uma vez. O meu problema é: como fica o nome do campo aonde será digitado o dado? E como pego os 15 valores dele, sendo que, estou contando quandos campos são gerados (se a pessoa escolher 15 campos, ele mostrará 15 e armazenará isso num campo oculto) e só será permitido até 50 campos?

Obrigado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muitas perguntas... Vamos por partes...

como fica o nome do campo aonde será digitado o dado?

Usa o nome do campo assim nome[].

 

E como pego os 15 valores dele

Usa a função foreach - br.php.net/foreach.

 

Para você ver como vai ficar os dados, coloque na página que recebe os dados o seguinte:

 

echo '<pre>';
print_r($_POST);// imaginando que seu formulário usa método POST

Vai exibir os dados. Veja como ficou, somente para aprendizado. Este código é só pra debug. Depois que estiver pronto você tira.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi a segunda parte da pergunta.. mas você pode capturar através de um array.

<input type="text" name="nomes[]" />
<input type="text" name="nomes[]" />
..
ai você receberá um:

$_POST['nomes'][0],$_POST['nomes'][1] .. entendeu ?

 

Bastará com um for ou um foreach, percorrer esse novo vetor enviado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá a todos,

Quase lá rs.

Tentei assim:

$titulo = mysql_escape_string(strip_tags($_POST['titulo']));
foreach($titulo as $value){
echo $value."<br />";
}
Mas dá erro... e eu não posso colocar o título sem validar no banco de dados, pois fica inseguro né?

Já assim:

foreach($_POST['titulo'] as $value){
echo $value."<br />";
}
Vai normal.

 

E se eu tivesse dois campos assim, como faria para inserir tudo no banco de dados, já que eles pertencem à mesma tabela?

Obrigado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o escape_string, DENTRO do laço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

Retorna o seguinte erro:

Warning: Invalid argument supplied for foreach() in C:\www\livros\admin.php on line 89

Código:

foreach(mysql_escape_string(strip_tags($_POST['titulo'])) as $title_value){
echo $title_value."<br />";
}
Outra dúvida...

E se eu quisesse usar dois campos que podem variar a quantidade, no mesmo formulário, porém de nomes diferentes e inserir os valores na mesma tabela, como posso fazer isso?

Obrigado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando o Willian falou dentro do laço, era assim

 

foreach($_POST['titulo'] as $value){
echo mysql_escape_string(strip_tags($value))."<br />";
}

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ahh!

Agora entendi, obrigado! Porém, ainda não sei como pegar dados de dois campos do tipo array[] com foreach, para que eles fiquem em UMA query mysql, pois os dois campos são da mesma tabela/linha. Se imprimir o valor fora do foreach(), retornará como se fosse uma string simples.

Pensei em fazer assim:

foreach(($_POST['titulo'] as $title_value) || ($_POST['autor'] as $author_value)){
echo mysql_escape_string(strip_tags($title_value))."<br />";
echo mysql_escape_string(strip_tags($author_value))."<br />";
}
Mas dá erro com &&, AND e etc também. =/

(Parse error: syntax error, unexpected T_AS in C:\www\livros\admin.php on line 89)

Alguma luz?

Obrigado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu ainda não fiz ela, pois não sei como unir os valores de dois foreachs.

Mas seria basicamente assim:

$inserir = mysql_query("INSERT INTO livros (titulo, autor, data_add) VALUES ('', '', '{date('Y-m-d')}'");
Os valores em branco ('') é o que eu não sei como colocar.

Obrigado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca a query dentro do foreach. Vai inserir uma vez para cada volta no laço. Mais ou menos assim

 

foreach(($_POST['titulo'] as $title_value) || ($_POST['autor'] as $author_value)){
$inserir = mysql_query("INSERT INTO livros (titulo, autor, data_add) VALUES ('mysql_escape_string(strip_tags($title_value))', 'mysql_escape_string(strip_tags($author_value))', '{date('Y-m-d')}'") or die(mysql_error());
}

Qualquer coisa posta aí

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, o problema é que acusa o seguinte erro::

Parse error: syntax error, unexpected T_AS in C:\www\livros\admin.php on line 89
Linha 89:

foreach(($_POST['titulo'] as $title_value) || ($_POST['autor'] as $author_value)){
$inserir = mysql_query("INSERT INTO livros (titulo, autor, data_add) VALUES ( 'mysql_escape_string(strip_tags($title_value))', 'mysql_escape_string(strip_tags($author_value))', '{date('Y-m-d')}'");
}
E eu ainda não entendi o que está errado, já tentei && e AND no lugar, mas sem sucesso.

Obrigado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora que reparei no teu foreach.

 

foreach(($_POST['titulo'] as $title_value) || ($_POST['autor'] as $author_value))

Nunca usei assim... Procurei no manual e não achei esta sintaxe.

 

Nesta caso a melhor opção é usar o for. Mais ou menos assim

$qtde = count($_POST['titulo']);
for($x = 0; $x < $qtde; $x++ ){
$titulo = mysql_escape_string(strip_tags($_POST['titulo'][$x]));
$autor = mysql_escape_string(strip_tags($_POST['autor'][$x]));// separei assim por didática. Fica mais fácil de ver.

$inserir = mysql_query("INSERT INTO livros (titulo, autor, data_add) VALUES ( '$titulo', '$autor', '{date('Y-m-d')}'");
}

Carlos Eduardo

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.