Ir para conteúdo

POWERED BY:

Arquivado

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

ThunderPHP

[Resolvido] INPUT, WHILE E CHECKBOX

Recommended Posts

Galera.. Bom dia...

 

Preciso da ajuda de vcs...

 

Tenho um while que monta uma pesquisa...

 

while ($conex=mysql_fetch_array($mysql, MYSQL_ASSOC)){

echo "<tr><td bgcolor=#F3F3F3>".$conex['usuario']."</td>";

echo "<td bgcolor=#F3F3F3><input type='checkbox' name='check[]' value=".$dados['cod']."</td>";

echo "<td bgcolor=#F3F3F3><input type='text' name='nota' value=".$conex['cdg']."</td>";

}

 

A minha situação.. após montar a listagem dos alunos, monta-se um checkbox e um input por linha, para que se escolha na check o aluno e o input irá receber a nota... estou batendo cabeça a dois dias... como fazer para capturar esses valores ??

 

Eu estou tentando..

 

$notas = $_POST['check'];

 

foreach($operador as $operador){

$sql = "INSERT INTO notas (notas) VALUES ('$notas')";

mysql_query($sql)or die (mysql_error());

}

 

 

Sei que tá errado, peço a ajuda dos companheiros nessa jornada... Obrigado desde já...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera.. Revendo o projeto... sei que posso simplificar..

 

Não precisa do checkbox...

 

Mas mesmo assim.. preciso saber como pegar os valores dos input's...

 

while ($conex=mysql_fetch_array($mysql, MYSQL_ASSOC)){

echo "<tr><td bgcolor=#F3F3F3>".$conex['usuario']."</td>";

echo "<td bgcolor=#F3F3F3><input type='text' name='nota' value=".$conex['cdg']."</td>";

}

 

 

na pagina recebe.php - *** preciso saber como pegar os valores das variáveis...***

 

$notas = $_POST['check'];

 

foreach($operador as $operador){

$sql = "INSERT INTO notas (notas) VALUES ('$notas')";

mysql_query($sql)or die (mysql_error());

}

 

 

Se alguem puder dar uma força....

 

Obrigado

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">
             <title></title>
      </head>
      <body>
	<fieldset>
		<form method="POST">
			<?php
			      $Alunos = Array(
				     0 => Array(
					   'codigo' => '066811',
				          'nome' => 'Andrey Knupp Vital'
				     ),
				     1 => Array(
				          'codigo' => '066812',
					   'nome' => 'Marcos de Oliveira'
				     )
			      );
			      foreach ( $Alunos as $Aluno )
			      {
				      echo 'Aluno: <input type="text" disabled value="' , $Aluno[ 'nome' ] , '" />';
				      echo '<ul>';
				      echo '<li>' , 'Matemática: <input type="text" name="notas[' , $Aluno[ 'codigo' ] , '][Matemática]" />' , '</li>';
				      echo '<li>' , 'Português: <input type="text" name="notas[' , $Aluno[ 'codigo' ] , '][Português]" />';
				      echo '</ul>';
				      echo '<br />';
			      }
			?>
			<input type="submit" name="Registrar" value="Lançar Notas" />
		</form>
	</fieldset>
	<?php
	      echo '<pre>';
	      if ( count( $_POST[ 'notas' ] ) >= 1 ) {
		      print_r( $_POST ); 
		      foreach ( $_POST[ 'notas' ] as $Codigo => $Notas )
		      {
			      $Dados[ 'CodigoAluno' ] = $Codigo;
			      foreach ( $Notas as $Disciplina => $Valor )
			      {
				      $Dados[ $Disciplina ] = $Valor;
			      }
			      $NotasAlunos[ ] = $Dados;
		      }
		      for ( $i = 0; $i < count( $NotasAlunos ); ++$i )
		      {
			      $SQLFields[ ] = sprintf( '( %s )' , implode( ', ' , $NotasAlunos[ $i ] ) );
		      }
		      printf( 'INSERT INTO `tabela`( `codigoAluno` , `port` , `mat` ) VALUES %s' , implode( ' , ' , $SQLFields ) );
	      }
	?>
      </body>
</html>

 

Executa esse script aí puro, sem nada, entenda seu funcionamento, então depois implemente ao seu código, a minha saída foi:

Array
(
   [notas] => Array
       (
           [066811] => Array
               (
                   [Matemática] => 20
                   [Português] => 20
               )

           [066812] => Array
               (
                   [Matemática] => 20
                   [Português] => 20
               )

       )

   [Registrar] => Lançar Notas
)
INSERT INTO `tabela`( `codigoAluno` , `port` , `mat` ) VALUES ( 066811, 20, 20 ) , ( 066812, 20, 20 )       

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andrey Knupp,

 

Funcionou perfeitamente, muito obrigado, apenas não consigo efetuar a gravação no banco...

 

Ele trava na hora de usar a variável %s...

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s' , implode( ' , ' , Array ) )' at line 1

 

Está montado da seguinte forma...

 

$grava = "INSERT INTO `notas`( `aluno` , `matematica` , `portugues` ) VALUES %s' , implode( ' , ' , $SQLFields ) )";

$conf = mysql_query($grava)or die (mysql_error());

 

Agradeço desde já... Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse arquivo chama-se notas.php

 

Ele monta direitinho, alunos e boxes das notas... Conforme você ensinou....

 

<?php
     $sql = "SELECT * FROM alunos WHERE curso LIKE '$curso' ORDER BY usuario ASC";
     $monta = mysql_query( $sql ) or die( mysql_error() );
     while ( $dados = mysql_fetch_array( $monta , MYSQL_ASSOC ) )
     {
      echo '<tr><td bgcolor=#BFDFFF><input type="text" disabled value="' , $dados[ 'usuario' ] , '" /></td>';
      echo '<td bgcolor=#BFDFFF><input type="text" size="3" name="notas[' , $dados[ 'usuario' ] , '][matematica]" /></td>';
      echo '<td bgcolor=#BFDFFF><input type="text" size="3" name="notas[' , $dados[ 'usuario' ] , '][portugues]" /></td></tr>';
     }

?>

 

 

 

Esse arquivo chama-se notas2.php

 

<?php
     require_once('../../registra.php');

     if ( count( $_POST[ 'notas' ] ) >= 1 ) {
      print_r( $_POST );
      foreach ( $_POST[ 'notas' ] as $Codigo => $Notas )
      {
	      $Dados[ 'CodigoAluno' ] = $Codigo;
	      foreach ( $Notas as $Disciplina => $Valor )
	      {
		      $Dados[ $Disciplina ] = $Valor;
	      }
	      $NotasAlunos[ ] = $Dados;
      }
      for ( $i = 0; $i < count( $NotasAlunos ); ++$i )
      {
	      $SQLFields[ ] = sprintf( '( %s )' , implode( ', ' , $NotasAlunos[ $i ] ) );
      }
      printf( 'INSERT INTO `tabela`( `codigoAluno` , `port` , `mat` ) VALUES %s' , implode( ' , ' , $SQLFields ) );

      $grava = "INSERT INTO `notas`( `aluno` , `matematica` , `portugues` ) VALUES %s' , implode( ' , ' , $SQLFields ) )";
      $conf = mysql_query( $grava ) or die( mysql_error() );
     }

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retorna assim:

 

Array ( [Registrar] => Lançar Notas [notas] => Array ( [ALESSANDRA] => Array ( [matematica] => 1 [portugues] => 2 ) [gardenia] => Array ( [matematica] => 1 [portugues] => 2 ) [henry] => Array ( [matematica] => 1 [portugues] => 2 ) [laiza] => Array ( [matematica] => 1 [portugues] => 2 ) [LLORANDI] => Array ( [matematica] => 1 [portugues] => 2 ) [luciano] => Array ( [matematica] => 1 [portugues] => 2 ) [luiz] => Array ( [matematica] => 1 [portugues] => 2 ) [magda] => Array ( [matematica] => 1 [portugues] => 2 ) [marcela] => Array ( [matematica] => 1 [portugues] => 2 ) [ronei] => Array ( [matematica] => 1 [portugues] => 2 ) [thiago] => Array ( [matematica] => 1 [portugues] => 2 ) [valdir] => Array ( [matematica] => 1 [portugues] => 2 ) ) [location] => /gerenciador/home/cadastros/meta.php ) INSERT INTO `tabela`( `codigoAluno` , `port` , `mat` ) VALUES ( ALESSANDRA, 1, 2 ) , ( gardenia, 1, 2 ) , ( henry, 1, 2 ) , ( laiza, 1, 2 ) , ( LLORANDI, 1, 2 ) , ( luciano, 1, 2 ) , ( luiz, 1, 2 ) , ( magda, 1, 2 ) , ( marcela, 1, 2 ) , ( ronei, 1, 2 ) , ( thiago, 1, 2 ) , ( valdir, 1, 2 )You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s' , implode( ' , ' , Array ) )' at line 1

 

Executa tudo.. para na hora de gravar....

 

Obrigado pela ajuda e continuo no aguardo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, eu falei, seu problema é com aspas, na verdade, ainda faltou a função sprintf, que faz a junção do retorno do implode com a query.

troque isso aqui:

$grava = "INSERT INTO `notas`( `aluno` , `matematica` , `portugues` ) VALUES %s' , implode( ' , ' , $SQLFields ) )";

por isso aqui:

$grava = sprintf( "INSERT INTO `notas`( `aluno` , `matematica` , `portugues` ) VALUES %s" , implode( ' , ' , $SQLFields ) );

 

Outra coisa, leia as orientações feitas antes de postar seus códigos, ok ? http://forum.imasters.com.br/topic/375800-orientacoes-para-uma-boa-participacao/

 

Adicione sempre a tag code ao postar códigos, ou de preferência, a BBCode compatível com a linguagem de código escrito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

testando.........

 

Já posto o resultado meu amigo.. mais uma vez obrigado pela ajuda...

 

Andrey,

 

Ele dá a seguinte msg:

 

Unknown column 'ALESSANDRA' in 'field list'

 

 

 

 

Na tabela notas eu tenho os campos:

 

alunos, matematica, portugues...

 

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opz, faltou um pequeno detalhe !, atualize o código:

<?php

     require_once('../../registra.php');

     if ( count( $_POST[ 'notas' ] ) >= 1 ) {
      foreach ( $_POST[ 'notas' ] as $Codigo => $Notas )
      {
	      $Dados[ 'CodigoAluno' ] = $Codigo;
	      foreach ( $Notas as $Disciplina => $Valor )
	      {
		      $Dados[ $Disciplina ] = !is_numeric( $Valor ) ? sprintf( "'%s'" , $Valor ) : intval( $Valor );
	      }
	      $NotasAlunos[ ] = $Dados;
      }
      for ( $i = 0; $i < count( $NotasAlunos ); ++$i )
      {
	      $SQLFields[ ] = sprintf( '( %s )' , implode( ', ' , $NotasAlunos[ $i ] ) );
      }
      $grava = sprintf( "INSERT INTO `notas`( `aluno` , `matematica` , `portugues` ) VALUES %s" , implode( ' , ' , $SQLFields ) );
      $conf = mysql_query( $grava ) or die( mysql_error() );
     }

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz.... funcionou cara...

 

Andrey Knupp...

 

Você me ajudou muito mesmo...

 

Agradeço de coração..

 

Você não sabe o que é precisar montar um código e não ter um norte... Graças a Deus existem pessoas como você..

 

Obrigado e abraços fortes....

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.