" . $a['title'] . "
" . "" . $a['time'] . "
" . "- " .
"
- Sobre
Projeto simples de um Portal de Notícias sobre Esporte .
Antes de comear, você vai precisar ter instalado em sua máquina as seguintes ferramentas:
- [x] Apache - [x] MySQL - [x] PHPAlém disto é bom ter um editor para trabalhar com o código como VSCode
0 Acesse o diretório onde vai ficar o projeto, no terminal/cmd:
```bash $ cd /var/www/html/ ```1 Clone este repositório:
```bash $ git clone https://github.com/heitor-am/SportNews ```2 Vá para o diretório db:
```bash $ cd /SportNews/db ```3 Execute o arquivo init.sql
, no MySQL:
Pronto, agora o Banco de Dados está preparado para executar o arquivo SportNews/index.php
.
No arquivo index.php
, onde é tratado a homepage do site, logo no início do código, é feita uma requisio ao banco de dados.
Nessa requisio, os sete últimos artigos publicados no Banco de Dados so colocados em um array associativo, que por sua vez, é usado para manipular a distribuio das notícias ao longo da página.
Como exemplo, tem-se o artigo principal da página:
O artigo principal sempre é o mais recente, portanto, está na posio “0” no array, e, dessa forma, é posto na página, distribuindo as informaes no HTML conforme as keys do array associativo (‘title’, ‘time’, ‘subtitle’, …).
~~~php ~~~E isso acontece com todos os demais artigos que aparecem na homepage.
Para que o redator possa criar um novo artigo, ele primeiro precisa logar no sistema. A opo para login fica na sidebar.
Clicando no boto, um pop-up aparece na tela onde so solicitadas as informaes de login: Nome do usuário e Senha.
~~~phpAo clicar no boto Login, todas as informaes inseridas nos inputs so enviadas, através do método POST, ao arquivo /redator/login.php
, onde é verificado se os dados recebidos esto contidos no Banco de dados.
Se as informaes forem autenticadas, o redator será direcionado à página de edio de artigos.
Após preencher os campos de texto, o redator clica em Preview, onde os inputs so inseridos dentro de um array, e acaba sendo direcionado a uma página que mostra uma pré-visualizao do seu artigo, dessa forma, ele pode verificar o resultado final sem que haja a necessidade de enviar ao Banco de Dados.
~~~php $content = array( "category" => $_POST["category"], "editor" => $_POST["editor"], "main_image" => $_POST["main_image"], "title" => $_POST["title"], "subtitle" => $_POST["subtitle"], "content" => $_POST["content"] ); ~~~Trecho do código preview.php
, onde os conteúdos dos inputs so inseridos em um array.
Observe que há duas opes: Voltar, caso o redator no tenha gostado do resultado do artigo, e Enviar, caso a demonstrao tenha sido aprovada.
Ao clicar em Enviar, o array com o conteúdo do artigo é enviado ao arquivo /redator/commit_data.php
, através do método POST.
Trecho do código preview.php
, onde o conteúdo do artigo é preparado para ser enviado ao arquivo commit_data.php
Obs: O arquivo commit_data.php
depende do arquivo /db/db_connect.php
, onde é estabelecida a conexo com o Banco de Dados.
commit_data.php
, onde os dados foram recebidos, é feito um INSERT na base de dados com todo o conteúdo do artigo.
~~~php
$now = date("d/m/Y H:i");
$query = "INSERT INTO articles (category, editor, time, main_image, title, subtitle, content) VALUES (" .
"'" . $content["category"] . "'," .
"'" . $content["editor"] . "'," .
"'" . $now . "'," .
"'" . $content["main_image"] . "'," .
"'" . $content["title"] . "'," .
"'" . $content["subtitle"] . "'," .
"'" . $content["content"] . "');";
if (mysqli_query($connect, $query)) {
alerta("success", "Artigo enviado com sucesso!", false);
echo "";
// Encerrando a sesso
session_start();
session_unset();
session_destroy();
} else {
echo "Error: " . $query . "A tabela articles possui a seguinte estrutura:
Cada link de artigo localizado na homepage tem seu boto de redirecionamento para a apresentao completa, o boto sobre.
Ao clicar no boto, o usuário é direcionado ao arquivo /articles/article.php
, tendo como parmetro o id do artigo.
Recebendo o id do artigo, o arquivo article.php
faz uma REQUEST no Banco de Dados para que as informaes daquele artigo em específico sejam extraídas.
Por " . $row['editor'] . "
Caso o usuário procure por um artigo específico, ele pode optar por digitar uma palavra de seu interesse na barra de pesquisa localizada na sidebar.
Ao digitar uma palavra e pressionar a tecla Enter, o formulário, onde está localizado a barra de pequisa, aciona o arquivo /articles/search.php
, que, por sua vez, através do método GET, recebe o conteúdo do input e, logo após, faz uma requisio à Base de Dados para receber todos os artigos que possuam o título relacionado ao que foi digitado na barra de pesquisa.
Caso a busca seja favorável, os artigos envolvidos so enviados à tela.
~~~php "; foreach ($array as $a) { echo "" . $a['time'] . "
" . "Nenhum resultado encontrado :(
" . "Sua busca por \"" . $search . "\" no retornou resultados.
" .
"Tente novamente com outros termos.
Na sidebar, o usuário pode filtrar os artigos existentes com base em sua categoria.
Ao clicar em uma das categorias listadas, o usuário é redirecionado a https://localhost/SportNews/articles/?cat={categoria}
, onde a categoria escolhida é passada como parmetro em cat, e, dessa forma, o usuário verá apenas os artigos da categoria escolhida.
A API – Interface de Programao de Aplicaes – escolhida para o projeto foi a https://v2.api-football.com, exclusivamente utilizada para a coleta de dados atualizados do campeonato brasileiro de futebol.
O arquivo de conexo à API está em /tables/api.php
Os dados retirados da API so inseridos em um array, para que o tratamento das informaes possa ser feito de maneira mais eficiente, e depois so jogados em uma tabela gerada por tags HTML, que pode ser vista em http://localhost/SportNews/tables/?serie=a
ou http://localhost/SportNews/tables/?serie=b
, isso ocorre no arquivo /tables/index.php
.