Projeto Integrador - 2010.1 - Equipe Coffee Break

De MediaWiki do Campus São José
Revisão de 22h01min de 3 de julho de 2010 por Mario (discussão | contribs)
Ir para navegação Ir para pesquisar

Diario do Projeto

Projeto 2010.1

Equipe CoffeBreak

Subdominio coffeebreak.sj.ifsc.edu.br

IP Válido 200.135.37.103

Alunos: Caroline, Jesse, Mario Andre, Rodolfo


8/6/10 - Terça-feira

Física

  • Separado os Rak's por equipe
  • Colocado dois Path Panel e um organizador no armario da equipe
  • Não tinhamos cabo grande o suficiente para alcançar o nosso RAK

Enlace

  • Não foi feito nada nesse dia

Rede

  • Escolhido nosso servidor

Img10.jpg

  • Instalado o Ubuntu Server 10.04 LTS
  • Instalado os aplicativos
    • SSH ( com o sistema operacional )
    • apache2
      • bind9
      • dhcp3-server

Aplicação

  • Não foi feito nada nesse dia

9/6/10 - Quarta-feira

Física

  • Passamos 3 Cabos do RACK principal até o RACK da nossa equipe

Img20.jpgImg21.jpgImg19.jpg

  • Os cabos foram crimpados no Path Panel do RACK da equipe
  • Instalado 3 áreas de trabalho (na parede)

Enlace

  • Não foi feito nada nesse dia

Rede

  • Configurado DHCP
  • Configurado NTP
  • Testado NTP OK

Aplicação

  • Não foi feito nada nesse dia

10/6/10 - Quinta-feira

Física

  • Crimpado os cabos no Path Panel do armario principal
  • Testado todos os cabos, conexão com Path Panel e Área de trabalho

Enlace

  • Não foi feito nada nesse dia

Rede

  • Testado DHCP
  • Configurado NAT e Roteamento

Aplicação

  • Foi iniciado o processo de criação
  • A estrutura do bando de dados MySQL foi projetada e implantada

Segue a estrutara do banco de dados:

--
-- Banco de Dados: `coffeebreak`
--

-- --------------------------------------------------------

--
-- Estrutura da tabela `anuncio`
--

CREATE TABLE IF NOT EXISTS `anuncio` (
  `aid` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `titulo` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `texto` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `link` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `visualizacoes` int(11) NOT NULL,
  `visitas` int(11) NOT NULL,
  `expira_em` datetime NOT NULL,
  `expirado` char(1) NOT NULL,
  PRIMARY KEY (`aid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=49 ;

-- --------------------------------------------------------

--
-- Estrutura da tabela `banner`
--

CREATE TABLE IF NOT EXISTS `banner` (
  `bid` int(11) unsigned zerofill NOT NULL,
  PRIMARY KEY (`bid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Estrutura da tabela `login`
--

CREATE TABLE IF NOT EXISTS `login` (
  `id` int(6) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `usuario` varchar(100) NOT NULL,
  `senha` varchar(255) NOT NULL,
  `ultimo_ip` varchar(100) NOT NULL,
  `ultima_data` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

11/6/10 - Sexta-feira

Física

  • Não foi feito nada nesse dia

Enlace

  • Manobrado os cabos do servidor direito até o switch do RAK Central para conexão com a COINF

Rede

  • Configurado o Ip Válido
  • Testado o DNS
  • Colocado o servidor no armario da direita no laboratorio Redes 1

Aplicação

  • Foi feito a conexão ao banco de dados orientado a objetos.

Segue o código (mysql.php):

<?
class conMysql {

 var $servidor = "localhost";
 var $usuario = "root";
 var $senha = "4coffee4";
 var $database = "coffeebreak";
 var $validacao = "TGHDFEU1H5N5cUo2fHfUeHe1bUrheeaukghdyuGHEgh443256gyfegR";

 var $query;
 var $link;
 var $resultado;
 
function conectar() {
$this->link = mysql_connect($this->servidor,$this->usuario,$this->senha);
if (!$this->link) {
echo "Falha na conexao com o Banco de Dados!<br />";
echo "Erro: " . mysql_error();
die();
} elseif (!mysql_select_db($this->database, $this->link)) {
echo "O Banco de Dados solicitado não pode ser aberto!<br />";
echo "Erro: " . mysql_error();
die();
	}
} // fecha conectar

function desconectar() {
return mysql_close($this->link);
}

function executeQuery($query) {
$this->conectar();
$this->query=$query;
if($this->resultado=mysql_query($this->query)) {
$this->desconectar();
return $this->resultado;
} else {
echo "Ocorreu um erro na execução da SQL";
echo "Erro :" . mysql_error();
echo "SQL: " . $query;
die();
desconectar();
		}
	}
} // fecha class
?>

Estanciando e executando a Query:

require 'admin/mysql.php'; // Faz o requerimento da classe conMysql
$conexao = new conMysql(); // Faz o estanciamento
$conexao->executeQuery("select * from anuncio where expirado = 'n'"); // Executa a Query

14/6/10 - Segunda-feira

Física

  • iniciado a confecção dos pacth cord

Enlace

  • Fomos informados pelo professor Casagrande que os patch cord prontos(que são do laboratorio Redes 1), usados na conexão cruzada nos RACKs das equipes tem que ser trocados, por path cord confeccionados pelas mesmas

Rede

Aplicação

  • Foi implementado a página inicial do sistema. Página:
// Função do ítem deletar
<script language='Javascript'>
function confirmar() {
  if( confirm( 'Tem certeza que deseja deletar?' ) ) {
	  return true;
  } else {
	  return false;
  }
}
</script>

<table id="box-table-a" summary="Coffee Break">
    <thead>
       <tr>
         <th scope="col">Título</th>
         <th scope="col">Cliques</th>
         <th scope="col">Tempo Restante</th>
         <th scope="col">Expirado</th>
         <th scope="col">Editar</th>
         <th scope="col">Excluir</th>
       </tr>
    </thead>
<tbody>

<?
	$conexao = new conMysql();
	
	function transData($dataMySQL) {
	$agora = date("Y-n-j H:i:s");
	$data_atual = explode(' ', $agora);
	
	$data_de_cadastro = explode(' ', $dataMySQL);
	// Tranforma a difença entre as datas que estão no formato aaaa/mm/dd em dias faltantes.
	$time_inicial = strtotime($data_atual[0]);
	$time_final = strtotime($data_de_cadastro[0]);
	$diferenca = $time_final - $time_inicial;
	$dias = (int)floor( $diferenca / (60 * 60 * 24));
		if ($dias <= 0) {
		$dias = "";
		} elseif ($dias == 1) {
		$dias .= " dia";
		} else {
		$dias .= " dias";
		}
	return $dias;
	}
	// Se o banner estiver expirado, o mesmo é atualizado e a página do sistema é atualizada.
	function atualizaBD($dataBD,$aid,$expirado) {
	$agora = date("Y-n-j H:i:s");
	$tempo_transcorrido = (strtotime($agora)-strtotime($dataBD));
		if (($tempo_transcorrido > 0) && ($expirado != "s")) {
				$conexao = new conMysql();
				$conexao->executeQuery("update anuncio set expirado='s' where aid='$aid'");
				echo("<script>window.location = 'sistema.php';</script>");
			}
	}
	
	$resultado = $conexao->executeQuery("select * from anuncio order by expira_em desc");
	
	// Gera as linhas da tabela
        while ($busca = mysql_fetch_object($resultado)) {
	
	atualizaBD($busca->expira_em,$busca->aid,$busca->expirado);
	// Troca "n" ou "s" por "Sim" ou "Não". 	
	if ($busca->expirado == n) {
			$expirado = "Não";
		} else {
			$expirado = "Sim";
		}
			
			echo '<tr>
			<td><a href="' . $busca->link . '">' . $busca->titulo . '</a></td>
			<td>' . $busca->visitas . '</td>
			<td>' . transData($busca->expira_em) . ' </td>
			<td>' . $expirado . '</td>
			<td><a href="sistema.php?action=editar&editar=' . $busca->aid . '">
                        <img src="imagens/edit.png" width="16" height="16" /></a></td>
			<td><a href="excluir.php?action=excluir&excluir=' . $busca->aid . '" onClick="return confirmar();">
                        <img src="imagens/delete.png" width="16" height="16" /></a></td>
			</tr>';
}
?>
</tbody>
</table>

15/6/10 - Terça-feira

Física

  • confeccionado 4 path cord para conexão cruzada, para o RACK da equipe

Enlace

Rede

Aplicação

Formulário de cadastro:

	<form name="cadastrar" onSubmit="return formularios();" method="post" action="enviar.php?action=novo">
    <table id="box-table-b" summary="Coffee Break">
    <thead>
       <tr>
         <th scope="col" align="left">Cadastro de Anúcio</th>
         <th scope="col" align="right"><? $data = date("j/n/Y"); $hora = date("H:i:s"); echo "Data: $data - Horário: $hora"; ?></th>
       </tr>
     </thead>
     <tbody>
     <tr>
     <td><div class="encapsulador-300"><b>Título: </b><br /><input class="input-1" type="text" name="titulo"></div></td>
     <td><div class="encapsulador-300"><b>Link: </b><br /><input class="input-1" type="text" name="link"></div></td>
     </tr>
     <tr>
	 <td colspan="2"><div class="encapsulador-680"><b>Texto: </b><br />
         <textarea class="textarea-1" rows="10" name="texto"></textarea></div></td>
     </tr>
     <tr>
     <td><div class="encapsulador-200"><b>Expira em: </b>
     <input class="input-2" id="date" type="text" name="expira_em"></div></td>
     <td><div class="encapsulador-200"><b>Expirado? </b>
     <input type="radio" name="expirado" value="n" checked> Não - 
     <input type="radio" name="expirado" value="s"> Sim</div></td>
     </tr>
     <tr>
	 <td colspan="2"><div class="encapsulador-150-center">
         <input name="enviar" type="submit" value="    Enviar    "></div></td>
     </tr>
     </tbody>
</table>
</form>

Formulário de edição:

	$conexao = new conMysql();
	$busca = mysql_fetch_object($conexao->executeQuery("select * from anuncio where aid='$editar'"));
		if ($busca->expirado == n) {
			$marcacao_ex = "<input type=\"radio\" name=\"expirado\" value=\"n\" checked> Não -
                        <input type=\"radio\" name=\"expirado\" value=\"s\"> Sim"; 
		} else {
			$marcacao_ex = "<input type=\"radio\" name=\"expirado\" value=\"n\"> Não -
                        <input type=\"radio\" name=\"expirado\" value=\"s\" checked> Sim";
		}
?>
	<form name="atualizar" onSubmit="return formularios();" method="post" action="atualizar.php?action=atualizar">
    <table id="box-table-b" summary="Coffee Break">
    <thead>
       <tr>
         <th scope="col" align="left">Cadastro de Anúcio</th>
         <th scope="col" align="right"><? $data = date("j/n/Y"); $hora = date("H:i:s"); echo "Data: $data - Horário: $hora"; ?></th>
       </tr>
     </thead>
     <tbody>
     <tr>
     <td><div class="encapsulador-300"><b>Título: </b><br />
     <input class="input-1" type="text" name="titulo" value="<? echo $busca->titulo ?>"></div></td>
     <td><div class="encapsulador-300"><b>Link: </b><br />
     <input class="input-1" type="text" name="link" value="<? echo $busca->link ?>"></div></td>
     </tr>
     <tr>
	 <td colspan="2"><div class="encapsulador-680"><b>Texto: </b><br />
         <textarea class="textarea-1" rows="10" name="texto"><? echo $busca->texto ?></textarea></div></td>
     </tr>
     <tr>
     <td><div class="encapsulador-200"><b>Expira em: </b>
     <input class="input-2" id="date" type="text" name="expira_em" value="<? echo $busca->expira_em ?>"></div></td>
     <td><div class="encapsulador-200"><b>Expirado? </b><? echo $marcacao_ex ?></div></td>
     </tr>
     <tr>
	 <td colspan="2"><div class="encapsulador-150-center">
         <input type="hidden" name="atualizar" value="<? echo $editar ?>">
         <input name="enviar" type="submit" value="    Atualizar    "></div></td>
     </tr>
     </tbody>
</table>
</form>

Foi implementado nos formulários do sistema funções JavaScript para verificação dos campos. Exemplo:

<form name="enviar" onSubmit="return formularios();" method="post" action="atualizar.php?action=atualizar">
<input type="text" name="titulo">
<input name="enviar" type="submit" value="Enviar">
</form>

<script language="JavaScript">
	function formularios(){
	if (document.enviar.titulo.value=="") {
		alert( "Entre com um título!" );
		document.enviar.titulo.focus();
		return false;
	}
	return true;
	}
</script>

16/6/10 - Quarta-feira

Física

  • confeccionado 4 pacth cord para conexão cruzada, parao RACK principal

Enlace

Rede

  • Instalados e configurados:Dansguardian, Squid, Firewall.

Aplicação

  • Foi feito a página de atualizacao.php para receber dados do formulário de edição:
<?
$action = $_GET['action'];

$atualizar = $_POST['atualizar'];
$titulo = $_POST['titulo'];
$texto = $_POST['texto'];
$link = $_POST['link'];
$expira_em = $_POST['expira_em'];
$expirado = $_POST['expirado'];

if ($action == "atualizar") {
$conexao = new conMysql();
$conexao->executeQuery("update anuncio set titulo='$titulo',texto='$texto',link='$link',
expira_em='$expira_em',expirado='$expirado' where aid='$atualizar'");

echo "<center><b>Anúncio atualizado com sucesso!</b></center>";
echo "<center><a href=sistema.php>Voltar</a></center>";
} else {
	echo "<center><b>Não há variáveis a serem processadas!</b></center>";
	echo "<center><a href=sistema.php>Voltar</a></center>";
}
?>

Foi feito a página de enviar.php para receber dados do formulário de cadastro:

<?
$action = $_GET['action'];

$titulo = $_POST['titulo'];
$texto = $_POST['texto'];
$link = $_POST['link'];
$data = $_POST['expira_em'];
$expirado = $_POST['expirado'];

$hora = date("H:i:s");

$expira_em =  "$data ". $hora;

if ($action == "novo") {
	$conexao = new conMysql();
	$conexao->executeQuery("insert into anuncio values(null,'$titulo','$texto','$link','0','0','$expira_em','$expirado')");
	echo "<center><b>Anúncio cadastrado com sucesso!</b></center>";
	echo "<center><a href=sistema.php>Voltar</a></center>";
} else {
	echo "<center><b>Não há variáveis a serem processadas!</b></center>";
	echo "<center><a href=sistema.php>Voltar</a></center>";
}
?>

17/6/10 - quinta-feira

Física

Enlace

Rede

Aplicação

  • Função do ítem excluir que verifica se usuário tem certeza:
<script language='javascript'>
function confirmar() {
  if( confirm( 'Tem certeza que deseja deletar?' ) ) {
	  return true;
  } else {
	  return false;
  }
}
</script>

Ítem deletar:

<td><a href="excluir.php?action=excluir&excluir=' . $busca->aid . '" onClick="return confirmar();">
<img src="imagens/delete.png" width="16" height="16" /></a></td>

Exemplo da ação:

Certeza deletar.gif

18/6/10 - Sexta-feira

Física

Enlace

Rede

Aplicação

  • Foi implantado um ítem de calendário nos formulários de Edição e Cadastro

Instalação e ativação:

<head>
    <link rel="stylesheet" type="text/css" href="calendario/calendar.css">
    <script type="text/javascript" src="calendario/mootools.js"></script>
    <script type="text/javascript" src="calendario/calendar.js"></script>
    <script type="text/javascript">
    window.addEvent('domready', function() { myCal = new Calendar({ date: 'Y-m-d' }); });
    </script>	
</head>

Uso (id="data" no input ativa a função JavaScript):

<input class="input-2" id="date" type="text" name="expira_em">

Exemplo da ação:

Calendario.gif

21/6/10 - Segunda-feira

Física

Enlace

Rede

Aplicação

  • Foi criado o design do sistema

Logo Coffee Break:

Logo coffeebreak.gif

Página de login do sistema:

Pagina login.jpg

Página inicial do sistema:

22/6/10 - terça-feira

Física

Enlace

Rede

Aplicação

23/6/10 - Quarta-feira

Física

Enlace

Rede

Aplicação

24/6/10 - Quinta-feira

Física

Enlace

Rede

Aplicação

25/6/10 - Sexta-feira

Física

Enlace

Rede

Aplicação

28/6/10 - Segunda-feira

Física

Enlace

Rede

Aplicação

29/6/10 - Terça-feira

Física

Enlace

  • Configurado access point
  • colocado access point para funcionar

Rede

Aplicação


30/6/10 - Quarta-feira

Física

Enlace

Rede

Aplicação

01/7/10 - Quinta-feira

Física

Enlace

Rede

Aplicação

02/7/10 - Sexta-feira

Física

Enlace

Rede

Aplicação

05/7/10 - Segunda-feira

Física

Enlace

Rede

Aplicação