Skip to content

1deterministic/infoMedicine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

111 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

infoMedicine

Descrição de alto nivel

Sistema web projeto da disciplina de Desenvolvimento Web - UniCEUB 2017-1

Descrição em alto nível do ponto de vista do usuário:

Implementação disponível no endereço: infomedicine.gear.host;

Index.php é a página principal, ela contém um campo de pesquisa básico onde o usuário pode digitar o nome de um medicamento, fabricante ou principio ativo. A busca utiliza comparação por porcentagem então serão apresentados resultados que combinem parcialmente com o que foi pesquisado, como por exemplo: se o usuário digitar amo no campo de busca, a pesquisa vai apresentar resultados que possuam essa sequência de carácteres como amoxicilina ou diamox, contudo não foi implementados algoritmo de correção de gramática devido a sua complexidade, se o usuário não digitar nada serão mostrados todos os registros do banco e ao clicar na imagem do resultado o usuário será redirecionado para uma página de detalhes. Também na pagina principal index há um botão que redireciona o usuário para a pagina de pesquisa avançada.

Na página de pesquisa avançada há 4 campos de busca: nome de medicamento, fabricante, principio ativo e medicamento de referencia (no caso de medicamento genérico), o usuário pode preencher qualquer quantidade destes campos, inclusive nenhum e, a partir das informações digitadas, serão mostrados todos os registros do banco que possuam algum dos campos fornecidos pelo usuário. Assim como na pesquisa básica há a comparação de resultados parcialmente combinados e todos os registros de medicamentos serão mostrados se nada for digitado nos campos de busca, ao clicar na imagem ou no nome do medicamento, o usuário será redirecionado para uma página de detalhes em uma nova guia. Há também um botão na pagina advanced.php (pagina inicial da pesquisa avançada), que redireciona o usuário para uma pagina onde ele pode pesquisar um medicamento a partir de seu código de registro.

implementação


A página advanced.php contém a implementação do formulário de pesquisa avançada, é um formulário simples, com 4 campos, que utiliza o método POST e envia os dados do formulário para a página advancedResults.php. A página advancedResults.php contém a implementação da pesquisa e mostra os resultados como links para a página de detalhes do item selecionado.

Para fins de demonstração as páginas advancedResults.php e advancedDetails.php foram feitas em php e html puro, sem utilizar as funções de display usadas na busca simples.

A página advancedResults.php recebe as informações do formulário utilizando a superglobal $_POST e alocando seus valores para as variáveis $nome, $fabricante, $principio e $referencia. Para realizar a pesquisa é criada uma variável com a string “SELECT * FROM medicamento” que representa um comando sql para selecionar os registros contidos na tabela medicamento (o mesmo princípio poderia ser utilizado para qualquer outra tabela do banco), então é criado um array $cond para armazenar as informações recebidas pelo formulário como keywords para a pesquisa, um grupo de estruturas if são utilizados para alocar uma string do tipo "Nome LIKE '%$nome%'", que é um comando sql para realizar alguma ação quando encontrar um registro na linha Nome no banco de dados que represente uma porcentagem da palavra armazenada na variável $nome, caso o campo tratado pelo if não esteja vazio. Para buscar os registros no banco de dados é criada uma variável $sql contendo inicialmente a string “SELECT * FROM medicamento” e uma estrutura if que adiciona a string “ WHERE “ e desempilha os valores do array $cond com a string “OR “ entre eles, completando o comando sql “SELECT * FROM medicamento WHERE X OR Y” que procura registros na tabela medicamentos que satisfaçam uma das condições especificadas (substituindo-se OR por AND fararia com que a quesquisa realiza-se um filtro dos registros do banco, mostrando apenas os que satisfizessem todas as condições especificadas), caso nada haja sido digitado em nenhum dos campos apenas o comando “SELECT * FROM medicamento” será executado e todos os registros da tabela medicamento serão mostrados.

Nota: Essa implementação é uma das formas mais simples de realizar uma busca em um banco de dados sql, neste caso ela procura apenas por registros da tabela medicamentos mas cm algumas alterações ela poderia buscar resultados de todas as tabelas ou apenas de tabelas especificadas pelo usuário.

Para se mostrar os resultados na tela eles são armazenados na variável $results através do comando $result = mysqli_query($conn,$sql); que executará uma query mysqli com os parâmetros da conexão com o banco armazenados na variável $conn (que está especificada na pagia conexão.php) e na variável $sql, previamente apresentada, então uma estrutura while puxa os valores associados da variável $result, os aloca para as variáveis selecionadas (neste caso são alocados os valores das linhas nome, url e fabrica da tabela medicamentos), e então as variáveis são impressas na forma de um link para a pagina details.php que passa o parâmetro nome através de url, enquanto ouverem valores armazenados em $result. Ao clicar no link o usuário é direcionado para a pagina de detalhes juntamente com o nome do registro do qual deseja obter detalhe através da url.

Na página de detalhes o valor enviado pela página advancedResults.php é obtido utilizando a superglobal $_GET, alocado para a variavel $myname e utilizado no comando sql "SELECT * FROM medicamento WHERE Nome='$myname'" que procura o resgstro na table com o nome armazenado na variável $myname, o resultado da busca e armazenado na variável $result2 com uma query mysqli através do comando $result2 = mysqli_query($conn,$d_query);. Os resultados são impressos na tela através de uma estrutura while que imprime os valores das linhas encontrados no registro selecionado, há duas outras estruturas while similares dentro desta principal que imprimen os valores das tabelas associadas fabricante e principio_ativo.


CRUD

Foi implementado um CRUD (Create Read Update Delete) simples através das paginas display.php, cadastrarFabricante.php, cadastrarMedicamento.php, cadastrarPrincipio.php, inserirFabricante.php, inserirMedicamento.php, inserirPrincipio.php, alterar.php, remover.php, confirmar.php e crud.php.

A página crud.php contém um menu básico com botões que redirecionam o usuário para as paginas do CRUD referenciadas em seus nomes, os botões de inserir x redirecionam o usuário para uma pagina de cadastro com um formulário, os botões alterar x redirecionam o usuário para a página display.php juntamente com a referência url de que tipo de registro deve ser mostrado, o botão Ver todos os Itens Registrados direciona o usuário para a pagina d display com múltiplas referências para mostrar todos os tipos de registros e o botão Voltar a Página de Pesquisa manda o usuário de volta para a página principal index.php. Nota: Poderia ser utilizado também um formulário para o usuário escolher quais registros ele deseja alterar.

A inserção de novos items foi implementada de maneira mais formal com uma página para cada formulário e uma página para cadastrar cada formulário, as paginas inserir x possuem um formulário simples com campos para os dados a serem inseridos em suas respectivas tabelas, as paginas de cadastro recebem os dados do formulário utilizando a superglobal $_POST e os cadastram em sua respectiva tabela utilizando o comando sql INSERT INTO x (a, b, c, d, e) VALUES('$a', '$b', '$c', '$d', '$e')", mostrando uma mensagem que informa se o item foi ou não inserido e redirecionando o usuário para a página de formulário após 2 segundos com o comando: header("refresh:2; url=x.php");.

A página display.php utiliza a superglobal $_GET para verificar os parâmetros que lhe foram enviados e mostra os registros de acordo com o(s) parâmetro(s) que recebeu, cada registro é mostrado juntamente com um botão alterar e um botão deletar. Ao clicar no botão deletar o usuário é redirecionado para a página de confirmar juntamente com o parâmetro do item que deseja alterar na forma de url, nesta página ele é perguntado se deseja ou não deletar o registro, caso escolha não ele é redirecionado para a página de display, caso escolha sim ele é redirecionado para a pagina remover.php juntamente com o parâmetro do item que deseja remover na forma de url, o item é então deletado, o usuário recebe uma mensagem de sucesso e é redirecionado para a página de display. Ao clicar no botão alterar o usuário é redirecionado para a página alterar.php juntamente com o parâmetro url do item que deseja alterar, ele é então apresentado um formulário com os campos do item que deseja alterar (os campos contém as informações atualmente armazenadas no banco).

Para fins de demonstração os códigos de remoção e alteração foram implementados de maneira diferente, os de remoção executam o tratamento de todos os tipos de registro na mesma página mas realizam as ações em páginas separadas, enquanto os códigos de alteração estão todos implementados na mesma página.

A página confirmar.php recebe o parâmetro url do item a ser removido através da superglobal $_GET e mostra duas opções de botões para confirmar se o usuário realmente deseja excluir o registro, caso não ele é redirecionado para a página de display, caso sim ele é redirecionado para a página remover.php juntamente com o parâmetro do item que deseja remover.

A página remover.php recebe o parâmetro do item a ser removido utilizando a superglobal $_GET, utiliza o comando sql "DELETE FROM x WHERE a='$b'", imprime uma string informando que o medicamento foi deletado e o usuário está sendo redirecionado para a página de display e redireciona o usuário para a página de display após 2 segundos utilizando o comando header("refresh:2; url=display.php");.

A página alterar.php recebe o parâmetro url do item a ser alterado utilizando a superglobal $_GET, a partir do parâmetro os dados do item são puxados do banco de maneira similar a utilizada nas páginas de pesquisa e são passados como os valores dos campos do formulário de alteração, para mostar o que está atualmente armazenado no banco, o formulário é então enviado para a mesma página com o método POST, com um valor escondido (hidden) para informar a página que ação executar. Ainda na página alterar.php há uma sequência de ifs que verificam se parâmetros específicos foram passados pelos formulários utilizando a superglobal $_POST com o comando if(isset($_POST['x'])){...}, caso recebam seu parâmetro especifico os ifs alocam os valores enviados pelo formulário para suas variáveis com comandos $a=$_POST['b'];, e utilizam estas variáveis para atualizar os dados do banco através do comando "UPDATE x SET a='$b', c='$d' WHERE e='$y'" utilizando uma mysqli_query, depois de tudo isto feito usuário recebe uma mensagem de status informando se a operação foi ou não efetuada com sucesso e outra informando que ele será redirecionado para a página de display, o usuário é então redirecionado para a página de display depois de 2 segundos com o comando header("refresh:2; url=display.php").


A página conection.php configura uma conexão com o banco de dados e é incluida nas págias que utilizem desta coexão atravéz do comado include 'conection.php';, ela tliza 4 variáveis ($host, $user, $pass e $dbname) para passar as configurações do banco, estabelece uma conexão utilisando o comando mysqli_connect($host,$user,$pass,$dbname) e armazenado-o na váriavel $conn para utilização nos códigos, foram implementados também uma menssagem de erro caso a conexão não seja bem sucedida e o comado mysqli_set_charset($conn,"utf8"); para configurar os cáracteres como utf8.

Nota: está foi uma escolha de projeto, a conexão pode ser configurada manualmete em cada página mas tendo um arquivo separado facilita realizar alterações no código. Imagine um serviço com 50 páginas que utilzam a conexão, após um tempo é nescessário uma atualização do método de coexão devido a uma mudança o banco de dados uma uma mudança na tecnologia utilizada, seria muito mais facil mudar somente o arquivo contendo a configuração da conexão do que alterar a conexão em cada uma das 50 páginas.

About

Sistema web projeto da disciplina de Desenvolvimento Web - UniCEUB 2017-1

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors