Ir para conteúdo

POWERED BY:

Arquivado

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

ThunderPHP

[Resolvido] for ou foreach

Recommended Posts

Boa noite a todos...

 

Galera, preciso muito da ajuda de vcs...

 

Eu tenho a seguinte situação...

 

hora-------checkbox-------quantidade

08:00------[]-------------1 a 50

09:00------[]-------------1 a 50

e assim vai...

 

Eu preciso gravar no banco de dados com as seguintes condições...

 

O usuário vai clicar no checkbox para autorizar aquele horario, até aí sem problemas...

 

mas eu preciso que ele grave quantos computadores estarão disponíveis naquele horário que vai de 1 a 50...

 

Exemplo:

 

08:00------[x]-------------12

 

preciso que ele grave:

 

08:00 - 1

08:00 - 2

08:00 - 3

e assim vai...

 

/////////////////////////////////////////

foreach($_checkbox as $_valor){

 

$insere="INSERT INTO atividade (dia,hora) VALUES ('$ndata','$_valor')";

$consulta=mysql_query($insere)or die(mysql_error());

}

///////////////////////////////////////// - Aqui ele pega todos os horários autorizados e grava no banco, mas somente 1 computador... beleza

 

Agora, como faço pra que ele repita isso adicionando os computadores 1,2,3...

 

Pois isso gera uma pesquisa depois, que lista o horário e o computador que estará disponível para o usuário...

 

Alguem pode me dar uma força ????

 

Obrigadão...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se entende ..

<html>
<head>
	<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" /> 
</head>
<body>
	<fieldset>
		<legend>Horários</legend>
		<form method="POST">
			<?php
				for( $i = 0 ; $i <= 24 ; ++ $i ) {
	    			        printf( '%d:00<input type="checkbox" value="%d:00" name="horario[]" />' , $i , $i );
				        echo '<input type="text" placeholder="Quantidade" name="quantidade[]" /><br />';
				}
			?>
			<input type="submit" name="enviar" value="Enviar" />
		</form>
	</fieldset>
	<?php
		if( isset( $_POST[ 'enviar' ] ) ) {
			 $_POST = array_filter( $_POST );
			 forEach( $_POST[ 'horario' ] as $indice => $horario ) {
				   $SQL[] = sprintf( "( '%s' , '%s' , %d )" , date( 'Y-m-d' , $horario ) , $horario , $_POST[ 'quantidade' ][ $indice ] );
			 }
			 $Insert = 'INSERT INTO `atividade`( `dia` , `horario` , `quantidade` ) VALUES ' . implode( ', ' , $SQL );
			 #mysql_query( $Insert ) or die( mysql_error( ) ) ;
			 echo '<code>' , $Insert , '</code>' ;
		}
	?>
</body>	
</html>

 

Saída:

INSERT INTO `atividade`( `dia` , `horario` , `quantidade` ) VALUES ( '2011-09-23' , '0:00' , 10 ), ( '2011-09-23' , '1:00' , 20 )

 

Marquei o primeiro / segundo checkbox com a quantidade 10 / 20

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andrey, Desculpe a demora em responder...

 

Mas infelizmente não funcionou... observe como coloquei..

 

cadastratividade.php

 

----Aqui eu tenho uma função que abre um calendário para a pessoa escolher o dia de cadastro das atividades... Isso tudo esta em um form com nome de forumario, na action esta cadati.php

 

         <td colspan="6"><input name="dtcadastro" type="text" class="campos" id="dtcadastro" value="<?php echo $tratadata ?>" size="10" maxlength="10" onClick="javascript:AbreCalendario(250,270,'<? echo $for; ?>','dtcadastro','<? echo time(); ?>');" readonly="true">
           <a href="javascript:AbreCalendario(250,270,'<? echo $for; ?>','dtcadastro','<? echo time(); ?>');"><img src="../imagem/calendario.gif" width="16" height="16" border="0" alt="Clique aqui para selecionar uma data!"></a></td>
       </tr>
       <tr>

         <td colspan="6"> </td>
       </tr>

       <tr>
         <td width="3%" colspan="2"><div align="left" class="style2">HORA ATIVIDADE:</div></td>
         <td width="88%">quantidade de computadores disponíveis neste horário</td>
       </tr>
       <tr>
         <td width="9%"> </td>
         <td colspan="2"> </td>
       </tr>
       <tr>
         <td colspan="3">
---------------------------------------------Coloquei aqui a função que me passou          
                               <?php 
                                       for( $i = 0 ; $i <= 24 ; ++ $i ) { 
                                               printf( '%d:00<input type="checkbox" value="%d:00" name="horario[]" />' , $i , $i ); 
                                               echo '<input type="text" placeholder="Quantidade" name="quantidade[]" /><br />'; 
                                       } 

                               ?> 
               </fieldset> 


         </td>
       </tr>
       <tr>
         <td colspan="3"> </td>
       </tr>
       <tr>
         <td colspan="3"><strong>
           <input name="submit" type="submit" id="submit" value="SALVAR DADOS E MARCARA TIVIDADE" onClick="this.disabled=true;this.value='Processando Formulário...';document.<?php $for ?>.submit()">
         </strong></td>

 

pagina cadati.php

//GRAVANDO DATA NO CADASTRO PEGANDO DA TEXTBOX --- A data que o usuario escolheu...

$star = $_POST["dtcadastro"];

$exp = explode("/",$star);

$ndata = $exp[2]."-".$exp[1]."-".$exp[0];

//FIM DO TRATAMENTO DA DATA
                       if( isset( $_POST[ 'enviar' ] ) ) { 
                                $_POST = array_filter( $_POST ); 
                                forEach( $_POST[ 'horario' ] as $indice => $horario ) { 
                                          $SQL[] = sprintf( "( '%s' , '%s' , %d )" , date( 'Y-m-d' , $horario ) , $horario , $_POST[ 'quantidade' ][ $indice ] ); 
                                } 
                                $Insert = 'INSERT INTO `atividade`( `dia` , `hora` , `computadores` ) VALUES ' . implode( ', ' , $SQL ); 
                                mysql_query( $Insert ) or die( mysql_error( ) ) ; 
                                echo '<code>' , $Insert , '</code>' ; 
                       } 

----------- Coloquei sua instrução

 

Mas não cadastrou nada... o que pode ser ?? Agradeço sua colaboração...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou colocar toda minha pagina cadastratividade.php -- Mais uma vez obrigado.

 

<?php 

require("../login.php");

$for = 'formulario';
?>

<html>

<head>

<title>CADASTRO DE ATIVIDADE</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script language="JavaScript" type="text/JavaScript">

<!--

function MM_reloadPage(init) {  //reloads the window if Nav4 resized

 if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {

   document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}

 else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();

}

MM_reloadPage(true);

//-->

</script>

<link rel="stylesheet" type="text/css" href="../Scripts/classes.css" />

<script language="javascript">


 function AbreCalendario(largura,altura,formulario,campo,tmpx) {


   vertical   = (screen.height/2) - (altura/2);


   horizontal = (screen.width/2) - (largura/2);


   var jan = window.open('calendario.php?formulario='+formulario+'&campo='+campo+'&tmpx='+tmpx,'','toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=yes,resizable=0,copyhistory=0,screenX='+screen.width+',screenY='+screen.height+',top='+vertical+',left='+horizontal+',width='+largura+',height='+altura);


   jan.focus();


 }


</SCRIPT>


</head>

<body>

<table width="740" border="0" align="center" cellpadding="0" cellspacing="0">

 <tr>

     <form name="<? echo $for; ?>" method="post" action="atcada.php">

     <table width="99%" border="0" align="center" bordercolor="#999999" class="campos">

     <td colspan="6">ESCOLHA O DIA PARA MARCAR ATIVIDADE:</td>
       </tr>

       <tr>
         <td colspan="6"> </td>
       </tr>
       <tr>
         <td colspan="6"><input name="dtcadastro" type="text" class="campos" id="dtcadastro" value="<?php echo $tratadata ?>" size="10" maxlength="10" onClick="javascript:AbreCalendario(250,270,'<? echo $for; ?>','dtcadastro','<? echo time(); ?>');" readonly="true">
           <a href="javascript:AbreCalendario(250,270,'<? echo $for; ?>','dtcadastro','<? echo time(); ?>');"><img src="../imagem/calendario.gif" width="16" height="16" border="0" alt="Clique aqui para selecionar uma data!"></a></td>
       </tr>
       <tr>

         <td colspan="6"> </td>
       </tr>

       <tr>
         <td width="3%" colspan="2"><div align="left" class="style2">HORA ATIVIDADE:</div></td>
         <td width="88%">quantidade de computadores disponíveis neste horário</td>
       </tr>
       <tr>
         <td width="9%"> </td>
         <td colspan="2"> </td>
       </tr>
       <tr>
         <td colspan="3">

                               <?php 
                                       for( $i = 0 ; $i <= 24 ; ++ $i ) { 
                                               printf( '%d:00<input type="checkbox" value="%d:00" name="horario[]" />' , $i , $i ); 
                                               echo '<input type="text" placeholder="Quantidade" name="quantidade[]" /><br />'; 
                                       } 

                               ?> 
               </fieldset> 


         </td>
       </tr>
       <tr>
         <td colspan="3"> </td>
       </tr>
       <tr>
         <td colspan="3"><strong>
           <input name="submit" type="submit" id="submit" value="SALVAR DADOS E MARCARA TIVIDADE" onClick="this.disabled=true;this.value='Processando Formulário...';document.<?php $for ?>.submit()">
         </strong></td>
       </tr>
       <tr>
         <td colspan="3"> </td>
         </tr>
     </table>

     <div align="center"></div>

     </form>

     <p> </p>

   </div></td>

 </tr>

</table>
</body>

</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, utilize BBCode para postar códigos, assim você só atrapalha a gente.

 

Tem um erro aqui:

<form name="<? echo $for; ?>" method="post" action="atcada.php">

O nome da página que grava no banco, não é cadati.php ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A pagina cadastratividade.php chama a cadati.php, mas ele não grava no banco de dados.. eu coloquei toda minha pagina cadastratividade, não consigo saber porque ele não grava.

 

Agradeço sua atenção.. Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, vamos ao outro problema, que vi mas resolvi não comentar ..

<input name="submit" type="submit" id="submit" value="SALVAR DADOS E MARCARA TIVIDADE" onClick="this.disabled=true;this.value='Processando Formulário...';document.<?php $for ?>.submit()">

 

Falta um echo no $for aí, assim deve estar saindo document..submit() provocando um erro de javascript, e o formulário não sendo submetido.

troque para:

<input name="submit" type="submit" id="submit" value="SALVAR DADOS E MARCARA TIVIDADE" />

 

Apenas para teste, poste o resultado, fico no aguardo.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hehehe, depois de olhar teu script, a ultima coisa que eu achava que era, provavelmente é .. você não tem o nome do botão como enviar, por isso nunca iria entrar neste if:

if( isset( $_POST[ 'enviar' ] ) ) { 

 

Troca seu botão, coloca assim agora ..

<input type="submit" name="enviar" id="submit" value="SALVAR DADOS E MARCARA TIVIDADE" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara.. perfeito, ele gravou... mas o único problema é a data.. olha a data como ficou..

 

INSERT INTO `comp_cad`( `dia` , `hora` , `computadores` ) VALUES ( '1969-12-31' , '0:00' , 1 )

 

Ele deveria pegar a data que o usuário escolheu na pag anterior...

 

Abraços Fortes!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andrey... veja se o meu raciocínio está certo...

 

---Ele captura a data que o usuário escolheu..


$star = $_POST["dtcadastro"];

$exp = explode("/",$star);

$ndata = $exp[2]."-".$exp[1]."-".$exp[0];

---- E tem que passar isso para o banco..

 

if( isset( $_POST[ 'enviar' ] ) ) { 
                                $_POST = array_filter( $_POST ); 
                                forEach( $_POST[ 'horario' ] as $indice => $horario ) { 
                                          $SQL[] = sprintf( "( '%s' , '%s' , %d )" , date( 'Y-m-d' , $horario ) , $horario , $_POST[ 'quantidade' ][ $indice ] ); 
                                } 
                                $Insert = 'INSERT INTO `comp_cad`( `dia` , `hora` , `computadores` ) VALUES ' . implode( ', ' , $SQL ); 
                                mysql_query( $Insert ) or die( mysql_error( ) ) ; 
                                echo '<code>' , $Insert , '</code>' ; 
                       } 

 

--- Eu não sei como colocar isso para ele gravar..

 

Agradeço de verdade... vlw

 

Andrey,

 

Cara.. valeu mais uma vez.. obrigado de verdade...

 

Resolvido, só precisei trocar date() por $ndata, que capturava a data...

 

 

Abraços Fortes e fique com Deus...

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.