Umquarto

From Laboratório MM 5

(Difference between revisions)
Jump to: navigation, search
(Mapa de páginas)
(Mapa de páginas)
 
(21 intermediate revisions not shown)
Line 2: Line 2:
UmQuarto.PT
UmQuarto.PT
-
Grupo:
+
Grupo:<br />
-
Fabienne Pimenta,
+
Fabienne Pimenta,<br />
-
Licínio Marques,
+
Licínio Marques,<br />
-
Miguel Leite.
+
Miguel Leite.<br />
=== Objectivo do documento ===
=== Objectivo do documento ===
Line 17: Line 17:
Como é do conhecimento comum, a maioria dos jovens que ingressa no Ensino Superior pela primeira vez e se depara com o facto de ir viver para outra cidade, encontra no seu destino a dificuldade de encontrar um quarto para habitar. Para além destes, também outros alunos insatisfeitos com a sua casa actual procuram novos quartos, voltando a encontram dificuldades. No nosso projecto propusemo-nos a criar um website que conseguisse reunir o maior número possível de opções, para facilitar a estes possíveis clientes uma forma fácil, rápida e eficaz, á distância de uns cliques, de encontrarem um quarto.
Como é do conhecimento comum, a maioria dos jovens que ingressa no Ensino Superior pela primeira vez e se depara com o facto de ir viver para outra cidade, encontra no seu destino a dificuldade de encontrar um quarto para habitar. Para além destes, também outros alunos insatisfeitos com a sua casa actual procuram novos quartos, voltando a encontram dificuldades. No nosso projecto propusemo-nos a criar um website que conseguisse reunir o maior número possível de opções, para facilitar a estes possíveis clientes uma forma fácil, rápida e eficaz, á distância de uns cliques, de encontrarem um quarto.
-
No projecto teremos duas grandes áreas, a dos inquilinos e dos Senhorios. Serão pedidos dados obrigatórios no registo de cada um deles, conforme o estabelecido e pretendido nas Bases de Dados relacionais. A área reservada ao Senhorio tem como objectivo o registo do mesmo, assim como a inserção de quartos para serem futuramente visualizados pelos interessados. Já na área do Inquilino, não será necessário o seu registo para procurar por quartos, estando alguma informação crucial apenas disponibilizada após o seu registo.  
+
No projecto teremos duas grandes áreas, a dos inquilinos e dos Senhorios. Serão pedidos dados obrigatórios no registo de cada um deles, conforme o estabelecido e pretendido nas Bases de Dados relacionais. A área reservada ao Senhorio tem como objectivo o registo do mesmo, assim como a inserção de quartos para serem futuramente visualizados pelos interessados. Já na área do Inquilino, não será necessário o seu registo para procurar por quartos, estando alguma informação crucial apenas disponibilizada após o seu registo.
-
 
+
== Base de dados desenvolvida ==
== Base de dados desenvolvida ==
-
 
+
[[File:Bd.jpg]] <br />
-
A base de dados foi criada em torno de três tipos de usuários, Administrador, Senhorio e Inquilino. Na tabela Senhorio são armazenados dados relativos aos utilizadores que se registem nesta categoria, como Nome, Data Nascimento, Localidade, uma variável de referência para o ID de Utilizador, entre outros. Com esta informação preenchida por parte dos utilizadores, cada Senhorio poderá inserir quartos para alugar. Terá ainda a possibilidade de verificar o número de visualizações que os seus imóveis têm por parte de inquilinos. O tipo de utilizador Inquilino é em tudo semelhante ao Senhorio, tendo apenas mais alguns campos. A tabela Inquilino tem ligação com a tabela Favoritos, pois cada uma destas pessoas pode ir criando uma lista de Quartos preferidos, dando rápido acesso a esses Quartos. Isto tudo com o propósito de Alugar um Quarto. É esse o objectivo primordial dos utilizadores registados nesta categoria. Há ainda a possibilidade dos Inquilinos deixarem comentários nos vários Quartos, sendo registado a data em que foi feito e por que utilizador (só registados).
+
A base de dados foi criada em torno de três tipos de usuários, Administrador, Senhorio e Inquilino. Na tabela Senhorio são armazenados dados relativos aos utilizadores que se registem nesta categoria, como Nome, Data Nascimento, Localidade, uma variável de referência para o ID de Utilizador, entre outros. Com esta informação preenchida por parte dos utilizadores, cada Senhorio poderá inserir quartos para alugar. Terá ainda a possibilidade de verificar o número de visualizações que os seus imóveis têm por parte de inquilinos. O tipo de utilizador Inquilino é em tudo semelhante ao Senhorio, tendo apenas mais alguns campos. A tabela Inquilino tem ligação com a tabela Favoritos, pois cada uma destas pessoas pode ir criando uma lista de Quartos preferidos, dando rápido acesso a esses Quartos. Isto tudo com o propósito de Alugar um Quarto. É esse o objectivo primordial dos utilizadores registados nesta categoria. Há ainda a possibilidade dos Inquilinos deixarem comentários nos vários Quartos, sendo registado a data em que foi feito e por que utilizador (só registados).
-
 
+
== Implementação ==
== Implementação ==
=== Descrição das principais funcionalidades da aplicação web ===
=== Descrição das principais funcionalidades da aplicação web ===
-
Este projecto tem como fundamento a integração de um serviço básico de inserção e aluguer de quartos com uma rede social. Os utilizadores têm acesso à pagina de  apresentação site,onde podem ver os últimos quartos a serem inseridos,assim como a possibilidade de login ou registo.  
+
Este projecto tem como fundamento a integração de um serviço básico de inserção e aluguer de quartos com uma rede social. Os utilizadores têm acesso à pagina de  apresentação site,onde podem ver os últimos quartos a serem inseridos,assim como a possibilidade de login ou registo. <br />
-
-alteração dos dados pessoais, tanto dos senhorios como dos inquilinos;
+
-alteração dos dados pessoais, tanto dos senhorios como dos inquilinos;<br />
-
-inserção de  quarto, com fotografia, morada, valor da renda, localidade;
+
-inserção de  quarto, com fotografia, morada, valor da renda, localidade;<br />
-
-comentar quarto por parte dos inquilinos. Antigos inquilinos podem tecer opinião sobre o quarto e o senhorio, assim como possíveis interessados;  
+
-comentar quarto por parte dos inquilinos. Antigos inquilinos podem tecer opinião sobre o quarto e o senhorio, assim como possíveis interessados; <br />
-
-procurar quarto por distrito, custo mínimo/máximo,tamanho e visualiza-lo
+
-procurar quarto por distrito, custo mínimo/máximo,tamanho e visualiza-lo;<br />
-Gostar de um quarto, dando a possibilidade dos utilizadores verem quantas pessoas gostam do quarto(aplica-se numa visão de Marketing)
-Gostar de um quarto, dando a possibilidade dos utilizadores verem quantas pessoas gostam do quarto(aplica-se numa visão de Marketing)
-
-alugar quarto.
+
-alugar quarto;<br />
 +
-adicionar quartos a Favoritos. <br />
=== Mapa de páginas ===
=== Mapa de páginas ===
-header.php e footer.php <br />
-header.php e footer.php <br />
-
-index.php
+
-index.php               <br />
-
-login.php
+
-login.php <br />
-
-register_inquilino.php
+
-logout.php<br />
-
-register_senhorio.php
+
-register_inquilino.php <br />
-
-edit_inquilino.php
+
-register_senhorio.php<br />
-
-edit_quarto.php
+
-register_admin.php<br />
-
-edit_senhorio.php
+
-edit_inquilino.php<br />
-
-inserir_quarto.php
+
-edit_quarto.php<br />
-
-procurar.php
+
-edit_senhorio.php<br />
-
-resultado_pesquisa.php
+
-inserir_quarto.php<br />
-
-mostrar_quarto.php
+
-procurar.php<br />
-
-sitemap.php
+
-resultado_pesquisa.php<br />
-
-ajuda.php
+
-mostrar_quarto.php<br />
-
-alugar.php
+
-quarto_pesquisado.php<br />
-
-contactos.php
+
-favoritos.php<br />
 +
-sitemap.php<br />
 +
-quemsomos.php<br />
 +
-ajuda.php<br />
 +
-alugar.php<br />
 +
-contactos.php<br />
 +
-alert.php<br />
 +
-avisoslegais.php<br />
==== Server Behaviours utilizados ====
==== Server Behaviours utilizados ====
 +
- Insert Record : inserir novo registo na BD; <br />
 +
- Update Record : actualizar um registo na BD; <br />
 +
- Repeat Region: resultados da pesquisa e quartos recentes aparecem de forma dinâmica;<br />
 +
- Display Total Records : mostrar o número total de registos de uma Query; <br />
 +
- Show Region : mostrar um conteúdo dependendo de determinada condição; <br />
 +
- Log In: variável de sessão e verificar existência de utilizadores registados e guardados na BD;<br />
 +
- Log Out User: terminar uma variável de sessão; <br />
 +
- Check New Username: verificar a existência de um utilizador(por email); <br />
 +
- User Restrict Access to Page : restrição de acesso a utilizadores com registos de categoria diferentes. <br/>
 +
==== Recordsets/Queries utilizados ====
==== Recordsets/Queries utilizados ====
 +
SELECT * FROM inquilino WHERE inquilino_id = %s<br />
 +
SELECT * FROM senhorio WHERE senhorio_id = %s<br />
 +
SELECT * FROM quarto WHERE quarto.tamanho >= %s AND quarto.tamanho <= %s AND quarto.preco >= %s AND quarto.preco <= %s AND quarto.localidade = %s AND quarto.livre = %s<br />
 +
SELECT * FROM quarto, favoritos, inquilino WHERE quarto.quarto_id = favoritos.quarto_id AND inquilino.inquilino_id = favoritos.inquilino_id<br />
 +
==== Parâmetros passados entre páginas ====
==== Parâmetros passados entre páginas ====
 +
Na página de Pesquisa de quartos, foi implementado um Recordset (rs_pesquisa), onde queríamos que a Querie nos retornasse os quartos cujo tamanho e preço se situavam entre os parâtremos mínimo e máximo pedidos no formulário de pesquisa, e cuja localidade fosse igual à pedida no formulário, por selecção no mapa. Neste Recordset surgiu o problema de o parâmetro “localidade” poder estar ou não definido, pelo que tivemos que criar um critério de decisão entre duas diferentes Queries: uma se estiver definida a zona, e outra se não estivesse definida. Foi também alterado o critério de decisão para a atribuição do valor “zona” passado no formulário de pesquisa, visto que este está sempre definido, com o valor null por defeito. O critério de decisão foi então a desigualdade entre o parâmetro passado por POST e o valor null. <br />
 +
 +
$local_rs_pesquisa = "a";<br />
 +
if ($_POST['localidade'] =! null) {<br />
 +
$local_rs_pesquisa = $_POST['localidade'];<br />
 +
--
 +
 +
if($local_rs_pesquisa == "a") {<br />
 +
$query_rs_pesquisa = sprintf("SELECT * FROM quarto WHERE quarto.tamanho >= %s AND quarto.tamanho <= %s AND quarto.preco >= %s AND quarto.preco <= %s", GetSQLValueString($tamanho_min_rs_pesquisa, "double"),GetSQLValueString($tamanho_max_rs_pesquisa, "double"),GetSQLValueString($preco_min_rs_pesquisa, "double"),GetSQLValueString($preco_max_rs_pesquisa, "double"));<br />
 +
} else {<br />
 +
$query_rs_pesquisa = sprintf("SELECT * FROM quarto WHERE quarto.tamanho >= %s AND quarto.tamanho <= %s AND quarto.preco >= %s AND quarto.preco <= %s AND quarto.localidade = %s", GetSQLValueString($tamanho_min_rs_pesquisa, <br />"double"),GetSQLValueString($tamanho_max_rs_pesquisa, "double"),GetSQLValueString($preco_min_rs_pesquisa, <br />"double"),GetSQLValueString($preco_max_rs_pesquisa, "double"),GetSQLValueString($local_rs_pesquisa, "text"));<br />
 +
}<br />
 +
Para além disto, utilizámos a passagem de parâmetros por URL para passar ID’s de Utilizadores, ID’s de Inquilinos, ID’s de Senhorios, ID’s de Quartos ou valores de Acções e Resultados de acções ( action=”login”&result=”true” ).<br />
=== Integração (e.g. Flash, AJAX Frameworks, etc) ===
=== Integração (e.g. Flash, AJAX Frameworks, etc) ===
-
Jquery de SlideShow presente na página de apresentação(index.php) e Jquery do menu de navegação.  
+
Jquery de SlideShow presente na página de apresentação(index.php) e Jquery do menu de navegação.
== Desenvolvimentos Futuros ==
== Desenvolvimentos Futuros ==
-
-API Google Maps
+
-API Google Maps<br />
-
-Confirmação de registo por email
+
-Confirmação de registo por email<br />
-
-Procura rápida  
+
-Procura rápida <br />
-
-Número visitas que o quarto recebe
+
-Número visitas que o quarto recebe<br />
-
-Mínimo/máximo tempo de aluguer de cada imóvel (inserido pelo Senhorio)
+
-Mínimo/máximo tempo de aluguer de cada imóvel (inserido pelo Senhorio)<br />
-
-Favoritos
+
== Conclusões ==
== Conclusões ==
Line 73: Line 106:
== Referências bibliográficas ==
== Referências bibliográficas ==
-
leigeber [http://www.leigeber.com/2008/05/sliding-javascript-menu-highlight]
+
"leigeber",[www.leigeber.com/2008/05/sliding-javascript-menu-highlight]<br />
-
csshook [http://csshook.com/cssresources/50-jquery-image-showcase-plugins]
+
"csshook",[csshook.com/cssresources/50-jquery-image-showcase-plugins]<br />
-
dreamcss [http://www.dreamcss.com/2009/04/create-beautiful-jquery-sliders.html]
+
"dreamcss",[www.dreamcss.com/2009/04/create-beautiful-jquery-sliders.html]v
-
wmonline [http://www.wmonline.com.br/]
+
"wmonline",[www.wmonline.com.br/]<br />
-
Custo Justo [http://www.custojusto.pt/]
+
"Custo Justo",[www.custojusto.pt/]<br />
-
Fórum Zwame [http://forum.zwame.pt/showthread.php?t=553745&page=1]
+
"Fórum Zwame",[forum.zwame.pt/showthread.php?t=553745&page=1]<br />
-
W3Schools [www.w3schools.com]
+
"W3Schools",[www.w3schools.com]<br />
 +
"phpbuilder",[www.phpbuilder.com]<br />

Latest revision as of 08:51, 18 January 2011

Contents

Introdução

UmQuarto.PT

Grupo:
Fabienne Pimenta,
Licínio Marques,
Miguel Leite.

Objectivo do documento

Este relatório refere-se à execução do projecto final da disciplina de Laboratório Multimédia 5 que consiste na execução de bases de dados relacionais e páginas dinâmicas para a Web, recorrendo às linguagens de programação PHP, JavaScript, CSS, HTML, AJAX e SQL. Abordaremos as várias fases do nosso trabalho, desde a formulação do conceito à posterior execução (desde o design à programação do Site e da Base de dados necessária ao correcto funcionamento do mesmo), passando pelos desafios e problemas com que nos deparámos, assim como as soluções encontradas para ultrapassar estes.


Visão geral do projecto

Como é do conhecimento comum, a maioria dos jovens que ingressa no Ensino Superior pela primeira vez e se depara com o facto de ir viver para outra cidade, encontra no seu destino a dificuldade de encontrar um quarto para habitar. Para além destes, também outros alunos insatisfeitos com a sua casa actual procuram novos quartos, voltando a encontram dificuldades. No nosso projecto propusemo-nos a criar um website que conseguisse reunir o maior número possível de opções, para facilitar a estes possíveis clientes uma forma fácil, rápida e eficaz, á distância de uns cliques, de encontrarem um quarto.

No projecto teremos duas grandes áreas, a dos inquilinos e dos Senhorios. Serão pedidos dados obrigatórios no registo de cada um deles, conforme o estabelecido e pretendido nas Bases de Dados relacionais. A área reservada ao Senhorio tem como objectivo o registo do mesmo, assim como a inserção de quartos para serem futuramente visualizados pelos interessados. Já na área do Inquilino, não será necessário o seu registo para procurar por quartos, estando alguma informação crucial apenas disponibilizada após o seu registo.

Base de dados desenvolvida

Bd.jpg
A base de dados foi criada em torno de três tipos de usuários, Administrador, Senhorio e Inquilino. Na tabela Senhorio são armazenados dados relativos aos utilizadores que se registem nesta categoria, como Nome, Data Nascimento, Localidade, uma variável de referência para o ID de Utilizador, entre outros. Com esta informação preenchida por parte dos utilizadores, cada Senhorio poderá inserir quartos para alugar. Terá ainda a possibilidade de verificar o número de visualizações que os seus imóveis têm por parte de inquilinos. O tipo de utilizador Inquilino é em tudo semelhante ao Senhorio, tendo apenas mais alguns campos. A tabela Inquilino tem ligação com a tabela Favoritos, pois cada uma destas pessoas pode ir criando uma lista de Quartos preferidos, dando rápido acesso a esses Quartos. Isto tudo com o propósito de Alugar um Quarto. É esse o objectivo primordial dos utilizadores registados nesta categoria. Há ainda a possibilidade dos Inquilinos deixarem comentários nos vários Quartos, sendo registado a data em que foi feito e por que utilizador (só registados).

Implementação

Descrição das principais funcionalidades da aplicação web

Este projecto tem como fundamento a integração de um serviço básico de inserção e aluguer de quartos com uma rede social. Os utilizadores têm acesso à pagina de apresentação site,onde podem ver os últimos quartos a serem inseridos,assim como a possibilidade de login ou registo.
-alteração dos dados pessoais, tanto dos senhorios como dos inquilinos;
-inserção de quarto, com fotografia, morada, valor da renda, localidade;
-comentar quarto por parte dos inquilinos. Antigos inquilinos podem tecer opinião sobre o quarto e o senhorio, assim como possíveis interessados;
-procurar quarto por distrito, custo mínimo/máximo,tamanho e visualiza-lo;
-Gostar de um quarto, dando a possibilidade dos utilizadores verem quantas pessoas gostam do quarto(aplica-se numa visão de Marketing) -alugar quarto;
-adicionar quartos a Favoritos.

Mapa de páginas

-header.php e footer.php
-index.php
-login.php
-logout.php
-register_inquilino.php
-register_senhorio.php
-register_admin.php
-edit_inquilino.php
-edit_quarto.php
-edit_senhorio.php
-inserir_quarto.php
-procurar.php
-resultado_pesquisa.php
-mostrar_quarto.php
-quarto_pesquisado.php
-favoritos.php
-sitemap.php
-quemsomos.php
-ajuda.php
-alugar.php
-contactos.php
-alert.php
-avisoslegais.php

Server Behaviours utilizados

- Insert Record : inserir novo registo na BD;
- Update Record : actualizar um registo na BD;
- Repeat Region: resultados da pesquisa e quartos recentes aparecem de forma dinâmica;
- Display Total Records : mostrar o número total de registos de uma Query;
- Show Region : mostrar um conteúdo dependendo de determinada condição;
- Log In: variável de sessão e verificar existência de utilizadores registados e guardados na BD;
- Log Out User: terminar uma variável de sessão;
- Check New Username: verificar a existência de um utilizador(por email);
- User Restrict Access to Page : restrição de acesso a utilizadores com registos de categoria diferentes.

Recordsets/Queries utilizados

SELECT * FROM inquilino WHERE inquilino_id = %s
SELECT * FROM senhorio WHERE senhorio_id = %s
SELECT * FROM quarto WHERE quarto.tamanho >= %s AND quarto.tamanho <= %s AND quarto.preco >= %s AND quarto.preco <= %s AND quarto.localidade = %s AND quarto.livre = %s
SELECT * FROM quarto, favoritos, inquilino WHERE quarto.quarto_id = favoritos.quarto_id AND inquilino.inquilino_id = favoritos.inquilino_id

Parâmetros passados entre páginas

Na página de Pesquisa de quartos, foi implementado um Recordset (rs_pesquisa), onde queríamos que a Querie nos retornasse os quartos cujo tamanho e preço se situavam entre os parâtremos mínimo e máximo pedidos no formulário de pesquisa, e cuja localidade fosse igual à pedida no formulário, por selecção no mapa. Neste Recordset surgiu o problema de o parâmetro “localidade” poder estar ou não definido, pelo que tivemos que criar um critério de decisão entre duas diferentes Queries: uma se estiver definida a zona, e outra se não estivesse definida. Foi também alterado o critério de decisão para a atribuição do valor “zona” passado no formulário de pesquisa, visto que este está sempre definido, com o valor null por defeito. O critério de decisão foi então a desigualdade entre o parâmetro passado por POST e o valor null.

$local_rs_pesquisa = "a";
if ($_POST['localidade'] =! null) {
$local_rs_pesquisa = $_POST['localidade'];
--

if($local_rs_pesquisa == "a") {
$query_rs_pesquisa = sprintf("SELECT * FROM quarto WHERE quarto.tamanho >= %s AND quarto.tamanho <= %s AND quarto.preco >= %s AND quarto.preco <= %s", GetSQLValueString($tamanho_min_rs_pesquisa, "double"),GetSQLValueString($tamanho_max_rs_pesquisa, "double"),GetSQLValueString($preco_min_rs_pesquisa, "double"),GetSQLValueString($preco_max_rs_pesquisa, "double"));
} else {
$query_rs_pesquisa = sprintf("SELECT * FROM quarto WHERE quarto.tamanho >= %s AND quarto.tamanho <= %s AND quarto.preco >= %s AND quarto.preco <= %s AND quarto.localidade = %s", GetSQLValueString($tamanho_min_rs_pesquisa,
"double"),GetSQLValueString($tamanho_max_rs_pesquisa, "double"),GetSQLValueString($preco_min_rs_pesquisa,
"double"),GetSQLValueString($preco_max_rs_pesquisa, "double"),GetSQLValueString($local_rs_pesquisa, "text"));
}
Para além disto, utilizámos a passagem de parâmetros por URL para passar ID’s de Utilizadores, ID’s de Inquilinos, ID’s de Senhorios, ID’s de Quartos ou valores de Acções e Resultados de acções ( action=”login”&result=”true” ).

Integração (e.g. Flash, AJAX Frameworks, etc)

Jquery de SlideShow presente na página de apresentação(index.php) e Jquery do menu de navegação.

Desenvolvimentos Futuros

-API Google Maps
-Confirmação de registo por email
-Procura rápida
-Número visitas que o quarto recebe
-Mínimo/máximo tempo de aluguer de cada imóvel (inserido pelo Senhorio)

Conclusões

Com a realização deste projecto tivemos o desafio de implementar todo o conhecimento adquirido na disciplina de Laboratório 5, numa plataforma 2.0. Forças superiores ao nosso estado de simples mortais, impossibilitaram a total conclusão do projecto, pois com o avançar do trabalho, foram sempre aparecendo novas ideias para discutir e implementar que nos pareciam bastante apropriados ao desafio. Nem tudo é uma derrota porque o conhecimento leccionado foi melhor “interiorizado” e a vontade de querer saber mais para fazer melhor ficou presente nos elementos do grupo. Foi, sem dúvida uma excelente simulação do que nos espera o mundo de trabalho do desenvolvimento de plataformas Web.

Referências bibliográficas

"leigeber",[www.leigeber.com/2008/05/sliding-javascript-menu-highlight]
"csshook",[csshook.com/cssresources/50-jquery-image-showcase-plugins]
"dreamcss",[www.dreamcss.com/2009/04/create-beautiful-jquery-sliders.html]v "wmonline",[www.wmonline.com.br/]
"Custo Justo",[www.custojusto.pt/]
"Fórum Zwame",[forum.zwame.pt/showthread.php?t=553745&page=1]
"W3Schools",[www.w3schools.com]
"phpbuilder",[www.phpbuilder.com]

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox