User:Mp

From Laboratório MM 5

(Difference between revisions)
Jump to: navigation, search
Line 16: Line 16:
   
   
[[File:Captura de ecrã - 2012-01-20, 07.30.26.png]]
[[File:Captura de ecrã - 2012-01-20, 07.30.26.png]]
-
A base de dados de Breedom é constituída por 15 tabelas.
 
-
Animal
+
A base de dados é constituída por 15 tabelas.
-
Animal_has_subscrever
+
Vamos proceder a uma breve explicação sobre cada uma delas.
-
Comentário
+
-
Disponibilidade
+
-
Interesse_procura
+
-
Mensagens
+
-
Ninhada
+
-
Publicação
+
-
Raça
+
-
Review
+
-
Subscrever
+
-
Tipo_utilizadores
+
-
Utilizador
+
-
Utilizador_has_mensagens
+
-
Utilizador_has_subscrever
+
 +
animal: Nesta tabela guardam-se os dados dos animais. É desta tabela que se retira a maior parte dos dados que se inserem na página de perfil do cão (mini perfil).
-
Enunciar todos os elementos (tabelas) e depois explicar relações entre elas.
+
raça: Esta tabela armazena todas as raças de cães existentes, de forma que a cada animal presente na rede esteja associada uma raça. Está ligada à tabela animal numa relação de 1 para muitos na medida em que há vários animais pertencentes à mesma raça, e cada animal tem uma só raça.
 +
 
 +
foto_animal: Esta tabela existe para permitir o armazenamento de todas as fotografias respectivas aos mini-perfis. Estas fotos têm associado um id do animal a que dizem respeito. Cada animal pode ter várias fotos.
 +
 +
disponibilidade: A tabela da disponibilidade diz respeito à disponibilidade do animal, na medida em que este ou está disponível para venda, ou está disponível para compra. É uma forma de associar este dado a cada animal por forma a informar o utilizador.
 +
 +
interesse_procura: Esta tabela nasce de uma relação de muitos para muitos e diz respeito a uma relação que se cria entre o animal e o utilizador. Isto porque um determinado utilizador pode interessar-se num animal de outro utilizador, para criação ou para venda. Assim esta tabela guarda o id do animal, o id do utilizador e qual é o tipo de interesse. (esta funcionalidade acabou por não ser implementada, mas é um possível melhoramento a fazer no futuro)
 +
 +
publicação: A tabela da publicação está ligada à tabela de utilizador, na medida em que cada utilizador pode fazer uma publicação no seu mural. Está também ligada à tabela comentário, pois cada publicação pode ter vários comentários.
 +
 +
comentário: A tabela comentário, como já foi mencionado no ponto anterior, está ligada à tabela publicação, numa relação de 1 para muitos, partindo da tabela publicação. O comentário armazena o id do utilizador e o id da publicação a que diz respeito.
 +
 
 +
utilizador: A tabela utilizador é aquela que guarda maior quantidade de dados, pois para além das informações presentes no perfil, guarda a password, o sexo, o email, e a data de registo do utilizador (entre outros).
 +
 
 +
tipo_utilizadores: 
 +
 
 +
localização: Esta tabela liga-se à tabela de utilizador numa relação de 1 para muitos, pois cada utilizador tem uma localização, mas uma localização pode dizer respeito a vários utilizadores.
 +
 
 +
review: A tabela review diz respeito a uma outra funcionalidade que acabámos por não conseguir implementar na fase final. No entanto, trata-se do rating do utilizador, e guarda o valor do rating, a pessoa que avaliou e o avaliado. Esta tabela liga-se à tabela utilizador de 3 formas: primeiro, um valor de review pode dizer respeito a vários utilizadores (utilizadores com a mesma avaliação), segundo, um utilizador pode avaliar várias vezes os restantes utilizadores, e terceiro ou consequentemente, um utilizador pode receber várias avaliações.
 +
 +
mensagens: A tabela de mensagens liga-se à tabela utilizador numa relação de muitos para muitos da qual resulta a tabela utilizador_has_mensagens.
 +
 
 +
utilizador_has_mensagens: é uma tabela que resulta da relação entre utilizador e mensagens e que armazena o id do utilizador receptor e o id da mensagem enviada. Estes dados constituem a chave composta desta tabela, e só assim as mensagens se tornam únicas (uma mensagem com determinado conteúdo direccionada a um determinado utilizador)
 +
 
 +
subscrever: A tabela subscrever armazena os dados de uma subscrição, estando portanto ligada à tabela utilizador porque um utilizador pode receber várias subscrições. No entanto, liga-se também à tabela utilizador por uma relação de muitos para muitos, resultando na tabela utilizador_has_subscrições.
 +
 +
utilizador_has_subscriçoes: Esta tabela armazena uma chave composta que torna uma subscrição única - um determinado valor para um determinado utilizador (utilizador_id e subscrever_id)

Revision as of 08:15, 20 January 2012

Contents

1) Introdução

1.1) Objectivo do documento

Este relatório serve de documento complementar ao desenvolvimento e à implementação do projecto multimédia realizado no âmbito da disciplina de Laboratório Multimédia, da licenciatura em Novas Tecnologias da Comunicação, na Universidade e Aveiro. Desta forma, visa descrever e justificar o projecto, explicando os problemas encontrados no decorrer do mesmo e as respectivas soluções. Sendo este um projecto que envolve tecnologias server-side e client-side, é importante escrever sobre a forma como ambas se conjugam e resultam no produto final: uma aplicação Web que consiste numa rede social.

1.2) Visão geral do projecto

A aplicação Web “breedom” consiste numa rede social destinada a criadores e compradores de cães de raça. O nome deriva das palavras “breed” e “freedom” (raça e liberdade, em inglês, respectivamente). Breedom surge num contexto em que as aplicações Web são cada vez mais parte do dia-a-dia de qualquer pessoa, ajudando na reunião das mesmas em comunidade. Como rede social que é, baseia-se em valores como a socialização, comunidade, partilha, e dirige-se especificamente a quem é criador de cães e se predispõe a percorrer quilómetros para encontrar o parceiro de criação certo; possibilita a reunião num único local de vários criadores e também compradores, submetidos a um sistema de avaliação com rating, que apura a sua fidelidade. Breedom surge apenas para facilitar o universo da criação de cães e sua posterior venda.


2) Base de dados desenvolvida

Captura de ecrã - 2012-01-20, 07.30.26.png

A base de dados é constituída por 15 tabelas. Vamos proceder a uma breve explicação sobre cada uma delas.

animal: Nesta tabela guardam-se os dados dos animais. É desta tabela que se retira a maior parte dos dados que se inserem na página de perfil do cão (mini perfil).

raça: Esta tabela armazena todas as raças de cães existentes, de forma que a cada animal presente na rede esteja associada uma raça. Está ligada à tabela animal numa relação de 1 para muitos na medida em que há vários animais pertencentes à mesma raça, e cada animal tem uma só raça.

foto_animal: Esta tabela existe para permitir o armazenamento de todas as fotografias respectivas aos mini-perfis. Estas fotos têm associado um id do animal a que dizem respeito. Cada animal pode ter várias fotos.

disponibilidade: A tabela da disponibilidade diz respeito à disponibilidade do animal, na medida em que este ou está disponível para venda, ou está disponível para compra. É uma forma de associar este dado a cada animal por forma a informar o utilizador.

interesse_procura: Esta tabela nasce de uma relação de muitos para muitos e diz respeito a uma relação que se cria entre o animal e o utilizador. Isto porque um determinado utilizador pode interessar-se num animal de outro utilizador, para criação ou para venda. Assim esta tabela guarda o id do animal, o id do utilizador e qual é o tipo de interesse. (esta funcionalidade acabou por não ser implementada, mas é um possível melhoramento a fazer no futuro)

publicação: A tabela da publicação está ligada à tabela de utilizador, na medida em que cada utilizador pode fazer uma publicação no seu mural. Está também ligada à tabela comentário, pois cada publicação pode ter vários comentários.

comentário: A tabela comentário, como já foi mencionado no ponto anterior, está ligada à tabela publicação, numa relação de 1 para muitos, partindo da tabela publicação. O comentário armazena o id do utilizador e o id da publicação a que diz respeito.

utilizador: A tabela utilizador é aquela que guarda maior quantidade de dados, pois para além das informações presentes no perfil, guarda a password, o sexo, o email, e a data de registo do utilizador (entre outros).

tipo_utilizadores:

localização: Esta tabela liga-se à tabela de utilizador numa relação de 1 para muitos, pois cada utilizador tem uma localização, mas uma localização pode dizer respeito a vários utilizadores.

review: A tabela review diz respeito a uma outra funcionalidade que acabámos por não conseguir implementar na fase final. No entanto, trata-se do rating do utilizador, e guarda o valor do rating, a pessoa que avaliou e o avaliado. Esta tabela liga-se à tabela utilizador de 3 formas: primeiro, um valor de review pode dizer respeito a vários utilizadores (utilizadores com a mesma avaliação), segundo, um utilizador pode avaliar várias vezes os restantes utilizadores, e terceiro ou consequentemente, um utilizador pode receber várias avaliações.

mensagens: A tabela de mensagens liga-se à tabela utilizador numa relação de muitos para muitos da qual resulta a tabela utilizador_has_mensagens.

utilizador_has_mensagens: é uma tabela que resulta da relação entre utilizador e mensagens e que armazena o id do utilizador receptor e o id da mensagem enviada. Estes dados constituem a chave composta desta tabela, e só assim as mensagens se tornam únicas (uma mensagem com determinado conteúdo direccionada a um determinado utilizador)

subscrever: A tabela subscrever armazena os dados de uma subscrição, estando portanto ligada à tabela utilizador porque um utilizador pode receber várias subscrições. No entanto, liga-se também à tabela utilizador por uma relação de muitos para muitos, resultando na tabela utilizador_has_subscrições.

utilizador_has_subscriçoes: Esta tabela armazena uma chave composta que torna uma subscrição única - um determinado valor para um determinado utilizador (utilizador_id e subscrever_id)


3) Implementação

3.1) Design e usabilidade A aplicação Web é constituída por uma palete de cores que lhe confere uma aparência sóbria, mas jovial ao mesmo tempo. A estrutura das páginas segue sempre o mesmo modelo: header, body e footer, sendo que o header e o footer são sempre constantes e presentes, ajudando significativamente na navegação. Os botões que dão acesso às funcionalidades mais importantes têm o devido tamanho e estão bem visíveis para serem acedidos facilmente. Os comportamentos de elementos semelhantes é semelhante também, por forma ao utilizador se habituar mais rapidamente ao funcionamento da aplicação.

3.2) Descrição das principais funcionalidades da aplicação Web Registo e log-in O primeiro passo para usufruir desta aplicação Web é proceder ao registo e log-in. Em breedom só é possível o acesso à página inicial e à página de perfil respectiva aos utilizadores registados e com log-in efectuado. Utilizadores não registados não terão direito a uma página de perfil nem a uma página inicial de gestão de dados. No entanto, na página de registo e login poderão aceder às páginas “contactos” e “sobre nós” de maneira a inteirarem-se do propósito da rede social e a procederem ao registo, caso se identifiquem com o mesmo.

Tanto o registo como o log-in consistem em formulários para inserção de dados por parte do utilizador. No registo é requerida informação ao (futuro) utilizador de maneira a gravar dados necessários à criação do perfil na base de dados, escolhendo-se o tipo de utilizador pretendido (criador ou comprador). Caso o nome de utilizador escolhido já exista, é retornado um aviso. Após a inserção de todos os dados é enviado um e-mail de confirmação, com o link para a página inicial do utilizador. Já no log-in, é requerido o nome de utilizador e a palavra-passe, e procede-se à comparação dos registos inseridos com os registos guardados na base de dados. Caso coincidam, a sessão é iniciada.

Edição de dados, upload de fotografias, publicações no mural Uma vez realizado o log-in é atribuído ao utilizador um perfil que pode ser editado posteriormente. Neste perfil e nos mini-perfis dos animais pode proceder-se à: edição de informação pessoal, upload de fotografia de perfil, publicação de mensagens no mural.

Subscrever utilizador, enviar mensagens privadas No caso de se tratar do perfil de um utilizador criador, há ainda possibilidade de interagir com este através do envio de mensagens privadas e da subscrição das actualizações de mural. Estas interacções são realizadas a partir de botões que abrem lightboxes com informações ou formulários, tornando mais rápido o funcionamento da página, ao invés de abrir em páginas externas.

Pesquisa e pesquisa avançada, resposta aos comentários, gestão de mensagens A página inicial inclui funcionalidades semelhantes às mencionadas, e outras mais. É possível gerir os pedidos de interesse recebidos (aceitar ou rejeitar), gerir as mensagens recebidas (responder ou eliminar) e ainda pesquisar por utilizadores registados na rede, ou pesquisar segundo parâmetros definidos (utilizador, raça do animal, localidade ou disponibilidade). Mais uma vez, a grande maioria das funcionalidades desta página fora executadas com recurso a javascript e jquery, por forma a não sobrecarregar a página com ligações a página externas. Desta forma obtém-se um melhor desempenho e maior rapidez nas transições presentes na página, através de aparecimento de conteúdos e formulários em lightboxes. Será também importante referir que se implementou uma função associada a todos os formulários existentes para que o auto complete estivesse inactivo. Isto traduz-se na não finalização de uma palavra a partir das letras iniciais, tendo em conta o histórico de escrita naquele campo de texto. Esta funcionalidade presente em campos de texto input como aquele que serve para a actualização de estado poderia levar a erros de escrita e não era vantajoso a nível de usabilidade.


3.2) Mapa de páginas

Mapabreedom.png

Há uma estrutura comum a todas as páginas desta aplicação Web, que consiste num header – onde se dispõem o logótipo e botões de navegação base comuns a todas as páginas (acesso rápido ao perfil e à página inicial, e a definições gerais), num footer – constitui-se por ligações às páginas de contactos e sobre nós. Estes dois elementos contêm ligações importantes que devem estar (e desta forma estão) sempre acessíveis. O conteúdo situado no body é o que altera de página para página. As opções disponíveis variam consoante o tipo de utilizador que tem sessão iniciada. Distinguem-se 3 tipos de utilizador: administrador (tem acesso a todos os conteúdos da rede e a todos os dados inseridos na base de dados), utilizador com login – criador ou comprador (tem acesso a todas as páginas e à edição dos seus próprios dados) e utilizador sem login ou não registado (tem apenas acesso à página de login e registo, onde se acede também às páginas “sobre nós” e “contactos”. A homepage do site é o primeiro contacto que qualquer utilizador tem com a rede, e é onde existem os formulários de registo e de login. Caso o registo seja concluído com sucesso, existe uma página para onde o utilizador é redireccionado que o informa que o registo foi bem sucedido e que para activar a sua conta este tem de seguir o link que foi enviado para a sua conta e-mail. A página inicial consiste numa página que permite ao utilizador gerir toda a sua informação e conta: a partir daqui este tem acesso às suas mensagens, subscrições efectuadas, pesquisa e pesquisa avançada, e ainda acesso ao mural, que reúne o conjunto de actualizações submetidas pelos utilizadores subscritos. A página de perfil tem uma primeira zona onde se encontram a fotografia e informações pessoais do utilizador. Um pouco abaixo encontram-se os botões que permitem a interacção com o utilizador, no caso deste ser do tipo criador. Caso se trate de um criador, estará disposta uma barra de navegação cor de laranja com ligações a todos os animais que este possui, através de pequenas fotografias. Cada fotografia pequenina é o link para o mini-perfil respectivo do animal. Mais abaixo ainda encontra-se o mural do respectivo utilizador, onde este pode fazer publicações, às quais os restantes utilizadores podem fazer comentários. O mini perfil de um animal tem uma estrutura bastante simples: informações sobre o animal e slideshow de fotografias do mesmo. Está ainda presente nesta página a barra de navegação dos restantes animais do mesmo dono, para que o utilizador visitante possa facilmente aceder-lhes sem ter de regressar à página de perfil.


3.3) Server Behaviours utilizados A manipulação dos dados é conseguida através dos server behaviours. Todos os server behaviours constantes na aplicação breedom foram escritos manualmente, e não através de funcionalidades automáticas do dreamweaver. Foram utilizados os seguintes:

Insert Record: permite a inserção dinâmica de dados na base de dados, e foi utilizado para a inserção de novos utilizadores na rede, novas fotografias de perfil, novas publicações no mural e comentários, e criação de novos mini-perfis para animais.

Update Record: permite actualizar dados previamente inseridos na base de dados. Desta forma, utilizou-se para a edição das informações e de fotografias de perfil e mini-perfis.

Select Record: permite a selecção de dados específicos da base de dados e foi utilizada para a execução de queries.

Delete Record: permite a eliminação de registos da base de dados e foi utilizado para a eliminação de publicações, mensagens, fotografias.

Repeat Regions: as repeat regions foram bastante utilizadas para se proceder à apresentação de dados múltiplos. Por exemplo, utilizou-se para ir buscar à base de dados todas as publicações no mural referentes a um determinado utilizador. Ou para ir buscar todas as fotografias de um determinado animal.

MySqlRealEscapeString: o my_sql_real_escape_string foi utilizado para a inserção de dados no registo de utilizador, uma vez que protege os dados da mysql_injection, que é o nome que se dá a um ataque em que um utilizador insere elemnetos na base de dados sem o nosso conhecimento.

MySqlNumRows: este behaviour foi utilizado para contar registos na base de dados. Um exemplo da sua aplicação é para verificar se um determinado e-mail já está ou não registado. Se a contagem for de um, significa que já está registado, ao passo que se for zero, o e-mail ainda está por registar e é aceite no formulário de registo sem retornar erros.



3.4) Recordsets/Queries utilizados Os recordsets consistem em registos da base de dados armazenados em conjunto. Estes são utilizados m conjunto com queries, para possibilitar o acesso a dados específicos armazenados na base de dados. Como já foi mencionado, a criação de recordsets e de queries foi executada manualmente. Ambos são utilizados, por exemplo, sempre que se pretende seleccionar um determinado utilizador, um determinado conjunto de animais (pertencentes a um utilizador), seleccionar todas as publicações respectivas a um determinado utilizador, etc. Assim utilizaram-se queries no log-in, e na apresentação de dados. Para a criação dos recordsets, começa-se por armazenar a query numa variável, enviar essa query para o banco de dados através do mysq_query(), recuperar a mesma como array associativo mysql_fetch_assoc(), e finalmente imprimir os parâmetros obtidos. Seguem-se m exemplo de uma querie utilizada para verificar se a password e o username inseridos no log-in coincidem com os registos da base de dados, e para que se inicie posteriormente uma sessão: $verificar= "SELECT * FROM utilizador WHERE username='$username' AND password='$password'";

$ver=mysql_query($verificar, $breedom );

$vars=mysql_fetch_assoc($ver);


3.5) Parâmetros passados entre páginas Para passar parâmetros entre páginas recorreu-se, na maior parte das vezes, ao método post, uma vez que é um método mais seguro e que permite o envio de uma maior quantidade de informação. Usou-se este método no formulário de registo, nos comentários e nas publicações, entre outros. Usou-se o método Get apenas para a pesquisa dos utilizadores e para a visualização do respectivo perfil resultante da pesquisa.


3.6) Integração Para a obtenção de uma aplicação Web interactiva e aprazível, optámos pela integração de outras tecnologias para além do html e css e php. Fez-se com que muitos dos links abrissem nas próprias páginas, poupando tempo de processamento e de páginas e carga no servidor. Para isto utilizou-se javascript e jquery. Vejamos aplicações concretas destas tecnologias: a animação slide down do registo e do login, bem como a sua validação, foram feitas por recurso a funções e bibliotecas de javascript e jquery. Nas páginas inicial e de perfil, todas as animações com abertura de lightbox com conteúdos foi também executada por recurso às tecnologias mencionadas e a bibliotecas e funções de efeitos específicos. Segue-se um script de aparecimento de lightbox como exemplo:

<script type="text/javascript">

$(document).ready(function() {

//seleciona os elementos a com atributo name="modal"

$('a[name=modal2]').click(function(e) {

//cancela o comportamento padrão do link

e.preventDefault(); / /armazena o atributo href do link

var id = $(this).attr('href');

//armazena a largura e a altura da tela

var maskHeight = $(document).height();

var maskWidth = $(window).width();


==//Define largura e altura do div#mask iguais ás dimensçoes da tela

$('#mask2').css({'width':maskWidth,'height':maskHeight});

//efeito de transição

$('#mask2').fadeIn(1000); $('#mask2').fadeTo("slow",0.8);

//armazena a largura e a altura da janela

var winH = $(window).height();

var winW = $(window).width();

//centraliza na tela a janela popup

$(id).css('top', winH/2-$(id).height()/2); $(id).css('left', winW/2-$(id).width()/2);

//efeito de transição $(id).fadeIn(2000); });

//se o botãoo fechar for clicado

$('.window2 .close2').click(function (e) {

//cancela o comportamento padrão do link

e.preventDefault(); $('#mask2, .window2').hide(); });

//se div#mask for clicado

$('#mask2').click(function () { $(this).hide(); $('.window2').hide(); }); });

</script>

Uma aplicação semelhante destas tecnologias são os toggles existentes nas páginas (botões do lado esquerdo da página inicial, por exemplo) em que se dá o deslize de uma div que se encontrava com display none. Eis um exemplo do script que permite esta animação:

==<script type="text/javascript">

$(document).ready(function(){

$(".celulas_container").hide();

$(".celulas").click(function(){

$(".celulas_container").slideToggle("slow");

$(this).toggleClass("active"); return false; });

});


Existe também um efeito semelhante na pata no canto superior direito, no header, que faz com que com o clique na zona mencionada surja um menu com várias opções de gestão de conta. O efeito de preenchimento dos círculos do rating do utilizador com o passar do cursor foi realizado da mesma forma. Destaque-se a galeria de imagens presente no mini perfil dos animais, feita a partir de jquery e javascript. Segue-se um excerto de um script de load e inicialização, respectivamente, da galeria: <script>

==Galleria.loadTheme('galleria.classic.min.js');

$('#galleria').galleria();

</script>


Esta galeria englobou um grande conjunto de bibliotecas para se conseguir correctamente os efeitos de load das fotografias e de deslize das miniaturas, entre outros. Deve ainda mencionar-se o facto de se ter recorrido à utilização de CSS3 para a criação de alguns elementos gráficos, servindo como exemplo o arredondamento de alguns botões das páginas. Veja-se abaixo um exemplo da aplicação de css3 no botão de mural:

==#botaomural{ color:#FFF;

margin-top:324px;

background-color:#42403F;

height:35px;

width:180px;

float:left;

text-align:center;

-moz-border-radius: 20px;

-webkit-border-radius: 20px;

-khtml-border-radius: 20px;

border-radius: 20px;

vertical-align: middle;

line-height:30px;

position:absolute;}


Através da utilização destas tecnologias confere-se dinamismo e interactividade às páginas.


4) Desenvolvimentos Futuros

Infelizmente, e devido a erros e problemas inesperados encontrados, não foi possível implementar todas as funcionalidades que estavam previstas inicialmente. Existem algumas funcionalidades que consideramos serem importantes para tornar Breedom uma aplicação mais completa e que satisfaça melhor o utilizador. Entre elas encontram-se a implementação efectiva de um sistema de rating que confira uma avaliação ao utilizador, para que se possa verificar a sua fidelidade. Este sistemas funcionaria com o cálculo da média dos ratings obtidos sobre o número de votadores, fornecendo uma apreciação realista. Pensou-se ainda numa outra funcionalidade que seria um sistema de triagem de pedidos de interesse. À partida, quando um utilizador se interessa por um animal para compra ou criação (consoante a disponibilidade), envia uma mensagem ao respectivo criador. No entanto, se existisse um botão de “pedido de interesse” em que o utilizador seleccionasse logo o animal alvo de interesse e o tipo de interesse, o criador poderia gerir mais eficazmente os pedidos de interesse recebidos, avaliando os que mais lhe interessariam (imagine-se, por exemplo, consoante a localização do utilizador), e rejeitando logo à partida o que não fosse do seu interesse. A aceitação de um determinado pedido conduziria, na mesma, a uma conversa posterior por mensagens, para apuramento de detalhes. A pesquisa presente na página inicial não contem autocomplete, uma funcionalidade que poderia ser útil. Tendo em conta o desenvolvimento de aplicação para Web 2.0 de hoje em dia, é muito importante que se proceda a um melhoramento nesta aplicação na medida em que esta se torne compatível com vários browsers, uma vez que consoante o browser escolhido para pré-visualização de conteúdos notava-se algumas desformatações do conteúdo, ou o não funcionamento de algumas animações correctamente. A integração de outras redes sociais é algo que poderá ser pensado, uma vez que poderia contribuir para a publicidade de Breedom.


5) Conclusões

A criação, desenvolvimento e implementação de uma rede social é algo que exige muito trabalho criativo e técnico. Desde o desenho da base de dados e sua implementação, estrutura html das páginas, implementação de outras tecnologias, e até à inclusão do php, é necessário que todos os elementos funcionem bem isoladamente e em conjunto, para se obter um todo funcional. A título de exemplo, a má construção da base de dados compromete toda a estrutura php. Isto faz com que todo o projecto deva ser muito bem pensado desde o momento da inicial até à conclusão. É certo que ao longo do decorrer do projecto somos confrontados com problemas inesperados que nos obrigam a contorna-los, desviando-nos um pouco do caminho que tínhamos definido. Mas o aparecimento de problemas e procura de soluções fazem parte de qualquer projecto, e incitam-nos a expandir o nosso conhecimento para além das soluções abordadas nas aulas. Desta forma, aprofundámos as temáticas leccionadas de Laboratório Multimédia 5 e ganhámos autonomia na programação em php e na implementação de páginas Web no geral. Devido ao facto da rede integrar várias tecnologias, a execução de um projecto deste cariz é muito importante para a consolidação de conhecimentos adquiridos em Laboratórios leccionados em semestres anteriores. As novas tecnologias estão constantemente a serem actualizadas e a implementação de várias linguagens de programação e tecnologias resulta em animações e aplicações Web cada vez mais complexas e sofisticadas do ponto de vista técnico. Este projecto serviu para nos apercebermos dessa realidade e para, de certa forma, a experienciarmos, pois criar algo actual e que se diferencie das restantes aplicações já existentes na Web 2.0 constitui um grande desafio.


6) Referências bibliográficas

http://php.net/ http://www.1stwebdesigner.com/tutorials/building-real-time-form-validation-using-jquery/ http://www.webmotionuk.co.uk/php-jquery-image-upload-and-crop/ https://developer.mozilla.org/en/How_to_Turn_Off_Form_Autocompletion http://css-tricks.com/snippets/php/time-ago-function/ http://www.dreamincode.net/forums/topic/76064-uploading-images-with-php/ http://acrisdesign.com/2010/03/jquery-tutorial-toggle-effect-on-hoverclick/ http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox