DevSecOps

13 dez, 2002

Criando um portal de notícias com PHP/MySQL

Publicidade

Vamos aprender a criar um portal de
notícias com PHP/MySQL. O artigo é longo,
porém muito interessante! Boa leitura!

1.º Passo – Criando e preparando o Banco
de Dados (MySQL)

Comece criando um banco de dados dedicado
a este tutorial. Por exemplo, com o nome notícias;
se já estiver no cliente MySQL, digite o seguinte:

create database noticias;

Por conseguinte, abra o banco de dados
criado:

use noticias;

Agora é criar uma tabela para cadastro
das suas notícias. Você pode seguir o exemplo abaixo,
superprático:

CREATE TABLE noticias (
id int(5) NOT NULL auto_increment,
nome char(30) NOT NULL ,
sobrenome char(30) NOT NULL ,
cidade char(50) NOT NULL ,
estado char(2) NOT NULL ,
email char(80) ,
data date NOT NULL,
hora time NOT NULL ,
titulo char(100) NOT NULL ,
subtitulo char(200) ,
texto text NOT NULL ,
ver char(3) DEFAULT 'off' ,
PRIMARY KEY (id),
UNIQUE id (id)
);

Se você já tiver uma base de conhecimento
em SQL, poderá saber o que cada linha acima realizará.
Irei especificar o que você irá cadastrar em cada
campo:

  • id = Campo de identificação da notícia
    (não é necessário cadastrar nenhum dado, pois ele
    já está habilitado com a função auto_increment que,
    automaticamente, irá inserindo novos valores)
  • nome = Primeiro nome do autor da notícia
  • sobrenome = Sobrenome do autor da
    notícia
  • cidade = Cidade do autor
  • estado = Estado da cidade (especificada
    com apenas 2 caracteres)
  • email = Email do autor, para contatos
  • data = Data utilizada, para saber
    quando foi realizado o cadastro (não será necessário
    nenhum cadastro, pois faremos isso no php automaticamente,
    inserindo a data atual)
  • hora = Hora utilizada no cadastro
    da notícias (também não é necessário o cadastro, pois
    será feito automaticamente com o PHP)
  • título = Título da notícia (máximo
    de 100 caracteres)
  • subtítulo = Pequeno resumo da sua
    notícia (máximo de 200 caracteres)
  • texto = Agora sim, o texto da sua
    notícia, sem limite de caracteres
  • ver = Este campo é curioso. Ele será
    utilizado para o webmaster poder autorizar cada notícia,
    pois caso não tivesse um campo parecido, toda notícia
    cadastrada iria para o site. É como um controle de
    notícias. O padrão aqui, é off, assim toda
    notícia primeiro será passada para o webmaster, para
    depois ser validada.
  • * são campos obrigatórios no cadastro

    Agora com o banco de dados preparado,
    é hora de criarmos o sistema de cadastro de notícias
    do seu site. Este será o 2.º passo!

    2º Passo – Criando o sistema de cadastro
    de notícias

    Este é um passo importante, onde um
    script criado em PHP irá inserir dados no banco de
    dados MySQL. Aqui iremos utilizar os conhecimentos
    passados no tutorial anterior, sobre questões básicas
    de PHP/MySQL. Primeiramente será criado o arquivo
    em HTML (formulário) para o cadastro de notícias.
    Vamos lá:

    Arquivo cadastra.php
    "/" . substr($data,0,4);
    $novahora = substr($hora,0,2) . "h" .substr($hora,3,2) . 
    "min"; echo "

    Sistema de Cadastro de Notícias

    "; echo "

    "; echo "
    "; echo "Nome: *
    "; echo "Sobrenome:
    *
    "; echo "Cidade: *
    "; echo "Estado:(Exemplo: SP, RS, BA)type='text' size=5> *
    "; echo "Email: (Exemplo: feitosac@yahoo.com)name='email' type='text' size=30>

    "; echo "Título do Texto:
    *
    "; echo "Subtítulo do Texto:
    "; echo "Texto:
    *
    "; echo "input
    name='hora' type='hidden' value='$hora'>"; echo ""; echo "
    "; echo "

    "; echo "Campos marcados com * são obrigatórios no
    cadastro.
    "; echo "Observação: Será inserido no seu cadastro a
    data atual, bem como a hora atual do cadastro
    "; echo "Data: $novadata - Hora: $novahora
    "; ?>
    Fim do arquivo cadastra.php
  • Vamos realizar uma pequena análise
    neste arquivo. Repare que os dados do formulário serão
    enviados para o script “inserir.php”, este, por conseguinte,
    será o responsável pela inserção desta notícia no
    MySQL. Outro ponto, é que não existem os campos id,
    ver, estes, como expliquei,
    serão inseridos automaticamente pelo MySQL, e os campos
    data, hora,
    serão inseridos pelo PHP.
  • Agora é hora de criar o script PHP
    responsável por isto tudo. Vamos nessa:
  • Arquivo inserir.php
    email, data, hora, titulo, subtitulo, texto) VALUES ('$nome', 
    '$sobrenome', '$cidade', '$estado', '$email', '$data', '$hora', '$titulo', '$subtitulo', '$texto')"; //Agora é hora de contatar o mysql $conexao = mysql_connect("localhost", "root", "root") or die ("Configuração de Banco de Dados Errada!"); //Substitua os valores acima caso não esteje de acordo com sua
    máquina //Selecionando o banco de dados... $db = mysql_select_db("noticias") or die ("Banco de Dados Inexistente!"); //Inserindo os dados $sql = mysql_query($sql) or die ("Houve erro na gravação dos dados, por favor, clique em
    voltar e verifique os campos obrigatórios!"); echo "

    Cadastro efetuado com sucesso!

    "; ?>
    Fim do arquivo inserir.php
  • Você pode aperfeiçoar muito mais o
    script. Por exemplo, personalizar a mensagem de erro
    e de êxito, inserir um link para cadastrar novamente,
    etc.
  • Agora vamos para o próximo e último
    passo, “Recuperando os dados cadastrados”
  • 3.º Passo – Recuperando os dados cadastrados

    Irei mostrar como selecionar, por exemplo,
    as últimas 15 notícias inseridas no MySQL; isto é
    muito útil, para sites que têm seções do tipo “Últimas
    Notícias”. Isto é feito com PHP novamente; faça conforme
    o exemplo abaixo, e salve como um arquivo em PHP.

    Arquivo noticias.php
    id DESC LIMIT 15";
    
    // Irá selecionar as últimas 15 notícias inseridas
    
    // O curioso aqui, é que ele só irá selecionar os campos onde
    // estiver o ver=on, isto foi discutido logo atrás, como um 
    // controle de notícias pelo webmaster
    // Por padrão o MySQL colocou off, mas o webmaster terá que 
    // revisar as notícias e alterar o campo ver para as que quiser validar.
    
    $resultado = mysql_query($sql)
    or die ("Não foi possível realizar a consulta ao banco de dados");
    
    // Agora iremos "pegar" cada campo da notícia
    // e organizar no HTML
    
    while ($linha=mysql_fetch_array($resultado)) {
    
    $id = $linha["id"];
    $nome = $linha["nome"];
    $sobrenome = $linha["sobrenome"];
    $cidade = $linha["cidade"];
    $estado = $linha["estado"];
    $email = $linha["email"];
    $data = $linha["data"];
    $hora = $linha["hora"];
    $titulo = $linha["titulo"];
    $subtitulo = $linha["subtitulo"];
    $texto = $linha["texto"];
    $ver = $linha["ver"];
    
    $novadata = substr($data,8,2) . "/" .substr($data,5,2) . "/" . 
    substr($data,0,4); $novahora = substr($hora,0,2) . "h" .substr($hora,3,2) . "min"; echo "Código da Notícia: $id"; echo "
    "; echo "Autor: $nome $sobrenome - ($email)"; echo "
    "; echo "Cidade: $cidade - Estado: $estado"; echo "
    "; echo "Data: $novadata - Horário: $novahora"; echo "
    "; echo "Título da Notícia: $titulo"; echo "
    "; echo "Subtítulo da Notícia: $subtitulo "; echo "
    "; echo "Notícia: $texto"; echo "
    "; echo "Validado pelo Webmaster: "; if ($ver=on) { echo "Sim"; } else { echo "Não"; } echo "
    "; } ?>
    Fim do arquivo noticias.php
  • Viu como é super simples? Neste script
    criamos uma variável para cada campo da tabela, assim
    fica mais fácil de manusear os dados de qualquer forma.
    Nas variávels novadata,
    novahora, crie uma função
    para mostrar as variáveis de uma forma melhor. (agradecimentos
    a RENAS – Amigão!)
  • Você ainda pode personalizar estas
    notícias, deixando o layout do seu jeito!
  • OBS: para mostrar todas as notícias
    em vez de só as últimas 15, apenas crie uma nova variável
    $sql, como esta abaixo:
  • $sql = "SELECT * FROM noticias WHERE ver = 'on' 
    ORDER BY id DESC";
  • Pronto! Foi só retirar “LIMIT 15”.
    😉
  • 4.º Passo – Controle de Notícias para
    Webmaster

    Neste passo irei explicar como mostrar
    todos os dados da tabela, para podermos modificá-los,
    apagá-los, etc. Primeiramente, devemos criar um arquivo
    PHP para mostrar todos os dados na tela, para depois
    podermos manuseá-los. Faça como o exemplo abaixo:

    Arquivo controle.php
    ";
    echo "";
    echo "ID:";
    echo "Nome:";
    echo "Sobrenome:";
    echo "Cidade:";
    echo "UF:";
    echo "Email:";
    echo "Data:";
    echo "Hora:";
    echo "Título:";
    echo "Disponível?";
    echo "Alterar";
    echo "Excluir";
    echo "";
    
    while ($linha=mysql_fetch_array($resultado)) {
    $id = $linha["id"];
    $nome = $linha["nome"];
    $sobrenome = $linha["sobrenome"];
    $cidade = $linha["cidade"];
    $estado = $linha["estado"];
    $email = $linha["email"];
    $data = $linha["data"];
    $hora = $linha["hora"];
    $titulo = $linha["titulo"];
    $ver = $linha["ver"];
    
    $novadata = substr($data,8,2) . "/" .substr($data,5,2) . "/" . 
    substr($data,0,4); $novahora = substr($hora,0,2) . "h" .substr($hora,3,2) . "min"; echo ""; echo "$id
    "; echo "$nome
    "; echo "$sobrenome
    "; echo "$cidade
    "; echo "$estado
    "; echo "$email
    "; echo "$novadata
    "; echo "$novahora
    "; echo "$titulo
    "; echo "$ver
    "; echo "Alterar

    "; echo "Excluir

    "; echo ""; echo "
    "; } echo ""; ?>
    Fim do arquivo controle.php

    O próximo passo agora é criar os arquivos
    alterar.php e excluir.php,
    responsáveis pela alteração e exclusão dos dados.
    É muito simples o código, veja só:

    Arquivo excluir.php
    A notícia foi excluída com êxito!”;
    
    ?>
    Fim do arquivo excluir.php
    
    Arquivo alterar.php
    substr($data,0,4);
    $novahora = substr($hora,0,2) . "h" .substr($hora,3,2) . "min";
    
    echo "

    Alterar Cadastro...

    "; echo "

    "; echo "
    "; echo "Código da Notícia: value='$id' size=20>
    "; echo "Data: $novadata
    "; echo "Hora: $novahora
    "; echo "Nome:value='$nome' size=30> *
    "; echo "Sobrenome:value='$sobrenome' size=30> *
    "; echo "Cidade:value='$cidade' size=30> *
    "; echo "Estado:(Exemplo: SP, RS, BA)name='estado_novo' type='text' value='$estado' size=5> *
    "; echo "Email: (Exemplo: feitosac@yahoo.com)name='email_novo' type='text' value='$email' size=30>

    "; echo "Título do Texto:value='$titulo' size=30> *
    "; echo "Subtítulo do Texto:
    "; echo "Texto: *
    "; echo "Disponibilizar? (on ou off): type='text' value='$ver' size=5>
    "; echo ""; echo "
    "; echo "

    "; } ?>
    Fim do arquivo alterar.php

    Agora basta criarmos o arquivo alterar_db.php
    que irá receber os dados deste arquivo (alterar.php)
    e alterará seus respectivos dados no MySQL. É muito
    simples:

    Arquivo alterar_db.php
    nome='$nome_novo',sobrenome='$sobrenome_novo'
    ,cidade='$cidade_novo',estado='$estado_novo',
    email='$email_novo',titulo='$titulo_novo' ,subtitulo='$subtitulo_novo',texto='$texto_novo',
    ver='$ver_novo' WHERE id='$id'"; $resultado = mysql_query($sql) or die ("Não foi possível realizar a consulta ao
    banco de dados"); echo "

    Notícia alterada com sucesso!

    "; ?>
    Fim do arquivo alterar_db.php

    Finalmente, chegamos ao fim deste tutorial,
    que lhe ajudou a criar um “Portal de Notícias baseado
    em PHP/MySQL”. Queria, por fim, agradecer a todos
    que me apoiaram, inclusive a um amigão, RENAS (www.linuxfunciona.com.br).