PHP e MySQL

 
 
Parte VIII - PHP 5.3 com Banco de dados MySQL 5.1
Seção Matérias
 

Menu de administração

Menu geral de administração do projeto exemplo "Controle de alunos".

Formulário: Menu de administração

Este formulário, bemo como, o programa "index.html" considerados ponto de partida das diversas funções do projeto exemplo já foram discutidos em páginas anteriores que tratam dos programas vinculados aos submenus "Alunos" e "Aluno-disciplinas".

 

Submenu Matérias

De modo análogo ao submenu "Cursos", esta seção do menu também exibe duas caixas de opções que determinam a operação do botão Enter e, logo abaixo, apresenta o botão Listar.

Botão Listar - este botão executa o programa "lista_materias.php" que emite o relatório das matérias ou disciplinas cadastradas, conforme exemplo:

Relatório: Listagem de matérias

Programa: lista_materias.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Lista matérias</title>
<link rel="stylesheet" href="alunos.css" type="text/css" />
</head>
<body bgcolor="#EEEEFF">
<div id=area_geral>
<table width="750" border="0" bgcolor="#000033"
cellspacing="0" cellpadding="0">
<tr><td>&nbsp;</td></tr>
<tr>
<td><font size="4" color="#FFFFFF"><strong>&nbsp;&nbsp;
Controle de Alunos </strong></font></td>
</tr>
<tr><td>&nbsp;</td></tr>
</table>
<table width="750" border="0" bgcolor="#6699FF">
<tr><td><input type="button" value=" &nbsp;Voltar&nbsp; "
onclick="window.location='index.html'"></td></tr>
<tr>
<td>
<table width="500" border="0" bgcolor="#DADDFE" align="center"
cellspacing="0" cellpadding="3" rules="cols">
<tr>
<td colspan="5" align="center" class="f1">Listagem de matérias</td>
</tr>
<tr><td colspan="5">&nbsp;</td></tr>
<tr align="center">
<td width="40">&nbsp;</td>
<td width="20"><strong>Código</strong></td>
<td width="80"><strong>descrição</strong></td>
<td width="80"><strong>Horas-aula</strong></td>
<td width="40"></td>
</tr>
<?php
include("conecta.inc");
$sql="SELECT * FROM materias ORDER BY cod_mat";
$res=mysql_query($sql);
while($registro=mysql_fetch_row($res)) {
echo "<tr>";
echo "<td>&nbsp;</td>";
echo "<td align='right'>$registro[0]&nbsp;</td>";
echo "<td>&nbsp;$registro[1]</td>";
echo "<td>&nbsp;$registro[2]</td>";
echo "<td>&nbsp;</td>";
echo "</tr>";
}
mysql_close($conexao);
?>
<td>&nbsp;</td>
</table></td>
</tr>
<tr><td>&nbsp;</td></tr>
</table>
</div>
</body>
</html>

O botão Listar ativa o programa acima que relaciona todos os registros contidos na tabela "materias", efetuando a conexão com o banco de dados e a impressão da tabela. Segue a transcrição das instruções do programa que executa essa tarefa:

include("conecta.inc");
$sql="SELECT * FROM materias ORDER BY cod_mat";
$res=mysql_query($sql);
while($registro=mysql_fetch_row($res)) {
echo "<tr>";
echo "<td>&nbsp;</td>";
echo "<td align='right'>$registro[0]&nbsp;</td>";
echo "<td>&nbsp;$registro[1]</td>";
echo "<td>&nbsp;$registro[2]</td>";
echo "<td>&nbsp;</td>";
echo "</tr>";
}
mysql_close($conexao);

A variavel $registro recebe o valor de cada linha da tabela através da instrução mysql_fetch_row($res). A instrução while controla a repetição, executando as instruções echo enquanto a condição for verdadeira.

Botão Enter - o botão enter proporciona condições de inserção e eliminação de cursos, executando o seguinte programa:

Programa: admin_materias.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Administra matérias</title>
<link rel="stylesheet" href="alunos.css" type="text/css" />
</head>
<?php
$oper=$_POST['oper4'];
?>
<body bgcolor="#EEEEFF">
<div id=area_geral>
<table width="750" border="0" bgcolor="#000033"
cellspacing="0" cellpadding="0">
<tr><td>&nbsp;</td></tr>
<tr>
<td><font size="4" color="#FFFFFF"><strong>&nbsp;&nbsp;
Controle de Alunos </strong></font></td>
</tr>
<tr><td>&nbsp;</td></tr>
</table>
<table width="750" border="0" bgcolor="#6699FF">
<tr><td><input type="button" value=" &nbsp;Voltar&nbsp; "
onclick="window.location='index.html'"></td></tr>
<tr>
<td>
<table width="600" border="0" bgcolor="#DADDFE"
align="center" cellspacing="0" cellpadding="3" rules="cols">
<?php
if($oper=="exc"){
echo "<tr><td colspan='5' align='center'>
<font size='3'>Exclusão de matérias<font></td></tr>";
}else
echo "<tr><td colspan='5' align='center'>
<font size='3'>Inclusão de matérias<font></td></tr>";
?>
<tr><td colspan="5">&nbsp;</td></tr>
<tr align="center">
<td width="30">&nbsp;</td>
<td width="30"><strong>Código</strong></td>
<td width="95"><strong>descrição</strong></td>
<?php
if($oper=="exc"){
echo "<td width='90'><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Horas-aula &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Exc.</strong></td>";
}else
echo "<td width='90'><strong>Horas-aula</strong></td>";
?>
<td width="30"></td></tr>
<tr><td>&nbsp;</td>
<td colspan="3">
<?php
if ($oper=="inc"){
echo "<form name='form1' method='post' action='inc_materias.php'>";
for($i=0;$i<5;$i++){
?>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="text" size="3" name="<?php echo 'codmat'.$i;?>"
value="" /> &nbsp;&nbsp;&nbsp;
<input type="text" size="25" name="<?php echo 'descmat'.$i;?>"
value="" /> &nbsp;&nbsp;&nbsp;
<input type="text" size="15" name="<?php echo 'aulamat'.$i;?>"
value="" />
</div>
<?php
}
?>
<p align="right">
<input type="submit" name="envia" id="envia" value=" Incluir " /> &nbsp;
<input type="reset" value=" Limpar "/>&nbsp;&nbsp;&nbsp;
</p>
</form>
</td>
<td>&nbsp;</td></tr>
<?php
}else{
echo "<form name='form2' method='post' action='exc_materias.php'>";
include("conecta.inc");
$sql=("SELECT * FROM materias ORDER BY cod_mat");
$res=mysql_query($sql);
$n=mysql_num_rows($res);
for($i=0;$i<$n;$i++){
$reg=mysql_fetch_array($res);
$cod_mat=$reg["cod_mat"];
$desc_mat=$reg["desc_mat"];
$aula_mat=$reg["aula_mat"];
?>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="text" size="3" name="<?php echo 'cod'.$i;?>"
value="<?php echo $cod_mat;?>" readonly="" /> &nbsp;&nbsp;&nbsp;
<input type="text" size="25" name="<?php echo 'desc'.$i;?>"
value="<?php echo $desc_mat;?>" readonly="" /> &nbsp;&nbsp;&nbsp;
<input type="text" size="15" name="<?php echo 'aula'.$i;?>"
value="<?php echo $aula_mat;?>" readonly="" /> &nbsp;
<input type="checkbox" name="<?php echo 'box'.$i;?>"
value="" />
</div>
<?php
}
?>
<p align="right">
<input type="submit" name="executa" id="executa"
value=" Executar " /> &nbsp;&nbsp;&nbsp;&nbsp;
</p>
<input type="hidden" name="ncurso" value="<?php echo $n;?>">
</form>
</td>
<?php
}
?>
<td>&nbsp;</td></tr>
</table></td>
</tr>
<tr><td>&nbsp;</td></tr>
</table>
</div>
</body>
</html>

O programa "admin_materias.php" rege a manutenção da tabela "materias", avalia a operação de opção do usuário e ativa o programa requerido.

Formulário: Inclusão de matérias

O formulário "Inclusão de matérias" apresenta cinco linhas para entrada de dados. O usuário preenche as caixas de texto e envia o formulário, clicando no botão Incluir. O nome do programa chamado aparece descrito na cláusula action da tag form.

Programa: inc_materias.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Inclui marérias</title>
<link rel="stylesheet" href="alunos.css" type="text/css" />
</head>
<body bgcolor="#EEEEFF">
<div id=area_geral>
<table width="750" border="0" bgcolor="#000033"
cellspacing="0" cellpadding="0">
<tr><td>&nbsp;</td></tr>
</table>
<table width="750" border="0" bgcolor="#6699FF">
<tr><td><input type="button" value=" &nbsp;Voltar&nbsp; "
onclick="window.location='index.html'"></td></tr>
<tr>
<td>
<table width="500" border="0" bgcolor="#DADDFE" align="center"
cellspacing="0" cellpadding="3" rules="cols">
<tr>
<td colspan="5" align="center" class="f1">Inclusão de matérias</td>
</tr>
<tr>
<td colspan="5">&nbsp;</td></tr>
<tr align="center">
<td width="30">&nbsp;</td>
<td width="30"><strong>Código</strong></td>
<td width="80"><strong>descrição</strong></td>
<td width="90"><strong>Hora-aula</strong></td>
<td width="30"></td>
</tr>
<tr><td>&nbsp;</td>
<td colspan="3">
<?php
include("conecta.inc");
for($i=0; $i<=4; $i++){
if(isset($_POST['codmat'.$i])){
$codmat=$_POST['codmat'.$i];
if(is_numeric($codmat)){
$descmat=$_POST['descmat'.$i];
$aulamat=$_POST['aulamat'.$i];
$sql2="INSERT INTO materias(cod_mat, desc_mat, aula_mat)"
. "VALUES ('$codmat','$descmat','$aulamat')";
mysql_query($sql2);
echo "<p align='center'>Matéria $codmat $descmat (incluída)</p>";
}
}
}
mysql_close($conexao);
?>
</td>
<td>&nbsp;</td></tr>
</table></td>
</tr>
<tr><td>&nbsp;</td></tr>
</table>
</div>
</body>
</html>

A Inserção de novos registros ocorre quando o código da matéria for uma literal numérica.

Formulário: Exclusão de matérias

O formulário "Exclusão de matérias" mostra uma relação das matérias existentes na tabela e ao lado de cada matéria uma caixa de seleção que possibilita marcar o registro a ser eliminado. O botão Executar aciona o programa, a seguir, cujo nome se acha determinado na cláusula action da tag form.

Programa: exc_materias.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Exclui matérias</title>
<link rel="stylesheet" href="alunos.css" type="text/css" />
</head>
<body>
<div id=area_geral>
<table width="750" border="0" bgcolor="#000033"
cellspacing="0" cellpadding="0">
<tr><td>&nbsp;</td></tr>
<tr>
<td><font size="4" color="#FFFFFF"><strong>&nbsp;&nbsp;
Controle de Alunos </strong></font></td>
</tr>
<tr><td>&nbsp;</td></tr>
</table>
<table width="750" border="0" bgcolor="#6699FF">
<tr><td><input type="button" value=" &nbsp;Voltar&nbsp; "
onclick="window.location='index.html'"></td></tr>
<tr>
<td>
<table width="70%" border="0" bgcolor="#DADDFE" align="center"
cellspacing="0" cellpadding="0">
<tr><td width="15%">&nbsp;</td>
<td width="70%">&nbsp;</td>
<td width="15%">&nbsp;</td></tr>
<tr><td colspan="3" align="center">
<h3>Exclusão de matérias</h3></td></tr>
<tr><td>&nbsp;</td><td>
<?php
$n=$_POST['ncurso'];
include("conecta.inc");
for($i=0;$i<$n;$i++){
$cod=$_POST['cod'.$i];
$desc=$_POST['desc'.$i];
if(isset($_POST['box'.$i])){
$checar=consulta_aluno_dis($cod);
if(!$checar){
$sql="DELETE FROM materias WHERE cod_mat=$cod";
mysql_query($sql);
echo "<p align='center'>Matéria $cod $desc (excluída)</p>";
}else
echo "<p align='center'>Matéria $cod $desc não excluída.<br>
(Há aluno(s) matriculado(s) nesta matéria)</p>";
}
}
mysql_close($conexao);
?>
<div>&nbsp;</div>
</td><td>&nbsp;</td></tr>
</table></td>
<tr><td colspan="3">&nbsp;</td></tr>
</table>
</div>
<?php
function consulta_aluno_dis($mat){
$sql_dis="SELECT * FROM disciplinas WHERE cod_dis=$mat";
$res_dis=mysql_query($sql_dis);
if(mysql_num_rows($res_dis)==0)
return false;
else
return true;
}
?>
</body>
</html>

A exclusão só terá efeito se não houver nenhum aluno matriculado nesta matéria ou disciplina, o que é verificado na function consulta _aluno_dis deste programa.