Colocar valor no checkbox dentro de array e inserir na tabela

HTML

MySQL

PHP

18/11/2016

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

Curtidas 0

Melhor post

Kleber Araujo

Kleber Araujo

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">
GOSTEI 1

Mais Respostas

Kleber Araujo

Kleber Araujo

18/11/2016

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"?
GOSTEI 0
Patrick Santos

Patrick Santos

18/11/2016

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>
GOSTEI 0
Kleber Araujo

Kleber Araujo

18/11/2016

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 ?>
GOSTEI 0
Kleber Araujo

Kleber Araujo

18/11/2016

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);
		}
	} 
?>
GOSTEI 1
Patrick Santos

Patrick Santos

18/11/2016

Valeeeeeeeeeeeeeeeeeeeeeeeeeeu manooo!
GOSTEI 0
Patrick Santos

Patrick Santos

18/11/2016

Mano quais variaveis eu pego pra adicionar no banco? tenho que fazer com loop?
GOSTEI 0
Kleber Araujo

Kleber Araujo

18/11/2016

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
GOSTEI 0
Patrick Santos

Patrick Santos

18/11/2016

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.
GOSTEI 0
Kleber Araujo

Kleber Araujo

18/11/2016

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á,
GOSTEI 0
POSTAR