Umquarto
From Laboratório MM 5
(→Mapa de páginas) |
|||
| (28 intermediate revisions not shown) | |||
| Line 1: | Line 1: | ||
| - | + | == Introdução == | |
| + | UmQuarto.PT | ||
| - | Grupo: | + | Grupo:<br /> |
| - | + | Fabienne Pimenta,<br /> | |
| - | Fabienne Pimenta, | + | Licínio Marques,<br /> |
| - | Licínio Marques, | + | Miguel Leite.<br /> |
| - | 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 == | ||
| + | [[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). | ||
| + | |||
| + | == 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. <br /> | ||
| + | -alteração dos dados pessoais, tanto dos senhorios como dos inquilinos;<br /> | ||
| + | -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; <br /> | ||
| + | -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) | ||
| + | -alugar quarto;<br /> | ||
| + | -adicionar quartos a Favoritos. <br /> | ||
| + | |||
| + | === Mapa de páginas === | ||
| + | -header.php e footer.php <br /> | ||
| + | -index.php <br /> | ||
| + | -login.php <br /> | ||
| + | -logout.php<br /> | ||
| + | -register_inquilino.php <br /> | ||
| + | -register_senhorio.php<br /> | ||
| + | -register_admin.php<br /> | ||
| + | -edit_inquilino.php<br /> | ||
| + | -edit_quarto.php<br /> | ||
| + | -edit_senhorio.php<br /> | ||
| + | -inserir_quarto.php<br /> | ||
| + | -procurar.php<br /> | ||
| + | -resultado_pesquisa.php<br /> | ||
| + | -mostrar_quarto.php<br /> | ||
| + | -quarto_pesquisado.php<br /> | ||
| + | -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 ==== | ||
| + | - 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 ==== | ||
| + | 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 ==== | ||
| + | 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) === | ||
| + | Jquery de SlideShow presente na página de apresentação(index.php) e Jquery do menu de navegação. | ||
| + | |||
| + | == Desenvolvimentos Futuros == | ||
| + | -API Google Maps<br /> | ||
| + | -Confirmação de registo por email<br /> | ||
| + | -Procura rápida <br /> | ||
| + | -Número visitas que o quarto recebe<br /> | ||
| + | -Mínimo/máximo tempo de aluguer de cada imóvel (inserido pelo Senhorio)<br /> | ||
| + | |||
| + | == 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]<br /> | ||
| + | "csshook",[csshook.com/cssresources/50-jquery-image-showcase-plugins]<br /> | ||
| + | "dreamcss",[www.dreamcss.com/2009/04/create-beautiful-jquery-sliders.html]v | ||
| + | "wmonline",[www.wmonline.com.br/]<br /> | ||
| + | "Custo Justo",[www.custojusto.pt/]<br /> | ||
| + | "Fórum Zwame",[forum.zwame.pt/showthread.php?t=553745&page=1]<br /> | ||
| + | "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
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]