biza 1 Denunciar post Postado Maio 29, 2011 viva pessoal , estou a tentar fazer uma verificação de campos input desse tipo: <input name=tipo[] type="text"/> Ele esta a funcionar , o problema é o seguinte : Tenho 10 campos iguais aos que estão em cima, o que eu queria fazer era : Por cada linha destas <input name=tipo[] type="text"/> que fosse preenchida ele deva-me criar na base de dados uma nova linha , caso so preenche-se uma linha só me criava uma linha na base de dados . Já desenvolvi esse código, e esta a funcionar , o problema é que ele duplica os dados do 1 campo pelos 10 campos input, que estarei a fazer mal alguem me pode dar um help. Esse é o codigo desenvolvido foreach ($_POST['dia'] as $dia) { $horas = mysql_real_escape_string ($_POST['hora'][$row]); mysql_query("INSERT INTO horario(dia_semana, horario, detalhe_modalidade_id) VALUES('$dia_sem','$horas','$modalidade')") or die(mysql_error()); } Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Maio 29, 2011 1 - Aspas duplas nos valores dos atributos HTML. <input name="tipo[]" type="text"/> 2 - O name do input é "tipo", porém no foreach está $_POST['dia']. Deveria ser $_POST['tipo']. Compartilhar este post Link para o post Compartilhar em outros sites
biza 1 Denunciar post Postado Maio 29, 2011 Matheus Já fiz essa alteração mas esta me dando o mesmo, problema. Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Maio 29, 2011 <!doctype html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> </head> <body> <fieldset> <form method="post"> <input type="text" name="tipo[]" /> <input type="text" name="tipo[]" /> <input type="text" name="tipo[]" /> <input type="text" name="tipo[]" /> <input type="submit" name="enviar" value="Enviar" /> </form> </fieldset> <?php if( isset( $_POST['enviar'] ) ){ foreach( array_filter( $_POST[ 'tipo' ] ) as $data ){ echo $data, '<br />'; $horas = mysql_real_escape_string ($_POST['hora'][ $row ]); mysql_query("INSERT INTO `horario`( `dia_semana`, `horario`, `detalhe_modalidade_id`) VALUES( '$dia_sem', '$horas', '$modalidade' )") or die(mysql_error()); } } ?> </body> </html> Não to entendendo seu SQL, nem esse $horas ;) Mais tenta assim Compartilhar este post Link para o post Compartilhar em outros sites
biza 1 Denunciar post Postado Maio 29, 2011 Andrey é assim porque tenho dois tipos de array o tipo <input name="horas[]" type="text" /> <input name = "tipo[]" type="text" /> Então você esta a dizer-me que se eu fizer desta forma deve dar: <fieldset> <form method="post"> <input type="text" name="tipo[]" /> <input type="text" name="hora[]" /> <input type="text" name="tipo[]" /> <input type="text" name="hora[]" /> <input type="submit" name="enviar" value="Enviar" /> </form> </fieldset> <?php if( isset( $_POST['submit'] ) ){ foreach( array_filter( $_POST[ 'tipo' ] ) as $data ){ echo $data, '<br />'; $horas = mysql_real_escape_string ($_POST['hora'][ $row ]); mysql_query("INSERT INTO `horario`( `dia_semana`, `horario`, `detalhe_modalidade_id`) VALUES( '$data', '$horas', '$modalidade' )") or die(mysql_error()); } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Maio 29, 2011 Se você quer 2 tipos, não é foreach, você tem que fazer um For .. Compartilhar este post Link para o post Compartilhar em outros sites
biza 1 Denunciar post Postado Maio 30, 2011 andre não me podes dar uma ajuda mostrar um exemplo Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Maio 30, 2011 <!doctype html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> </head> <body> <fieldset> <form method="post"> <input type="text" name="tipo[]" /> <!-- a --> <input type="text" name="hora[]" /> <!-- b --> <input type="text" name="tipo[]" /> <!-- c --> <input type="text" name="hora[]" /> <!-- d --> <input type="submit" name="enviar" value="Enviar" /> </form> </fieldset> <?php if( isset( $_POST['enviar'] ) ){ for( $i = 0; $i < sizeOf( $_POST['tipo'] ); ++$i ){ echo 'Hora: ', $_POST[ 'hora' ][ $i ], ' | Tipo: ', $_POST[ 'tipo' ][ $i ], '<br />'; } } ?> </body> </html> Saída: Hora: b | Tipo: a Hora: d | Tipo: c Compartilhar este post Link para o post Compartilhar em outros sites
biza 1 Denunciar post Postado Maio 31, 2011 caro Andrey, esta a funcionar pa perfeição muito obrigado. so uma pergunta têm como fazer que não meta campos em branco na base de dados? no update dos dados ele repete para toda a base de dados o ultimo campo inserido Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Maio 31, 2011 :seta: Array Filter ;) Compartilhar este post Link para o post Compartilhar em outros sites
biza 1 Denunciar post Postado Junho 1, 2011 Andrey fiz daquela forma que voce me disse mas continua a fazer o ciclo e para cada um dos campos vazios ele insere o ultimo registrado na bd toda Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Junho 1, 2011 Como você está fazendo, poste o código atual ! :D Compartilhar este post Link para o post Compartilhar em outros sites
biza 1 Denunciar post Postado Junho 2, 2011 Ai vai Andrey: <fieldset> <form method="post"> <input type="text" name="dia[]" value="'.$row2["dia_semana"].'" /> <!-- a --> <input type="text" name="hora[]" value="'.$row2["horario"].'" /> <!-- b --> <input type="text" name="dia[]" value="'.$row2["dia_semana"].'"/> <!-- c --> <input type="text" name="hora[]" value="'.$row2["horario"].'"/> <!-- d --> <input type="submit" name="enviar" value="Enviar" /> </form> </fieldset> Agora o update: for( $i = 0; $i < sizeOf( $_POST['dia'] ); ++$i ){ mysql_query("UPDATE horario SET dia_semana='".$_POST[ 'dia' ][ $i ]."', horario='".$_POST[ 'hora' ][ $i ]."', detalhe_modalidade_id=".$_GET['id']) or die(mysql_error()); } Tabela: CREATE TABLE `horario` ( `id_horario` int(5) NOT NULL AUTO_INCREMENT, `dia_semana` varchar(30) NOT NULL, `horario` varchar(30) NOT NULL, `detalhe_modalidade_id` int(5) NOT NULL, PRIMARY KEY (`id_horario`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; o erro que me esta dando é ao fazer o update o que ele faz é alterar todo o conteudo da tabela para os ultimos dados submetidos , bem como o ultimo id... não fazendo distinção se os campos de input tem ou não conteúdo, imagina são 10 campos iguais a esses se 5 estiverem preenchidos e os outros 5 vazios ele submete 10 campos preenchidos .ou seja interpreta como se os campos vazios estivessem com conteúdo. Compartilhar este post Link para o post Compartilhar em outros sites