Colocar valor no checkbox dentro de array e inserir na tabela

18/11/2016

0

Pessoal to com um grande problema, eu tenho que calcular a frequencia de cada aluno, para isso estou usando cada checkbox/aula os valores do checkbox seriam True para Presença e Null para Falta, como eu posso fazer para inseri-lo na tabela, sendo que a lista de alunos está dentro de um form juntamente com while.

      <div class="linha"><!-- Inicio Barra de menus -->
    <div class="coluna col12"> 
      <nav class="menu-principal">
        <ul class="menu-grande">
        <li><a href="?p=home" style="margin-left: 20px">Página Inicial</a></li>
        <li><a href="?p=turmas">Turmas</a></li>
        <li><a href="?p=unidadecurricular">Unidade Curricular</a></li>
        <li><a href="?p=frequencia">Frequência Escolar</a></li>
        <li><a href="?p=boletimestudantil">Boletim Estudantil</a></li>
        </ul>
      </nav>    
    </div>
  </div><!-- Termino barra de menus -->
  <div class="linha"> <!--  INICIO BUSCA TURMAS PARA FAZER FREQUENCIA-->
      <div class="coluna col12">
        <form action="" method="post">
            <fieldset>
            <legend><h3>Frequência Escolar</h3></legend>
                <table cellspacing="10">
                    <tr>
                      <td>
                        <label for="instituicao">Instituição:</label>
                      </td>
                      <td>
                        <select type="text" name="instituicao" style="width: 200px">
                          <?php
                          require_once('conecta_db.php');
                          

                          $query = "SELECT nome, id_instituicao FROM instituicao order by nome ASC";

                          if ($stmt = mysqli_prepare($con, $query)) {

                          /* execute statement */
                          mysqli_stmt_execute($stmt);

                          /* bind result variables */
                          mysqli_stmt_bind_result($stmt, $nome, $id_instituicao);

                          /* fetch values */
                          while (mysqli_stmt_fetch($stmt)) {
                            echo("<option value='".$id_instituicao."'>".$nome."</option>");
                          }

                          /* close statement */
                          mysqli_stmt_close($stmt);
                          }
                          ?>
                        </select>
                      </td>
                      <td>
                        <label>Curso:</label>
                     </td>
                     <td>
                        <select type="text" name="curso" style="width: 200px">
                          <?php
                          require_once('conecta_db.php');

                          $query = "SELECT nome, id_curso FROM curso order by nome ASC";

                          if ($stmt = mysqli_prepare($con, $query)) {

                          /* execute statement */
                          mysqli_stmt_execute($stmt);

                          /* bind result variables */
                          mysqli_stmt_bind_result($stmt, $nome, $id_curso);

                          /* fetch values */
                          while (mysqli_stmt_fetch($stmt)) {
                            echo("<option value='".$id_curso."'>".$nome."</option>");
                          }
                          $_SESSION['$id_curso'] = $id_curso;
                          /* close statement */
                          mysqli_stmt_close($stmt);

                          }
                                          
                          ?>                     
                        </select>
                     </td>
                  </tr>
                  <tr>
                     <td>
                        <label for="modulo"> Módulo:</label>
                     </td>   
                     <td>
                        <select type="text" name="modulo" style="width: 200px">
                          <?php
                          require_once('conecta_db.php');

                          $query = "SELECT nome, id_modulo FROM modulo order by nome ASC";

                          if ($stmt = mysqli_prepare($con, $query)) {

                          /* execute statement */
                          mysqli_stmt_execute($stmt);

                          /* bind result variables */
                          mysqli_stmt_bind_result($stmt, $nome, $id_modulo);

                          /* fetch values */
                          while (mysqli_stmt_fetch($stmt)) {
                            echo("<option value='".$id_modulo."'>".$nome."</option>");
                          }

                          /* close statement */
                          mysqli_stmt_close($stmt);
                          }
                          
                          ?>                 
                        </select> 
                     </td>
                     <td>
                        <label for="unidadecurricular"> Unidade Curricular:</label>
                     </td>   
                     <td>
                        <select type="text" name="unidadecurricular" style="width: 200px">
                          <?php
                          require_once('conecta_db.php');

                          $query = "SELECT nome, id_unidadecurricular FROM unidadecurricular order by nome ASC";

                          if ($stmt = mysqli_prepare($con, $query)) {

                          /* execute statement */
                          mysqli_stmt_execute($stmt);

                          /* bind result variables */
                          mysqli_stmt_bind_result($stmt, $nome, $id_unidadecurricular);

                          /* fetch values */
                          while (mysqli_stmt_fetch($stmt)) {
                            echo("<option value='".$id_unidadecurricular."'>".$nome."</option>");
                          }

                          /* close statement */
                          mysqli_stmt_close($stmt);
                          }
                          
                          ?>                 
                        </select> 
                     </td>
                  </tr>
          </table>
          <p style="text-align: center; font-size: 14px; color: red;">
              <?php if(isset($_SESSION['erro_busca_turma'])){
                echo $_SESSION['erro_busca_turma'];
                unset($_SESSION['erro_busca_turma']);
              }?>
            </p>
              <table cellspacing="10">
                <tr>
                  <td align="left">
                    <input class="botao" type="submit" name="busca_aluno" value="Buscar">  
                  </td>
                </tr>
              </table>
          </fieldset>
        </form>
    </div>
  </div> <!-- TERMINO DA BUSCA DE TURMAS PARA FAZER FREQUENCIA -->
  <?php ?>
  <div class="linha">
    <div class="coluna col12">
      <form action="calcular_frequencia.php" method="post">
        <fieldset>
        <legend><h3></h3></legend>
          <?php
                      if(isset($_POST['busca_aluno'])){
                          
                          $id_instituicao = $_POST['instituicao'];
                  $id_curso = $_POST['curso'];
                  $id_modulo = $_POST['modulo'];
                  $id_unidadecurricular = $_POST['unidadecurricular'];

                  $busca_turma = "SELECT turma.id_turma FROM turma
                                  WHERE
                                  turma.id_instituicao = $id_instituicao
                                  &&
                                  turma.id_curso = $id_curso
                                  &&
                                  turma.id_modulo = $id_modulo
                                  &&
       
Patrick Santos

Patrick Santos

Responder

Post mais votado

22/11/2016

continuação...

[code]
<?php if(isset($_POST['busca_aluno'])) { ?>

<script>
//array que criara a lista de objetos dos alunos e as marcações das quatro aulas
var listaDePresencas = [];

//função para setar se a aula foi presenciada ou não
function setaPresenca(aulaNum, checkboxPresenca, alunoId){

switch(aulaNum){
case 1:
listaDePresencas[alunoId].Aula1 = checkboxPresenca.checked;
break;
case 2:
listaDePresencas[alunoId].Aula2 = checkboxPresenca.checked;
break;
case 3:
listaDePresencas[alunoId].Aula3 = checkboxPresenca.checked;
break;
case 4:
listaDePresencas[alunoId].Aula4 = checkboxPresenca.checked;
break;
}
document.getElementById('objetoPresencaToPost').value = JSON.stringify(listaDePresencas);
}

//após a página ser carregada seta o valor do campo hidden que será o Json para as marcações,
//cria uma string json com o valor do array lista de presencas
function CriaHiddenArray(){
document.getElementById('objetoPresencaToPost').value = JSON.stringify(listaDePresencas);
}
</script>

<?php } ?>

<div class="linha">
<div class="coluna col12">
<form action="calcular_frequencia.php" method="post">
<?php if(isset($_POST['busca_aluno'])) { ?>
<input type="hidden" id="objetoPresencaToPost" name="presencas" value="[]" />
<?php } ?>
<fieldset>
<legend><h3></h3></legend>
<?php
if(isset($_POST['busca_aluno'])){

$id_instituicao = $_POST['instituicao'];
$id_curso = $_POST['curso'];
$id_modulo = $_POST['modulo'];
$id_unidadecurricular = $_POST['unidadecurricular'];

$busca_turma = "SELECT turma.id_turma FROM turma
WHERE
turma.id_instituicao = $id_instituicao
&&
turma.id_curso = $id_curso
&&
turma.id_modulo = $id_modulo
&&
turma.id_unidadecurricular = $id_unidadecurricular";
//echo $busca_turma;
$procura_turma = mysqli_query($con, $busca_turma) or die($con->error);
//echo $busca_turma;
$resultado_procura_turma = mysqli_fetch_assoc($procura_turma) or die($con->error);


$id_turma = $resultado_procura_turma['id_turma'];

if(!empty($id_turma)){

$busca_alunos = "SELECT pes_nome, id_pessoa FROM pessoa WHERE id_pessoa in(SELECT id_pessoa FROM aluno WHERE id_turma = $id_turma) order by pes_nome ASC";

if ($stmt = mysqli_prepare($con, $busca_alunos)) {

/* execute statement */
mysqli_stmt_execute($stmt);

/* bind result variables */
mysqli_stmt_bind_result($stmt, $nome, $id_pessoa);

/* fetch values */
while (mysqli_stmt_fetch($stmt)) {

//cria um objeto javascript para adicionar na lista no array lista de presencas
echo("
<script>
var alunoInfo = {
'IdAluno': $id_pessoa,
'NomeAluno': '$nome',
'Aula1':false,
'Aula2':false,
'Aula3':false,
'Aula4':false
};

listaDePresencas[$id_pessoa] = alunoInfo;
</script>
");

echo('
<table>
<tr>
<td width="400">
<label for="id_pessoa" style="color: #808080">'.$nome.'</label>
<input type="hidden" name="id_pessoa[]" value="'.$id_pessoa.'" >
</td>
<td width=200 style=font-size: 14px; color: #808080">
<label>Aula:</label>
<label>1º</label><input type="checkbox" onclick="setaPresenca(1, this, '.$id_pessoa.')">
<label>2º</label><input type="checkbox" onclick="setaPresenca(2, this, '.$id_pessoa.')">
<label>3º</label><input type="checkbox" onclick="setaPresenca(3, this, '.$id_pessoa.')">
<label>4º</label><input type="checkbox" onclick="setaPresenca(4, this, '.$id_pessoa.')">
</td>
<td width="200" style="font-size: 14px; color: #808080">
<label>Justificar:</label><input type="checkbox" name="justificar">
</td>
<td width="40">
<label style="color: #808080">%</label>
</td>
</tr>
</table>
<table>
<tr>
<td width="940">
<hr size="1" width="100%" style="margin-top: -2px">
</td>
</tr>
</table>'
);
}
//Após o final do loop nos alunos serializa todo o objeto lista de presencas e seta no input hidden -->
echo("<script>
CriaHiddenArray();
</script>");

}

/* close statement */
mysqli_stmt_close($stmt);
}
}
else{
echo "Turma Não encontrada!";
}

?>

</fieldset>
</div>
</div>
<div class="linha">
<div class="coluna col12">

Kleber Araujo

Kleber Araujo
Responder

Mais Posts

18/11/2016

Kleber Araujo

Olá, o código termina ai?, acho que ficou faltando um pedaço do código, não estou vendo onde estão implementados os checkbox''s para a marcação da presença, ou é isso que vc precisa extamente "a implementação dessas marcações usando checkbox''s"?
Responder

18/11/2016

Patrick Santos

ops faltou metade! continuação!

$id_instituicao = $_POST['instituicao'];
							    $id_curso = $_POST['curso'];
							    $id_modulo = $_POST['modulo'];
							    $id_unidadecurricular = $_POST['unidadecurricular'];

							    $busca_turma = "SELECT turma.id_turma FROM turma
							                    WHERE
							                    turma.id_instituicao = $id_instituicao
							                    &&
							                    turma.id_curso = $id_curso
							                    &&
							                    turma.id_modulo = $id_modulo
							                    &&
							                    turma.id_unidadecurricular = $id_unidadecurricular";
							    //echo $busca_turma;
							    $procura_turma = mysqli_query($con, $busca_turma) or die($con->error);
							    //echo $busca_turma;
							    $resultado_procura_turma = mysqli_fetch_assoc($procura_turma) or die($con->error);


							    $id_turma = $resultado_procura_turma['id_turma'];

							    if(!empty($id_turma)){

							    $busca_alunos = "SELECT pes_nome, id_pessoa FROM pessoa WHERE id_pessoa in(SELECT id_pessoa FROM aluno WHERE id_turma = $id_turma) order by pes_nome ASC";
							 
			                    if ($stmt = mysqli_prepare($con, $busca_alunos)) {

			                    /* execute statement */
			                    mysqli_stmt_execute($stmt);

			                    /* bind result variables */
			                    mysqli_stmt_bind_result($stmt, $nome, $id_pessoa);

			                    /* fetch values */
			                    while (mysqli_stmt_fetch($stmt)) {
			                      	echo('
			                      		<table>
								        	<tr>
								        		<td width="400">
								        			<label for="id_pessoa" style="color: #808080">'.$nome.'</label>
								        		<input type="hidden" name="id_pessoa[]" value="'.$id_pessoa.'" >
								        		</td>
								        		<td width=200 style=font-size: 14px; color: #808080">
								        			<label>Aula:</label>
								        			<label>1º</label><input type="checkbox" name="aula1[]">
								        			<label>2º</label><input type="checkbox" name="aula2[]">
								        			<label>3º</label><input type="checkbox"  name="aula3[]"">
								        			<label>4º</label><input type="checkbox" name="aula4[]"">
								        		</td>
								        		<td width="200" style="font-size: 14px; color: #808080">
								        			<label>Justificar:</label><input type="checkbox" name="justificar">
								        		</td>
								        		<td width="40">
								        			<label style="color: #808080">%</label>
								        		</td>
								        	</tr>
									    </table>
									    <table>   
								        	<tr>
								        		<td width="940">
								        			<hr size="1" width="100%" style="margin-top: -2px">
								        		</td>
								        	</tr>
									    </table>'
									);
			                    }

			                }

			                    /* close statement */
			                    mysqli_stmt_close($stmt);
			                    }
			                    }
			                	else{
			                		echo "Turma Não encontrada!";
			                	}
			                
		            	?>
		         	
				</fieldset>
			</div>
		</div>
		<div class="linha">
			<div class="coluna col12">
				<fieldset>
				<legend><h3>Conteúdo Ministrado</h3></legend>
					<table>
						<tr>
							<td>
								<textarea name="conteudoministrado" rows="4" cols="125" maxlength="300"></textarea>
							</td>
						</tr>
					</table>
					<table>
						<tr>
							<td>
								<label><b>Data da Aula:</b></label>
								<input type="date" name="dataaula">
							</td>
						</tr>
					</table>
				</fieldset>
			</div>
		</div><!-- 	TERMINO CONTEUDO MINISTRADO -->
		<div class="linha">
			<div class="coluna col12">
				<table>
					<tr>
						<td>
							<input class="botao" type="submit" name="Enviar" style="margin-left:20px;">
						</td>
						<td>
							<input class="botao" type="reset" name="Limpar" style="margin-left:20px;">
						</td>
					</tr>
				</table>
			</div>
		</div>
	</form>
Responder

22/11/2016

Kleber Araujo

Olá, criei uma solução usando javascript puro, pois não sabia se vc está usando Jquery, segue minha solução e lá no final após a última tag escrevi o código php para quando for dar o post no form de frequências, qualquer dúvida me dá um toque, depois posto explicando o código estou meio sem tempo agora, mas acho que vai entender, está varias partes pois não cabe no mesmo post:

<div class="linha"><!-- Inicio Barra de menus -->
  <div class="coluna col12"> 
    <nav class="menu-principal">
      <ul class="menu-grande">
      <li><a href="?p=home" style="margin-left: 20px">Página Inicial</a></li>
      <li><a href="?p=turmas">Turmas</a></li>
      <li><a href="?p=unidadecurricular">Unidade Curricular</a></li>
      <li><a href="?p=frequencia">Frequência Escolar</a></li>
      <li><a href="?p=boletimestudantil">Boletim Estudantil</a></li>
      </ul>
    </nav>    
  </div>
</div><!-- Termino barra de menus -->
<div class="linha"> <!--  INICIO BUSCA TURMAS PARA FAZER FREQUENCIA-->
    <div class="coluna col12">
      <form action="" method="post">
          <fieldset>
          <legend><h3>Frequência Escolar</h3></legend>
              <table cellspacing="10">
                  <tr>
                    <td>
                      <label for="instituicao">Instituição:</label>
                    </td>
                    <td>
                      <select type="text" name="instituicao" style="width: 200px">
                        <?php
                        require_once('conecta_db.php');
                         
 
                        $query = "SELECT nome, id_instituicao FROM instituicao order by nome ASC";
 
                        if ($stmt = mysqli_prepare($con, $query)) {
 
                        /* execute statement */
                        mysqli_stmt_execute($stmt);
 
                        /* bind result variables */
                        mysqli_stmt_bind_result($stmt, $nome, $id_instituicao);
 
                        /* fetch values */
                        while (mysqli_stmt_fetch($stmt)) {
                          echo("<option value='".$id_instituicao."'>".$nome."</option>");
                        }
 
                        /* close statement */
                        mysqli_stmt_close($stmt);
                        }
                        ?>
                      </select>
                    </td>
                    <td>
                      <label>Curso:</label>
                   </td>
                   <td>
                      <select type="text" name="curso" style="width: 200px">
                        <?php
                        require_once('conecta_db.php');
 
                        $query = "SELECT nome, id_curso FROM curso order by nome ASC";
 
                        if ($stmt = mysqli_prepare($con, $query)) {
 
                        /* execute statement */
                        mysqli_stmt_execute($stmt);
 
                        /* bind result variables */
                        mysqli_stmt_bind_result($stmt, $nome, $id_curso);
 
                        /* fetch values */
                        while (mysqli_stmt_fetch($stmt)) {
                          echo("<option value='".$id_curso."'>".$nome."</option>");
                        }
                        $_SESSION['$id_curso'] = $id_curso;
                        /* close statement */
                        mysqli_stmt_close($stmt);
 
                        }
                                         
                        ?>                     
                      </select>
                   </td>
                </tr>
                <tr>
                   <td>
                      <label for="modulo"> Módulo:</label>
                   </td>   
                   <td>
                      <select type="text" name="modulo" style="width: 200px">
                        <?php
                        require_once('conecta_db.php');
 
                        $query = "SELECT nome, id_modulo FROM modulo order by nome ASC";
 
                        if ($stmt = mysqli_prepare($con, $query)) {
 
                        /* execute statement */
                        mysqli_stmt_execute($stmt);
 
                        /* bind result variables */
                        mysqli_stmt_bind_result($stmt, $nome, $id_modulo);
 
                        /* fetch values */
                        while (mysqli_stmt_fetch($stmt)) {
                          echo("<option value='".$id_modulo."'>".$nome."</option>");
                        }
 
                        /* close statement */
                        mysqli_stmt_close($stmt);
                        }
                         
                        ?>                 
                      </select> 
                   </td>
                   <td>
                      <label for="unidadecurricular"> Unidade Curricular:</label>
                   </td>   
                   <td>
                      <select type="text" name="unidadecurricular" style="width: 200px">
                        <?php
                        require_once('conecta_db.php');
 
                        $query = "SELECT nome, id_unidadecurricular FROM unidadecurricular order by nome ASC";
 
                        if ($stmt = mysqli_prepare($con, $query)) {
 
                        /* execute statement */
                        mysqli_stmt_execute($stmt);
 
                        /* bind result variables */
                        mysqli_stmt_bind_result($stmt, $nome, $id_unidadecurricular);
 
                        /* fetch values */
                        while (mysqli_stmt_fetch($stmt)) {
                          echo("<option value='".$id_unidadecurricular."'>".$nome."</option>");
                        }
 
                        /* close statement */
                        mysqli_stmt_close($stmt);
                        }
                         
                        ?>                 
                      </select> 
                   </td>
                </tr>
        </table>
        <p style="text-align: center; font-size: 14px; color: red;">
            <?php if(isset($_SESSION['erro_busca_turma'])){
              echo $_SESSION['erro_busca_turma'];
              unset($_SESSION['erro_busca_turma']);
            }?>
          </p>
            <table cellspacing="10">
              <tr>
                <td align="left">
                  <input class="botao" type="submit" name="busca_aluno" value="Buscar">  
                </td>
              </tr>
            </table>
        </fieldset>
      </form>
  </div>
</div> <!-- TERMINO DA BUSCA DE TURMAS PARA FAZER FREQUENCIA -->
<?php ?>
Responder

22/11/2016

Kleber Araujo

continuação com a parte final do post de presencas:

 <div class="linha">
            <div class="coluna col12">
                <table>
                    <tr>
                        <td>
                            <input class="botao" type="submit" name="Enviar" style="margin-left:20px;">
                        </td>
                        <td>
                            <input class="botao" type="reset" name="Limpar" style="margin-left:20px;">
                        </td>
                    </tr>
                </table>
            </div>
        </div>
    </form>

<?php	
	if(isset($_POST['Enviar'])){
	
		$marcacoes = json_decode($_POST['presencas'], true);	
		
		foreach($_POST['id_pessoa'] as $idsAlunos){
			
			//lógica para atualizar no banco já com os valores todos disponíveis dos alunos e das presencas/faltas
			 $alunoId = $marcacoes[$idsAlunos]["IdAluno"];
			 $nomeAluno = $marcacoes[$idsAlunos]["NomeAluno"];
			 
			 $aula1 = ($marcacoes[$idsAlunos]["Aula1"] ? true : false);
			 $aula2 = ($marcacoes[$idsAlunos]["Aula2"] ? true : false);
			 $aula3 = ($marcacoes[$idsAlunos]["Aula3"] ? true : false);
			 $aula4 = ($marcacoes[$idsAlunos]["Aula4"] ? true : false);
		}
	} 
?>
Responder

01/12/2016

Patrick Santos

Valeeeeeeeeeeeeeeeeeeeeeeeeeeu manooo!
Responder

01/12/2016

Patrick Santos

Mano quais variaveis eu pego pra adicionar no banco? tenho que fazer com loop?
Responder

01/12/2016

Kleber Araujo

Então ai depende da estrutura do seu banco se quiser me mandar como está banco as tabelas aliás, eu posso te falar como ficaria melhor para armazenar, sim o loop serve para percorrermos todas as marcacoes de cada aluno, para cada item no Loop, temos o AlunoId e se marcou ou não as 4 aulas
Responder

01/12/2016

Patrick Santos

pode me passar seu skype se tiver, eu sou novo nisso e nao entendo muito bem, preciso entregar um site(meia boca) até dia 7 rsrs, projeto de escola, se puder me ajuda, só falta salvar essas frequencias e imprimi-las em um historico, numa pagina já criada.
Responder

02/12/2016

Kleber Araujo

segue meu skype:

kleber_skletor

então só que eu estou sem 3g esses dias deu um problema na minha linha, só vou conseguir falar contigo a noite ou no final de semana, mas adiciona lá,
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar