User:Leilauto

From Laboratório MM 5

(Difference between revisions)
Jump to: navigation, search
(Base de dados)
 
(2 intermediate revisions not shown)
Line 45: Line 45:
''Exemplo:''
''Exemplo:''
[[File:Example12.jpg |200px| thumb |left| imagem1 – base de dados]]
[[File:Example12.jpg |200px| thumb |left| imagem1 – base de dados]]
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
==Implementação==
==Implementação==
Line 68: Line 83:
''Exemplo:''
''Exemplo:''
-
[[File:index.jpg |200px| thumb |left| imagem2 – índex.php]]
+
[[File:pesquisa.jpg |200px| thumb |left| imagem2 – índex.php]]
Line 88: Line 103:
-
'''Página de pesquisa'''
+
'''Página de conta pessoal'''
-
Nesta página o utilizador poderá fazer a sua pesquisa. Caso o utilizador não seleccione nenhum campo, o resultado mostrará todos os leiloes existentes.
+
Nesta página da plataforma, o utilizador poderá encontrar toda a informação sobre os seus dados pessoais. Outra informação pertinente é o histórico de vendas efectuadas, compras efectuadas e feedback recebido.
 +
''Exemplo:''
''Exemplo:''
-
[[File:comentarios.jpg |200px| thumb |left| imagem3 – pesquisa.php]]
+
[[File:index.jpg |200px| thumb |left| imagem3 – pesquisa.php]]
 +
 
 +
 
 +
 
Line 111: Line 130:
'''Página de validacao'''
'''Página de validacao'''
 +
Nesta página o administrador tem a sua disposição todos os casos pendentes a serem necessários validar.
Nesta página o administrador tem a sua disposição todos os casos pendentes a serem necessários validar.

Latest revision as of 15:05, 18 January 2011

Logo.jpg

Universidade de Aveiro | DeCA | NTC | Laboratório Multimédia 5

1º Semestre | 3º Ano | 2010/2011

18 De Janeiro de 2010


Autores:

Sérgio Valente - 43006 || Tatiana Campos - 38860 || Tiago Ferreira - 41747



Contents

Introdução

No âmbito da unidade curricular de Laboratório Multimédia V foi-nos proposto a realização de um projecto baseado no conceito da Web 2.0, de modo a podermos aplicar, e apresentar, os conhecimentos adquiridos durante o semestre. A ideia geral do projecto surgiu após uma conversação entre os elementos do grupo e os docentes de Lab V e ICPM. Dos quais nos fizeram pensar sobre as dificuldades de implementação de algumas ideias, e o aperfeiçoamento de outras. O grupo elegeu então um site online de leilões, mais tarde especificando num só nicho de mercado. O ramo automóvel. Nasceu então a LeiLauto, um site online de leilões dedicados à compra e venda de automóveis. Como o próprio slogan da empresa indica: “A sua compra online sobre rodas”.


Objectivo do documento

Este relatório tem por objectivo o esclarecimento de dúvidas que possam surgir por parte dos docentes e ainda aspectos complicados de transmitir através da sua implementação e apresentação. Com a explicação das funcionalidades que se encontram nas diversas páginas, está inserido algum do código mais importante para melhor entendimento e acompanhamento.


Visão geral do projecto

LeiLauto.pt tem por objectivo ser intuitivo e fácil de utilizar. Destina-se a um público-alvo vasto, desde que tenha intenção de comprar ou vender automóveis. Ao entrar na plataforma Web 2.0 irá ficar subentendido para o utilizador a que mercado o site remete, onde irá encontrar alguns negócios em progresso. Poderá entrar em cada deles, obtendo mais informação sobre os mesmos. Se estiver, então, interessado em licitar um negócio será direccionado para a página de log in. Se já tiver efectuado o registo bastará introduzir os seus dados, senão poderá efectuar o registo. Ao ser um utilizador registado o utilizador fica, então, a fazer parte da comunidade. Esse papel dá-lhe benefícios de acesso, que não teria de outra forma. Como: Licitar em negócios do qual pode estar interessado; Efectuar perguntas ao vendedor sobre o mesmo; Verificar o feedback que o vendedor tem; Colocar um novo negócio; entre outros. Além de proporcionar aos utilizadores a hipótese de negociar uns com os outros, a LeiLauto.pt tem como principal objectivo proporcionar uma rede de interacções entre os utilizadores, onde há um interesse comum e poderão descobrir outros mais. Para esse efeito a LeiLauto.pt, com os seus administradores, modera o site mantendo a ordem e o progresso da empresa. O progresso só é possível tirando o máximo partido dos recursos que a empresa dispõe, lucrando uma percentagem por cada negócio concluído, e por cada personalização das vendas. Espera também, tirar partido de eventual publicidade, assim como de donativos da comunidade para manter a LeiLauto.pt viva e de boa “saúde”.


Base de dados

A base de dados tem um papel importantíssimo no nosso projecto, ela contém todos os dados relacionados entre si. Permite-nos uma boa gestão desses dados, assim como, uma rapidez em todas as necessidades como seleccionar, remover, actualizar e adicionar informação. A nossa base de dados é composta por 14 tabelas relacionadas entre si, usando ligações de muitos para muitos e um para muitos. As três entidades principais são as entidades utilizadores, carros e licitações. Estas contêm os três atributos mais importantes, os quais representam as respectivas chaves primárias. Os três atributos são a identificação do utilizador, do automóvel e da licitação. Com estas três propriedades únicas a base de dados ramifica-se em muitos outros campos e registos. A tabela utilizadores contém toda a informação dos utilizadores registados no LeiLauto.pt, onde figuram os dados de primeiro e ultimo nome, username e respectiva palavra-chave, pergunta e resposta secreta, dados pessoais como morada e telefone, informação sobre o tipo de perfil e se este está activo. Enquanto a tabela carros, tem contido em si toda a informação relativamente aos automóveis, como: identificação do modelo e marca do automóvel, características do automóvel como a cor, quilometragem e potência. Por fim a tabela licitações, que contém toda a informação que diz respeito aos negócios em aberto no LeiLauto.pt, informação como: O valor actual do leilão e data de fim de leilão, assim como toda a identificação de carro e utilizador tornando-se a tabela de relação entre as duas entidades anteriormente explicadas, transformando uma relação de muitos para muitos entre as tabelas utilizadores e carros, numa relação de um para muitos entre a tabela de relação (licitações). De referir, também, que a base de dados já contém alguns registos inseridos, para fins de testes. Nomeadamente na tabela utilizadores, em que introduzimos um utilizador Admin (password: admin) com permissões totais. No que diz respeito a todos os outros utilizadores a palavra-chave é 1234.

Exemplo:

imagem1 – base de dados









Implementação

Serão explicados alguns processos que foram aplicados no projecto no decorrer da fase de implementação.


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

A plataforma web 2.0 LeiLauto.pt tem como principais funcionalidades permitir ao utilizador a compra e venda de automóveis. Para tal, é imperativo que seja um utilizador registado. Um utilizador não registado pode navegar na plataforma, no entanto, tem algumas limitações. Se o utilizador tentar efectuar uma licitação ou iniciar uma venda se estar logado, será de imediato reencaminhado para a página de log in onde poderá fazer um novo registo. Já como utilizador registado, as funcionalidades da plataforma aumentam signitivamente. O utilizador já consegue efectuar uma licitação num negócio que esteja a decorrer, assim como criar um novo negócio para venda. O administrador do site tem acesso privilegiado, as suas funcionalidades passam por validar a colocação de novos negócios, analisando para esse efeito se o negócio preenche os requisitos mínimos para ser colocado online. Requisitos como conteúdos e clarificação desses mesmos conteúdos. Alem da validação dos negócios, também tem como função validar todos os comentários deixados na plataforma, se os conteúdos são apropriados, e também, validar novos utilizadores. Esta validação, e todas as outras ficam sempre pendentes até o administrador dar o ok para a sua publicação. A plataforma permite a transformação de um administrador em utilizador registado normal, retirando todas as funcionalidades nele presentes. No entanto, a plataforma não permite que um utilizador registado normal, tenho a capacidade de se tornar administrador ou qualquer outro utilizador.

Mapa de páginas

O mapa de páginas define todas as páginas existentes na aplicação, de seguida iremos descrever algumas delas:


Página inicial

Nesta página o utilizador irá encontrar um formulário de pesquisa com vários campos que poderá preencher de acordo com as suas necessidades. Campos como a marca, modelo, combustível, preço com duas margens de mínimo e máximo, assim como o tipo de ordenação ou um campo onde o utilizador pode colocar o código de identificação do negócio. Ainda na mesma página o utilizador terá acesso aos principais destaques, com fotos desses mesmos destaques.

Exemplo:

imagem2 – índex.php










Página de conta pessoal

Nesta página da plataforma, o utilizador poderá encontrar toda a informação sobre os seus dados pessoais. Outra informação pertinente é o histórico de vendas efectuadas, compras efectuadas e feedback recebido.

Exemplo:

imagem3 – pesquisa.php











Página de validacao

Nesta página o administrador tem a sua disposição todos os casos pendentes a serem necessários validar.

Exemplo:

imagem4 – validar.php










Página de inserir novo produto para venda

Nesta página o utilizador se estiver registado, poderá inserir um novo produto onde irá escolher as várias características do automóvel, como: marca, modelo, quilómetros, cor, potencia, categoria, localização, entre outros. Importante é a colocação da base de licitação e a duração do leilão. Para melhorar as hipóteses de interesse por parte dos compradores o utilizador poderá colocar varias fotos que ilustram o automóvel.

Exemplo:

imagem5 – inserir.php











Server Behaviours utilizados

Insert Record

Serve para inserir informação na base de dados. Foi utilizado várias vezes, para criar utilizadores, adicionar conteúdos, entre outros.

Exemplo:

$insert="INSERT INTO carros (idMarca, idModelo, kilometros, observacoes, cor, precoInicial, potencia, idCategoria, local, primeiroRegisto, idUtilizador, idCombustivel, idEstado, dataTermino, valorBase) VALUES ('$marca', '$modelo', '$kilometros', '$obs', '$cor', '$preco', '$potencia', '$categoria', '$local', '$primeiro_registo', '$utilizador', '$combustivel', '$estado', '$termino', '$preco')";
			mysql_query($insert);



Repeat Region

Server criado quando é necessário apresentar uma lista de dados de uma tabela, dinamicamente. Especialmente utilizada na listagem dos comentários.

Exemplo:

<?php do { if($totalRows_licitacoes>0){ ?>
  <tr>
    <td><a href="<?php echo "detalhes.php?id=".$row_licitacoes['idCarro']; ?>">Referência do leilão: #<?php echo $row_licitacoes['idCarro']; ?></a></td>
    <td>Valor licitado: <?php echo $row_licitacoes['valor']; ?> €</td>
  </tr>
  <?php }else{ echo "<tr><td colspan='2'><span style='color:#fff;font-style:italic;'>Não existem licitações colocadas neste momento...</span></td></tr>"; } } while ($row_licitacoes = mysql_fetch_assoc($licitacoes)); ?>



Show If Not First Page/Last Page/Move to First Page/Last Page

Criado quando queremos apresentar uma barra de navegação. Habitualmente acompanhada de uma repeat region. Serve para avançar na lista caso se tenha um número limitado de informação para apresentar de cada vez.

Exemplo:

<td><?php if ($pageNum_licitacoes > 0) { // Show if not first page ?>
        <a href="<?php printf("%s?pageNum_licitacoes=%d%s", $currentPage, 0, $queryString_licitacoes); ?>"><img src="First.gif" /></a>
        <?php } // Show if not first page ?></td>
    <td><?php if ($pageNum_licitacoes > 0) { // Show if not first page ?>
        <a href="<?php printf("%s?pageNum_licitacoes=%d%s", $currentPage, max(0, $pageNum_licitacoes - 1), $queryString_licitacoes); ?>"><img src="Previous.gif" /></a>
        <?php } // Show if not first page ?></td>
    <td><?php if ($pageNum_licitacoes < $totalPages_licitacoes) { // Show if not last page ?>
        <a href="<?php printf("%s?pageNum_licitacoes=%d%s", $currentPage, min($totalPages_licitacoes, $pageNum_licitacoes + 1), $queryString_licitacoes); ?>"><img src="Next.gif" /></a>
        <?php } // Show if not last page ?></td>
    <td><?php if ($pageNum_licitacoes < $totalPages_licitacoes) { // Show if not last page ?>
        <a href="<?php printf("%s?pageNum_licitacoes=%d%s", $currentPage, $totalPages_licitacoes, $queryString_licitacoes); ?>"><img src="Last.gif" /></a>
        <?php } // Show if not last page ?></td><td><?php if($totalRows_licitacoes>0){echo "Página ".($pageNum_licitacoes+1)." de ".($totalPages_licitacoes+1)." (".$totalRows_licitacoes." registos)";} ?></td>



Update Record

Formulário criado automaticamente para actualizar os dados de uma determinada tabela.

Exemplo:

$update="UPDATE carros SET precoInicial='$valor' WHERE idCarro='$id'";
	mysql_query($update);



Log Out User/Log In User

Servers criados para guardar dados respectivos à sessão actual.

Exemplo:

Log IN:

$control=0;
$login = $_POST['login_var'];
$utilizador = $_POST['login_utilizador'];
$password = $_POST['login_password'];
$password = encode5t($password);
if($login == 1){
	$result = mysql_query("SELECT userName,password,idTipoPerfil,idUtilizador FROM utilizadores where userName='$utilizador' AND password='$password' AND idEstado=2")
		or die(mysql_error());
		$row = mysql_fetch_array($result);
		$u = $row['userName'];
		$p = $row['idTipoPerfil'];
		$uid = $row['idUtilizador'];
	if($row!=NULL){
		@session_start();
		$_SESSION['username']=$u;
		$_SESSION['perfil']=$p;
		$_SESSION['idUtilizador']=$uid;
	}else{
		echo "<script language='javascript'>popup_login_errado();</script>";
            	$control=1;
	}
	if($control!=1){
    		echo '<meta http-equiv="refresh" content="0">';
	}
}


Log OUT:

if($_GET['logout']==1){
	@session_start();
	unset($_SESSION['username']);
	unset($_SESSION['perfil']);
	unset($_SESSION['idUtilizador']);
	unset($_SESSION['insert']);
}



Restrict acess to page

Criado para restringir o acesso das páginas a utilizadores que tenham feito login e/ou tenham um determinado estatuto (no nosso caso, username admin, explicado anteriormente). Como foi dito, todas as páginas tiveram a necessidade de implementação do ‘Restrict Acess to Page’, uma vez que o nosso login é implementado numa página a parte e esta é invocada por todas. Assim, é possível que as nossas opções de login se mantenham, e uma vez que foi retirado código que é gerado automaticamente, qualquer outro utilizador que não tenha login feito pode ver as páginas disponíveis.

Exemplo:

if($_SESSION['username']!=""){
	echo '<span id="menu_item"><a href="pessoal.php"> pessoal </a></span> ';
	if($_SESSION['perfil']==1){
		echo '<span id="menu_item"><a href="validar.php"> validar </a></span> ';
		echo '<span id="menu_item"><a href="editar.php"> editar </a></span> ';
	}
	echo '<span id="menu_item"><a href="inserir.php"> inserir </a></span> ';
	echo '<span id="menu_item"><a href="index.php?logout=1"> sair </a></span>';
	echo "<span style='float:right;padding-right:5px;font-size:11px;'>Bem-vindo ".$_SESSION['username']."</span>";
}else{
	echo '<span id="menu_item"><a href="registo.php"> registo </a></span> ';
	echo '<span id="menu_item"><a href="#" onclick="popup()"> login </a></span> ';
}



Recordsets/Queries utilizados

Alguns exemplos de recordset com a respectiva querie são:

Recordset pessoal e respectivo SQL: Esta querie tem como objectivo filtrar os conteúdos pela variável de sessão MM_Username através da tabela utilizadores.

Exemplo:

imagem6 – Recordset pessoal









Recordset leilões e respectivo SQL: Esta querie tem como objectivo filtrar os conteúdos pela variável de sessão id_Utilizador e data de fim de leilão ser superior ao dia de hoje, através da tabela carros.

Exemplo:

imagem7 – Recordser leiloes









Recordset leilões acabados e ganhos e respectivo SQL: Estas duas queries tem como objectivo filtrar os conteúdos pela variável de sessão id_Utilizador e data de fim de leilão ser inferior ao dia de hoje, no caso de leiloes terminados, através da tabela carros. No caso de leiloes ganhos, a pesquisa é feita através da relação entre as tabelas vencedores e carros. Feita através dum INNER JOIN onde o apenas conta o conteúdo presente nas duas tabelas.

Exemplo:

imagem8 – Recordser leiloes ganhos











Parâmetros passados entre páginas

Os parâmetros passados entre páginas e usados para filtrar conteúdos foram os seguintes:

MM_Username – usado para verificar qual o utilizador que tem a sessão iniciada e apresentar informações sobre o mesmo.

ID – o mais usado para filtros no nosso site. Habitualmente passado por URL e filtrado na página de destino, onde são apresentadas informações sobre o ID passado.

Perfil – usado para verificar qual o perfil do utilizador que está a ser utilizador e permitir ou restringir acesso de acordo com o mesmo perfil

A plataforma contém vários exemplos de utilização das variáveis de POST e GET como demonstram os exemplos seguintes:

Exemplo:

POST

 
$marca=$_POST['ins_marca'];
$modelo=$_POST['ins_modelo'];
$kilometros=$_POST['ins_kilometros'];
$obs=$_POST['ins_obs'];
$cor=$_POST['ins_cor'];
$potencia=$_POST['ins_potencia'];
$categoria=$_POST['ins_categoria'];
$local=$_POST['ins_local'];
$duracao=$_POST['ins_duracao'];
$primeiro_registo=$_POST['ins_primeiro_registo'];
$combustivel=$_POST['ins_combustivel'];
$preco=$_POST['ins_preco'];


GET

if($_GET['action']=="leilao" AND $_GET['result']=="true" AND $_POST['ins_preco']!=""){
 (...)
}



Desenvolvimentos Futuros

No que diz respeito a desenvolvimentos futuros, o grupo entendo que poderia implementar uma pesquisa avançada com mais parâmetros de pesquisa. O grupo achou secundário esta implementação pois a pesquisa existente contém já vários campos, dando ao utilizador várias alternativas de pesquisa. Outro desenvolvimento futuro seria a implementação de sistema de mensagens entre os utilizadores. Existe um centro de mensagens na plataforma mas sempre associada a um produto. Um desenvolvimento futuro seria fazer algo autónomo. O grupo no futuro, gostaria de implementar um sistema de envio automático de correio electrónico através do servidor SMTP. Uma das funcionalidades que o grupo gostaria numa fase inicial de implementar, mas que devido ao factor tempo acabou por não ser possível, foi a possibilidade de o utilizador fazer um upgrade da sua conta tendo para isso vários privilégios como descontos na personalização da sua venda e ter algo identificativo como utilizador Premium. Para poder efectuar esse upgrade o grupo pensou num sistema de pagamentos usando por exemplo o PayPal. A recuperação da palavra-chave é algo que não está implementado, apesar de a base de dados estar preparada para esse efeito. Contendo os campos de pergunta e resposta secreta. Algo que o grupo entende que, também, poderia ser implementado no futuro seria uma pagina de contactos. Pagina onde o utilizador encontraria os contactos da LeiLauto.pt e um formulário de envio de mensagens. Além desse desenvolvimento, também achamos importante para o futuro criar um centro de mensagens individual, onde o utilizador controla as suas mensagens sem estar dependente de a mensagem estar associado ao leilão. Por fim, onde aparece uma imagem com o slogan da empresa, o grupo entende que no futuro será o espaço ideal para aparecer publicidade.



Conclusões

Após a realização do projecto o grupo entende que obteve conhecimentos importantes e desenvolveu uma capacidade de perceber e perspectivar a realidade da Web 2.0. Realidade essa cada vez mais frequente, e importante como futuros tecnólogos da comunicação que seremos. Os conhecimentos obtidos no âmbito das aulas práticas e teóricas foram indispensáveis para o resultado final, assim como, uma pesquisa objectiva a necessidades especificas. O grupo tem consciência que certos aspectos podiam ser melhorados, no entanto, acredita que atingiu os principais objectivos inicialmente propostos pela cadeira assim como os objectivos propostos pelo próprio grupo.



Referências Bibliográficas

[W3School] - [1]

[Php.net] - [2]

[TinyMCE] - [3]

[Curso PHP] - [4]

[Magic Book] - [5]

[Validação de formularios] - [6]

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox