Sistema De Notícias Em PHP E MySQL

Hoje falaremos sobre um tipo de sistema muito utilizado no dia a dia. O Sistema de Notícias.

Página Index

Dificilmente você encontra matérias na Internet contendo um passo a passo completo e explicativo. Tem sim: vários sistemas disponíveis com código pronto para você apenas copiar.

Nesta matéria comentaremos as partes mais importantes de cada script, visando facilitar seu aprendizado.

Passo 1: Estrutura de pastas

Como alguns já sabem, gosto de focar os sistemas que desenvolvo de forma limpa, prática e organizada.

Por este motivo, apresentamos abaixo a estrutura utilizada nas pastas deste Sistema:

pastas do site

OBS.: Na pasta

Passo 2: Criando as Tabelas na Base de Dados:

Antes de partirmos para a programação, abra o arquivo script-sql.txt (disponível no arquivo em anexo) e cole seu conteúdo no Programa utilizado para gerenciamento da base de dados.

Em nossas matérias utilizamos como padrão o MySQLFront. Caso você queira utilizar este programa, clique em SQL Editor e cole o conteúdo do script (conforme imagem abaixo).

Criar Tabela MySQL

Passo 3: Script De Conexão

Tendo as pastas já criadas e as tabelas na base de dados geradas, você já pode dar início à Programação!

Crie o arquivo conexao.php e coloque dentro da pasta CONFIG.

Neste arquivo, você deverá disponibilizar o texto abaixo:


----- CONFIG.PHP ------
<?
  
$database="localhost:3307"; // SERVIDOR E PORTA UTILIZADA  
$dbname="tutorial"; // BASE DE DADOS
$usuario="root"; // USUÁRIO DO MYSQL
$dbsenha=""; // SENHA DO MYSQL

$conexao=mysql_connect ($database, $usuario, $dbsenha);
if($conexao){
      if (mysql_select_db($dbname, $conexao)){ print "";
      }else{ print "Não foi possível selecionar o Banco de Dados"; }
}else{ print "Erro ao conectar o MySQL"; }
?>
----------

Passo 4: Menu Gerencial – Formulário (index.php):

A página index.php apesar de ter uma aparência simples, é de fundamental importância para este sistema.

Através dela temos acesso ao menu gerencial!

OBS.: Para facilitar seus acessos, criamos o usuário abaixo:

Login: teste@teste.com – Senha: 123456

Login Sistema Notícias

Passo 5: Menu Gerencial – Autenticação (autenticacao.rotinas.php):

Esta será a página onde faremos todo o gerenciamento de usuários, isto é: Diremos ao Sistema quem deve ou não ter acesso à Área Gerencial.

Bem… estamos disponibilizando um script simples de acesso, porém, caso seja de seu interesse, você poderá melhorar este código.


-----Linha 02 e 03 -----
session_start();
include ("../config/conexao.php");
------------

Talvez esta seja a parte mais importante do código, pois se você não tiver este conteúdo em seu código, ele simplesmente não vai registrar a sessão, nem permitir a conexão à base de dados.


-----Linha 06 à Linha 08 -----
$cliente_username = $_POST["usuario"];
$cliente_password = $_POST["senha"];
$enviado          = $_POST["enviado"];
---------------

Através das linhas acima você receberá as variáveis com o nome do usuário, senha de acesso e o status (neste caso, utilizaremos a condição enviado para reforçar na segurança).


-----Linha 10 à Linha 29 -----

if ($enviado == "posted"){    

if (!isset($cliente_username) or !isset($cliente_password)) { echo "Erro!"; exit; }  
if (empty($cliente_username) or empty($cliente_password)) { echo "Dados inválidos!"; exit; }

$query = "select * from tbl_usuarios where email = '$cliente_username' and senha = '$cliente_password'";
$result = mysql_query($query);
$number = mysql_num_rows($result);

if ($number==0) { ?>
<script>alert('Autorização inexistente/Senha inválida ou expirada.');history.back();</script>
<?
exit;
} else {
$_SESSION['usuario_id'] = mysql_result($result,0,'id');
$_SESSION['usuario_nome'] = mysql_result($result,0,'nome');
?><script>document.location = '../principal.php'</script><?
}
mysql_close($conexao);

}
----------

Nas linhas acima o script fará uma validação completa, verificando se o usuário e a senha informado existem.

Antes disso, ele só fará a leitura se a variável $enviado (exemplo da linha 6 à linha 8) tiver o valor posted.

Caso este valor (que será passado através do método POST) não seja o informado, ele sequer fará a leitura no demais.

Nas linhas a seguir (após ele validar a variável $enviado) o script fará uma série de verificações, finalizando ao registrar as sessões para o ID e NOME do Usuário selecionado. Além disso ele fará seu direcionamento à página principal.php.

Passo 6: Menu Gerencial – Página Principal (principal.php):

Esta será a página principal do sistema, onde teremos acesso às demais a serem gerenciadas (conforme você pode ver na imagem abaixo).

Menu Principal

OBS.: Apesar de também estar disponível no Sistema (no arquivo em anexo), para não tomar muito seu tempo, falaremos nesta matéria apenas dos itens Cadastrar Notícia e Listar Notícias.

Certamente os comentários diversos disponíveis nesta matéria sanarão qualquer dúvida que você tenha quanto aos demais arquivos.


-----Linha 02 à Linha 11 -----
session_start();
if (empty($_SESSION['usuario_id'])){
echo "Acesso negado!";
exit;
}else{
include('config/conexao.php');

$usuario_id   = $_SESSION['usuario_id'];
$usuario_nome = $_SESSION['usuario_nome'];
}
------------

Neste trecho do script faremos uma validação!

Se o ID e NOME do usuário tiver em uso nsta sessão, ele deverá lhe dar acesso, caso não esteja em uso ele deverá restringir o acesso.

Fará acesso também ao script conexao.php (responsável pela conexão ao banco de dados).

Após isto, o sistema fará algumas verificações simples neste script, só atentando para o botão excluir (onde ele deverá direcionar seu acesso ao script logout.php (responsável pela exclusão da sessão).

Passo 7: Menu Gerencial – Cadastrar Notícia (noticias_cadastrar.php):

Esta é a página responsável pelo cadastro da notícia (conforme você pode ver na imagem disponível abaixo).

Formulário Inserção Notícia


-----Linha 28 à Linha 35 -----
<script language="javascript" type="text/javascript" src="javascript.js"></script>
<script type="text/javascript" src="htmlarea.js"></script>
<SCRIPT src="javascript/jscripts.js"></SCRIPT>

<script type="text/javascript">
   _editor_url = "htmlarea/";
   _editor_lang = "en";
</script>
----------

O trecho acima chama os scripts responsáveis pelo funcionamento do Editor de Textos.

OBS.: Veja que ele chama os scripts a seguir: javascript.js, htmlarea.js, jscript.js e a pasta htmlarea.


-----Linha 46 -----

<form action='script_noticias.php?acao=cadastrar' Method='post' enctype='multipart/form-data'>
----------

Apesar do trecho acima ser muito utilizado (por tratar-se do FORM), fiz questão de comentar esta linha, por ter o enctype.

Fazendo uso do multipart/form-data será possível efetuar o envio de arquivo (FILE) ao Servidor.


-----Linha 195 à Linha 198 -----

<script language="JavaScript1.2" defer> editor_generate('msg'); </script>
<textarea name="msg" cols="65" rows="15" border='1'></textarea>

-----

O Javascript acima trás ao TEXTAREA o Editor de Textos personalizado.

Passo 8: Menu Gerencial – Script Notícias (script_noticias.php):

Trata-se de um script exclusivo que deverá receber os scripts tratados enviar ao banco de dados, devendo após este inserir, alterar ou excluir o conteúdo.

OBS.: Para saber mais sobre este script, sugerimos verificá-lo na íntegra, dentro da pasta ADMIN.


-----Linha 25 à Linha 29 -----

$acao = $_GET['acao'];

switch ($acao) {

case cadastrar_categoria:
----------

Assim como os demais scripts, o script_noticias.php também tem o conteúdo padrão para manter sua segurança; porém, até para facilitar seu gerenciamento, recebe por método GET o motivo da entrada (exemplo: alterar, cadastrar, cadastrar_categoria, excluir) e por método POST receberá os valores a serem manipulados.

OBS.: Após a inserção, edição ou exclusão, seja qual for o comando utilizado, o script fará o redirecionamento para uma outra página.

Passo 9: Menu Gerencial – Listar Notícia (noticias_listar.php):

Através desta página você poderá de forma prática e simples listar todas as notícias cadastradas, além de poder visualizá-las em janela popup, podendo editá-las ou efetuar sua exclusão a qualquer momento..

Menu Listar Notícias


-----Linha 27 à Linha 31 -----

<script language="JavaScript">
function Abrir_Pagina(URL,Configuracao) {
  window.open(URL,'',Configuracao);      
}
</script>
----------

No trecho acima você chamará a página externa noticias_visualizar.php. Esta página deverá abrir a notícia selecionada, sendo possível visualizar até mesmo a imagem inserida.


-----Linha 203 à Linha 205 -----

<a href="javascript:Abrir_Pagina('noticias_visualizar.php?id_noticia=<?= $row["id_noticia"];?>','scrollbars=yes,width=700,height=800')">
<img src="imagens/ed_preview.gif" width="16" height="14" border="0">                                                              
</a>

----------

O trecho acima completa o que comentamos da linha 27 à linha 31, abrindo a página noticias_visualizar.php.

Passo 10: Página Externa – Index (index.php):

Será a área onde disponibilizaremos erá a página principal do sistema, onde teremos acesso às demais a serem gerenciadas (conforme você pode ver na imagem abaixo).


-----Linha 13 à Linha 24 -----

$query_noticias = "select * from tbl_noticias where status = '1' limit 8";
$rs_noticias    = mysql_query($query_noticias);
                    
while($campo_noticias = mysql_fetch_array($rs_noticias)){
                  
$id_noticia        = $campo_noticias['id_noticia'];
$data_noticia      = $campo_noticias['data'];
$titulo_noticia    = $campo_noticias['titulo'];
$descricao_noticia = $campo_noticias['descricao'];
$texto_noticia     = $campo_noticias['msg'];
$fonte_noticia     = $campo_noticias['legenda'];
$imagem_noticia    = $campo_noticias['nome_arquivo'];
----------

No trecho acima o SELECT busca todas as notícias com status = 1, limitando a busca a 8 registros.

Após isto, utilizaremos o comando WHILE para retornar os registros através das variáveis acima definidas (um após o outro).

Passo 11: Página Externa – Descrição de Notícia (noticias-descricao.php):

Através desta página você poderá visualizar a notícia, visualizando-a por inteiro (título, descrição, notícia, imagem e fonte da notícia).

Página Da Notícia

OBS.: Não vamos inserir a descrição da notícia aqui, para não prolongar mais a matéria, porém, te aconselho a verificar a página noticias-descricao.php (disponível em anexo), onde você poderá visualizar o script por inteiro.

Passo 12: Página Externa – Últimas Notícias (noticias.php):

Através desta página você poderá visualizar as últimas 50 notícias cadastradas no Sistema, podendo encontrá-las facilmente através da data de cadastro e descrição.

Página Index

OBS.: Você poderá alterar esta página, inserindo um buscador e contador de páginas!

Ficamos por aqui em mais uma matéria! Esperamos tê-lo ajudado em algo…

Envie-nos suas dúvidas e dê sugestões para as próximas matérias! Nosso compromisso é lhe ajudar!

DOWNLOAD: Descarregue o código utilizado neste tutorial: Sistema De Notícias Em PHP E MySQL, em formato .zip.

Be Sociable, Share!

169 Comentários

  1. leo2505

    Olá, adaptei o frontend para minha necessidade e funcionou legal. Obrigado por compartilhar o conhecimento.

  2. Cara, eu submeti os dados no site e funcionou legal.
    Muitíssimo obrigado!
    Me envie seu dados para que eu possa mencionar os direito do autor.

    Att,
    Gabriel Augusto

  3. Fabio

    Olá,

    Consegui fazer o sistema funcionar 100%, porém queria realizar apenas uma alteração, As noticias estão em modo decrescente ex: 1° noticia postada ontem 01/01/2016, a noticia abaixo é a mais recente sendo postada dia 02/01/2016, É possível deixar ao contrário?
    colocando a mensagem mais recente por Primeiro(1°) ? Obrigado.

Participa! Comenta... para Gabriel Augusto