Inu_Yasha 0 Denunciar post Postado Julho 3, 2009 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
Matias Rezende 50 Denunciar post Postado Julho 3, 2009 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
William Bruno 1501 Denunciar post Postado Julho 3, 2009 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
Inu_Yasha 0 Denunciar post Postado Julho 3, 2009 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
William Bruno 1501 Denunciar post Postado Julho 3, 2009 Faça o escape_string, DENTRO do laço. Compartilhar este post Link para o post Compartilhar em outros sites
Inu_Yasha 0 Denunciar post Postado Julho 3, 2009 Olá, Retorna o seguinte erro: Warning: Invalid argument supplied for foreach() in C:\www\livros\admin.php on line 89Có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
Matias Rezende 50 Denunciar post Postado Julho 3, 2009 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
Inu_Yasha 0 Denunciar post Postado Julho 3, 2009 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
Matias Rezende 50 Denunciar post Postado Julho 3, 2009 Posta a parte que gera a query pra gente ver. Senão fica difícil de te ajudar. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Inu_Yasha 0 Denunciar post Postado Julho 3, 2009 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
Matias Rezende 50 Denunciar post Postado Julho 3, 2009 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
Inu_Yasha 0 Denunciar post Postado Julho 3, 2009 Então, o problema é que acusa o seguinte erro:: Parse error: syntax error, unexpected T_AS in C:\www\livros\admin.php on line 89Linha 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
Matias Rezende 50 Denunciar post Postado Julho 4, 2009 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
Inu_Yasha 0 Denunciar post Postado Julho 4, 2009 Olá, Obrigado pela ajuda, está tudo OK até agora! Abraços, Compartilhar este post Link para o post Compartilhar em outros sites