Ir para conteúdo

POWERED BY:

Arquivado

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

biza

Array de campo $_POST

Recommended Posts

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

<!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

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

<!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

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

 

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

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

×

Informação importante

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