MYSQL

Resolvifazer uma coletanea de artigos sobre php com banco de dados mysql. Nesteprimeiro artigo começamos entendendo sobre o banco de dados mysql.

O idealpara resolver todos os exemplos é instalar o WAMP que contém o servidor Apache, o PHP e o bancode dados MySQL.

Para iniciarmos com o mysql gostaria que vocês instalassem o MySQL Query Browser é uma ferramenta gráfica utilizada para criar e executar solicitações SQL.

Abra o mysql browser e veja que o único campo que já esta preenchido.

É o campo PORT que referencia a porta a qual está sendo utilizada para o MySQL no sistema operacional.

mysql
  • Stored Connection: neste campo, podemos escolher um perfil já criado anteriormente, com todas as informações já disponíveis;
  • Server Host: neste campo, devemos informar o nome do host (servidor hospedeiro) onde o MySQL está rodando.
  • Username: é onde você informará o seu nome de usuário, criado durante a instalação do mysql; // na instalação no wamp seria o root como estana figura
  • Password: a senha do usuário; // na instalação do wamp vem padrão sem senha.
  • Default Schema: aqui informamos o nome do banco de dados com o qual queremos estabelecer a conexão IMPORTANTE : se colocarmos um nome diferente que não existe ele cria um database novo com o nome informado;
  • Port: esse campo já vem preenchido com 3306 já que esta é a porta padrão para o MySQL.

CRIANDO NOSSO DATABASE

Quando você abrir o mysql browser no text Default Schema digite TESTE.

Utilizaremos este database como exemplo no inicio do nosso aprendizado depois para nosso projeto criaremos outro. Quando você abrir o query browser ele deve aparecer no canto superior a direita.

mysql2
A primeira tela que é apresentada após a autenticação é a tela principal.
mysql3
Query Area: é o local onde digitamos os comandos SQL que são executados pelo SGDB.
  • Result Area: nessa área é disponibilizado os resultados das consultas enviadas ao SGBD.
  • Schemata: nesta aba são listados os bancos de dados, tabelas e seus atributos.

Trabalhando no Object Browser, na aba Schemata, basta clicarmos com o botão direito sobre o database teste, selecionar Create New Table que será aberto o table editor:

mysql4

Você pode usar o editor de colunas para mudar o nome, tipo de dados, valor padrão e outras propriedades das colunas de sua tabela.

No nosso exemplo criaremos a tabela CLIENTES.

mysql6

Clique em apply changes e nossa tabela será criada.

Dois cliques na tabela CLIENTES podemos inserir clientes na tabela é necessário clicar em Edit no canto direito inferior para habilitar a edição.

mysql7

Após colocar os dados clique em applay changes no canto direito inferior.

O campo ID que é campo chave da tabela, é preenchido automaticamente pelo MYSQL.

mysql8

Pronto nosso DATABASE esta criado juntamente com a tabela CLIENTES.

Linguagem SQL

A linguagem SQL é usada para manipulação de dados no banco de dados. Os comandos da linguagem SQL são padrão para diferentes banco de dados ou seja você pode usar os mesmos códigos para manipular diferentes bancos.

Iniciando com SQL

  1. Abra o mysql browser ;
  2. Clique duas vezes no nosso DATABASE TESTE e em seguida duas vezes na nossa table CLIENTES.
  3. Digite na query area a seguinte linha:
    
                    INSERT INTO CLIENTES(nome, endereco)
                    VALUES('Luana','borges de medeiros')
                    

Para inserir dados em uma tabela, utiliza-se INSERT INTO. Estamos estudando SQL pois no projeto com o php isso vai ser muito útil e necessário.

query
Sempre que você quiser executar os comandos sql clique em execute query.
query2-2
Para ver se a inserção foi feita de dois cliques na table CLIENTES, o registro Cliente Luana foi adicionado na nossa table.

Feche o query browser e abra-o novamente;

No DEFAULT SCHEMA digite teste que é nosso DATABASE no momento.

Não abra a tabela de CLIENTES vamos ver o conteúdo dela utilizando a linguagem SQL.

Digite no query browser:

SELECT * FROM CLIENTES

Clique em execute query e veja que nossos dados foram listados abaixo no result área.

query3

O comando SELECT seleciona dados na tabela.

Por exemplo, para trazer apenas o registro Luzia que tem id=1 o SELECT ficaria assim:

SELECT * from CLIENTES WHERE ID=1

WHERE serve como filtro.

Os filtros da cláusula WHERE podem ser mais complexos e determinarem mais de uma condição segue o exemplo:

SELECT * from CLIENTES WHERE ID=1 AND NOME='Luzia'

Atualizando dados no banco

O comando SQL UPDATE atualiza os dados no banco de dados.

Por exemplo se eu desejo mudar o nome de Luana para Leticia.

Digite no query browser a seguinte instrução SQL:

Update clientes set nome = 'Leticia' where codigo = 4;
O numero 4 é o codigo do registro que eu desejo atualizar neste caso Laura que tem id=4.

Se voce executar esta instrução sql vai perceber que o nome Laura vai ser substituído por Letícia.

Se você deseja mudar mais de um campo a instrução ficaria assim:

Digite no query browser a seguinte instrução SQL

Update clientes set nome = 'Lucas', endereco='novo endereço que voce quiser' where id = 1;

O COMANDO DELETE

O comando delete permite excluir dados do banco.

Por exemplo: Deletar o registro de id=1.

DELETE FROM clientes WHERE id=1

Isto seria o suficiente para você deletar o resgistro de id = 1 do banco de dados.

Se você deseja deletar todos os registro digite apenas:

Delete from clientes

CRIANDO O BANCO DE DADOS PARA O CONTROLE DE NOTÍCIAS

Neste artigo vamos criar nosso banco de dados para o site de noticias, nossa pagina vai mostrar dinamicamente as noticias cadastradas no MYSQL. E o administrador do site vai ter possibilidade de cadastrar, atualizar e deletar as notícias.

Para iniciar abra o mysql browser e digite no default schema: noticias!

noticias

Noticias será nosso database para a aplicação.

Clique no botão direito do database noticias CREATE NEW TABLE E CRIE A SEGUINTE ESTRUTURA.

estrutura_tabela

Apos criada a estrutura aplique as modificações clicando em Apply Changes fechando em seguida nobotão Close.

Para entender a tabela vamos imaginar o seguinte, no nosso sistema de noticias online queremos mostrar ao usuário o titulo da noticia, o conteúdo que seria o texto da noticia e a data da noticia ou seja estes são os campos que eu criei. O codigo é o campo chave que diferencia os registros na tabela e facilitará o futuro controle de atualização e exclusão dos dados sendo um campo indispensável.

No campo TIMESTAMP pegaremos a data da noticia voce pode ver que no DEFAULT VALUE deste campo eu digitei CURRENT_TIMESTAMP ou seja em uma operação de INSERT é automaticamente definido a data e a hora da operação se você não especificar um valor.

A foto da noticia nao vai ser salva no banco de dados. Ela permanecera em um diretório chamado fotos. Como saberemos que a foto adicionada pertence a própia notícia? Simples, renomearemos apos o upload o nome da foto para o codigo da notícia.

Na parte 4 iniciamos com o PHP criando primeiramente o formulário de cadastro da notícia.

Iniciando o Projeto

Para iniciar nosso projeto é preciso estar com o WAMP instalado.

Crie no diretório C:\wamp\www a seguinte pasta sitenoticias.

O diretorio www corresponde ao diretório de publicação, ou seja, o lugar onde devem ser colocadas as páginas web.

Feito isso instale no seu computador o notepad ++ facilita muito para criar nossos arquivos.

Abra o Notepad++ e digite a seguinte estrutura:


            <html>

            <head>
                    <title>Adicionar noticia</title>
                    <script language="JavaScript">
                        function validar() {
                
                            if (document.adicionar.titulo.value == "") {
                                alert('Titulo nao esta preenchido'); // mostra mensagem caso nao esteja preenchido
                                document.adicionar.titulo.focus(); // deixa o cursor no campo titulo
                                return false; //  retorna false para o onsubmit nao deixando enviar os dados para o action="adicionar.php"
                            }
                
                            if (document.adicionar.conteudo.value == "") {
                                alert('Conteudo nao esta preenchido'); // mostra mensagem caso nao esteja preenchido
                                document.adicionar.conteudo.focus();  // deixa o cursor no campo conteudo
                                return false; //  retorna false para o onsubmit nao deixando enviar os dados para o action="adicionar.php"
                            }
                
                            return true;
                        }
                    </script>
                </head>
                
                <body>
                    <h2>Adicionar notícia</h2>
                    <form name="adicionar" method="POST" action="adicionar.php" onsubmit="return validar()">
                        Titulo: <input type="text" name="titulo" maxlenght="100">
                        <br>
                        Data: <input type="text" name="data" maxlength="10">
                        <br>
                        Texto: <br>
                        <textarea name="conteudo" rows="5" cols="50"></textarea>
                        <br>
                        <input type="submit" value="Enviar">
                    </form>
                
                </body>
                
                </html>
        

Feito isso salve este arquivo como frmadicionar.php para testar sua pagina digite no navegador http://localhost/sitenoticias/frmadicionar.php

Devera aparecer um formulario deste tipo:

frmadicionar

Analisando o Código

Até agora nao estamos utilizando a linguagem PHP apenas HTML e JAVASCRIPT.

O method POST faz com que os dados do formulário sejam diretamente transmitidos ao endereço que constar na diretiva action=.

O action do nosso formulário é adicionar.php é neste arquivo que faremos a conexão com o banco de dados e que pegaremos por POST os dados preenchidos neste formulário.

Por exemplo se você digitar no campo titulo do formulário INFORMATICA e clicar em enviar o formulario transmite por POST para o arquivo adicionar.php e este arquivo captura estes dados.


        <?php
        $titulo = $_POST["titulo"]; // titulo nome do campo no formulario
        ?>
        

No OnSubmit do formulário estamos chamando a funcao validar que verifica se o campo titulo do formulario esta preenchido document.adicionar.titulo.value == "" e se o campo conteudo esta preenchido document.adicionar.conteudo.value == "".

Criando o arquivo adicionar.php

Como explicado no artigo anterior os dados do formulário sao transmitidos pelo method POST diretamente ao action do form, é neste arquivo que deve ser feita a captura.

Segue o codigo do arquivo adicionar.php:


            <?php

            $conexao = mysql_connect("localhost", "root", "");
            $banco = mysql_select_db("noticias");
            
            $titulo = $_POST["titulo"];
            $conteudo = $_POST["conteudo"];
            $data = $_POST["data"];
            
            if ($data != "") //testando se a variavel data é diferente de vazia
            {
                $sql = "INSERT INTO noticias (titulo, conteudo, datahora) VALUES ('$titulo','$conteudo',str_to_date('$data " . date('H:i:s') . "', '%d/%m/%Y %H:%i:%s'))";
                var_dump($sql);
            } else { // se for vazia coloca a data atual atraves do banco de dados
                $sql = "INSERT INTO noticias (titulo, conteudo) VALUES ('$titulo','$conteudo')";
                var_dump($sql);
            }
            
            $insert = mysql_query($sql);
            if ($insert) {
                echo "Noticia inserida com sucesso!";
            } else {
                echo "Erro durante a inserção da notícia. Verifique os dados!" . mysql_error();
            }
            
            ?>
            
            <a href="index.php">Voltar</a>
        

Salve este arquivo na mesma pasta do frmadicionar.php!

Analisando o Código

Na primeira parte do arquivo estamos conectando ao MYSQL.


        $conexao = mysql_connect("localhost", "root", "");
        $banco = mysql_select_db("noticias");
        

O mysql_connect abrirá uma conexão com o MySQL da máquina local (localhost), usando o usuário (neste caso root) e senha (neste caso vazia).

Uma referência a esta conexão será gravada na variável $conexao.

Depois de conectados ao servidor, devemos conectar ao banco de dados usando o comando mysql_select_db informando o nome do nosso database neste caso noticias.


        $titulo = $_POST["titulo"];
        $conteudo = $_POST["conteudo"];
        $data = $_POST["data"];
        

Neste trecho do código estamos capturando o que foi transmitido pelo POST. $titulo significa variavel título. No PHP variável inicia com o caracter $. E $_POST["titulo"]; esta capturando o que digitamos no campo titulo do formulario.

Inserindo no banco de dados

Antes de fazer o insert no banco de dados estou testando se o campo data no formulário esta diferente de vazio ou seja se o usuário informou a data.

Se ele informou a data eu faço a inserção incluindo o campo datahora do banco de dados.


        $sql = "INSERT INTO noticias (titulo, conteudo,datahora) VALUES ('$titulo','$texto',str_to_date('$data ".date('H:i:s')."', '%d/%m/%Y %H:%i:%s'))";
        
  • INSER INTO - Comando para inserção.
  • noticias - Tabela que desejamos fazer a inserção.
  • (titulo, conteudo, datahora) - Campos da tabela que desejamos inserir os dados.
  • ('$titulo','$conteudo',str_to_date('$data ".date('H:i:s')."', '%d/%m/%Y %H:%i:%s')) - valores que vao ser inseridos nos campos (titulo, conteudo, datahora).

O valor do campo $date traz a data digitada pelo usuário. Após date('H:i:s') traz a hora atual.

Se o usuário nao informou a data o CURRENT_TIMESTAMP (definido no banco de dados) coloca a data atual e a hora atual, porisso nao colocamos o campo datahora dentro dos parenteses.


        $sql = "INSERT INTO noticias (titulo, conteudo) VALUES ('$titulo','$texto')";
        

O trecho var_dump($sql); deixei apenas para poder ver o que esta na variável $sql pode ser retirado sem problemas.

Testando...

Primeiro abra o arquivo frmadicionar.php no browser de sua preferência.

http://localhost/sitenoticias/frmadicionar.php

E digite no primeiro teste a data que você gostaria para a notícia!

Exemplo:

add_noticia

Clique em enviar e veja o resultado:

sql1

Apos este teste você percebe o que o VAR_DUMP faz , informa o tipo da variável e o conteudo.

Abra o MYSQL BROWSER e veja que o registro esta la! Com a data que você informou e a hora atual.

teste1

Agora faremos o mesmo procedimento para a data não preenchida.

Exemplo

teste2

Clique em enviar e veja o resultado:

sql2

Apos este teste você percebe o que o VAR_DUMP faz, informa o tipo da variável e o conteudo.

Abra o MYSQL BROWSER e veja que o registro esta la! Com a data atual e a hora atual.

registro

Apos colocar dentro da variável sql a instrução sql, é necessário executar no mysql e quem faz isso é o mysql_query.


            $insert = mysql_query($sql); // mysql_query executa a instrução sql que esta na variável $sql

            if ($insert) // testando se o $insert esta verdadeiro = se a inserção aconteceu
            {
                echo "Noticia inserida com sucesso!";
            } else {
                echo "Erro durante a inserção da notícia. Verifique os dados!" . mysql_error();
            }
        

O campo datahora é um timestamp tem data e hora isso faz com que eu consiga fazer uma listagem pela hora se por acaso durante a mesma data o usuário postar mais de uma noticia, deixando as mais atuais no topo da listagem.

Nesta parte faremos a listagem de notícias!

Para inciar crie um arquivo chamado index.php e coloque o código abaixo.


<?php

$conexao = mysql_connect("localhost", "root", "");
$banco = mysql_select_db("noticias");

?>

<html>

<head>
  <title>Noticias</title>
</head>

<body>

  <h2>Noticias</h2>
  <table border="1">
    <tr>
      <td width="200">Notícias</td>
      <td width="500">conteudo</td>
      <td>datahora</td>
      <td>Editar</td>
      <td>Remover</td>
    </tr>

    <?php

    $sql = "SELECT codigo,titulo,datahora,conteudo,date_format(datahora,'%d/%m/%Y %H:%i') as data FROM noticias order by datahora desc";
    $noticias = mysql_query($sql);

    while ($dados = mysql_fetch_array($noticias)) {

    ?>

      <tr>
        <td><a href="ler.php?codigo=<?php echo $dados["codigo"]; ?"><?php echo $dados["titulo"]; ?></a></td>
        <td><?php echo $dados["conteudo"]; ?></td>
        <td><?php echo $dados["data"]; ?></td>
        <td><a href="frmeditar.php?codigo=<?php echo $dados["codigo"]; ?>">Editar</a></td>
        <td><a href="remover.php?codigo=<?php echo $dados["codigo"]; ?>">Remover</a></td>
                </tr>

    <?php }

    ?>

</table>

  <br>
  <a href="frmadicionar.php">Adicionar noticia</a>
</body>

</html>
        

ANALISANDO O CÓDIGO

Na primeira parte do código estamos fazendo a conexão com o banco de dados.


<?php

$conexao = mysql_connect("localhost", "root", "");

$banco = mysql_select_db("noticias");

?>
        

Logo após estou montando uma tabela através da tag <table>.


<table border="1">
<tr>
            <td width="200">Notícias</td>
            <td width="500">conteudo>/td>
            <td>datahora</td>
            <td>Editar</td>
            <td>Remover</td>
    </tr>
        

A primeira linha da tabela estou preenchendo com os nomes das colunas.

A segunda linha da tabela é necessária formar dinamicamente através do PHP.

Primeiramente abro a tag <?php pois agora não é mais código HTML e coloco o seguinte código:


$sql = "SELECT codigo,titulo,conteudo,date_format(datahora,'%d/%m/%Y %H:%i') as data FROM noticias order by datahora desc";
$noticias = mysql_query($sql);
        

No primeiro momento atribuo a variavel $sql a minha consulta SQL, ou seja o que eu quero trazer do banco de dados.

O campo data exige uma formatação, neste caso estou usando a função date_format do mysql.

date_format(datahora,'%d/%m/%Y %H:%i') as data

O datahora é o nome do campo no banco de dados, o '%d/%m/%Y %H:%i' é o formato.

  • %d – Dia do mês, numérico (00...31)
  • %m – Mês, numérico (00...12)
  • %Y – Ano, numérico, 4 digitos
  • %H – hora (00...23)
  • %i – minutos numéricos (00...59)

Feito isso executo a $sql no mysql através da função mysql_query.

$noticias = mysql_query($sql);

Na próxima parte do código utilizo a função mysql_fetch_array esta “traduz” em forma de dados a consulta feita na linha acima. O uso do while nos permite ler todos os registros linha a linha da tabela. Cada vez que ele se repete o $dados recebe o registro seguinte ate o final da consulta.


while ($dados = mysql_fetch_array($noticias)){

?>
            

O que estiver dentro do while vai acontecer para cada resgitro da tabela.


            <td><a href="ler.php?codigo=<?php echo $dados["codigo"];?>"><?php echo $dados["titulo"];?></a></td>

Neste trecho do código estou passando pela url o código da noticia atraves do parâmetro codigo=. Logo após imprimo na url o código do registro na posição que esta no momento. Quando o usuário clicar neste link vai ler a noticia desejada na pagina ler.php e esta coletára o valor do parametro código para localizar a notícia a ser mostrada.


            <td><?php echo $dados["conteudo"];?></td>

      <td><?php echo $dados["data"];?></td>
            

Seguindo estamos imprimindo através da função echo o conteúdo e a data da noticia. Após crio os links de editar e remover passando como parâmetro o código codigo= e em seguida fecho a </tr>.


            <td>
                <a href="frmeditar.php?codigo=<?php echo $dados["codigo"];?>">Editar</a>
            </td>
            <td><a href="remover.php?codigo=<?php echo $dados["codigo"];?>">Remover</a></td>
        </tr>
            

Abra o navegador digite http://localhost/sitenoticias/index.php e verá a listagem das noticias.

Neste artigo criaremos a pagina ler.php.

Na página index.php ao clicarmos no titulo da noticia chamamos a pagina ler.php.

Juntamente neste link passamos por parametro o código da noticia atraves da url.

A pagina ler.php utliza a função GET do php para extrair o valor passado neste caso o codigo da noticia.

Pagina Index.php
Pagina Index.php
Pagina Ler
Pagina Ler

A função GET do PHP tem a finalidade de extrair determinado valor da url.

Por Exemplo:

paramteros

O ponto de interrogação indica o inicio da confecção dos parametros sendo que o "&" separa um parametro do outro.

Codigo da pagina ler.php


            <?php

$conexao = mysql_connect("localhost", "root", "");
$banco = mysql_select_db("noticias");

$codigo = $_GET["codigo"];   //extrai o codigo da noticia passado por parametro

$sql = "SELECT titulo, conteudo FROM noticias WHERE codigo = $codigo";
$select = mysql_query($sql);
$dados = mysql_fetch_array($select);

?> <h2><?php echo $dados["titulo"]; ?></h2>
<p> <?php echo nl2br($dados["conteudo"]); ?></p>
            

Analisando o Código

Inicialmente montamos a conexao com o banco de dados.

Após, extraimos atraves da funcao GET do php o valor do parametro codigo.

Depois que sabemos o codigo montamos a sql, pois é necessário passar para a $sql qual codigo da noticia o usuario quer ler.

Atribuimos o registro de retorno do banco de dados ao $dados atraves do mysql_fetch_array. Como o retorno é apenas uma noticia nao precisa utilizar o laço while.

Na sequencia imprimimos na pagina o titulo da noticia e seu conteudo.

Formulário para editar a notícia!

A tarefa do formulário de edição é inicialmente carregar os dados do registro que se deseja alterar e preencher no formulário estes dados, para que o usuário apenas modifique o que achar necessário e salve novamente, caracterizando a edição. Segue o código do arquivo frmeditar.php:


            <?php

$conexao = mysql_connect("localhost", "root", "");
$banco = mysql_select_db("noticias");

$codigo = $_GET["codigo"];

$sql = "SELECT *, date_format(datahora,'%d/%m/%Y %H:%i') as data FROM noticias WHERE codigo = $codigo";

$dados = mysql_query($sql);

$noticia = mysql_fetch_array($dados);

?>

<html>

<head>
  <title>Editar noticia</title>

  <script language="JavaScript">
    function validar() {
      if (document.editar.titulo.value == "") {

        alert('Titulo nao esta preenchido');
        document.editar.titulo.focus();
        return false;
      }

      if (document.editar.conteudo.value == "") {

        alert('Texto nao esta preenchido');
        document.editar.conteudo.focus();
        return false;
      }
      return true;
    }
  </script>
</head>

<body>

  <h2>Editar notícia</h2>

  <form name="editar" method="POST" action="editar.php" onsubmit="return validar()">
    Titulo: <input type="text" name="titulo" maxlenght="100" value="<?php echo $noticia["titulo"]; ?>"> <br>

    Data: <input type="text" name="data" maxlength="10" value="<?php echo $noticia["data"]; ?>"> <br>

    Conteudo: <br>

    <textarea name="conteudo" rows="5" cols="50"><?php echo $noticia["conteudo"]; ?></textarea>  <br>

    <input type="submit" value="Enviar">

    <input type="hidden" name="codigo" value="<?php echo $noticia["codigo"]; ?>">
  </form>
</body>

</html>
            

Analisando o Código

O arquivo frmeditar.php é chamado pelo link que esta na listagem das noticias na página index.php. Toda vez que você clicar neste link o mesmo direciona para a pagina frmeditar passando como parâmetro pela url o código da noticia que você clicou.

Link na pagina index.php:


            <td><a href="frmeditar.php?codigo=<?php echo $dados["codigo"];?>">Editar</a></td>
            

Feito isso a pagina frmeditar para qual estamos direcionando o link deve extrair da url o código da noticia.


            $codigo = $_GET["codigo"]; //FUNCAO GET DO PHP
            

Logo devemos consultar no banco de dados qual noticia clicamos de acordo com o código extraído.


$sql = "SELECT *, date_format(datahora,'%d/%m/%Y %H:%i') as data FROM noticias WHERE codigo = $codigo";

$dados = mysql_query($sql);

$noticia = mysql_fetch_array($dados);//como retorna apenas um registro nao é necessário a utilização do while.
            

Através do echo podemos imprimir os valores na propriedade value dos campos no formulário. A variável $noticia possui o retorno da consulta ao banco o registro da noticia que clicamos para editar.

EXEMPLO:


            Titulo: <input type="text" name="titulo" maxlenght="100" value="<?php echo $noticia["titulo"]; ?>">
            

Depois que todos os campos exibiram seus devidos valores você pode editar. Ate agora ainda não estamos fazendo o UPDATE ou seja a atualização do que você editar nos campos, isso vai ser feito em outro arquivo chamado editar.php que é o action do form editar.

Perceba que ao final do formulário temos um campo hidden.


            <input type="hidden" name="codigo" value="<?php echo $noticia["codigo"];?>">
            

O campo hidden não aparece para o usuário já que este campo não deve ser alterado. Mas quando enviar os dados para o action do form o valor value="<?php echo $noticia["codigo"];?> também ira por POST.

Isto acontece pois na edição de um registro precisamos sempre informar o código a ser alterado (chave primária) pois senão a atualização acontece para TODOS os registros. Logo se diz que a cláusula WHERE é de suma importância na atualização.

Criando o arquivo editar.php

Nesta parte criaremos o editar.php que vai realizar a atualizacao da noticia no banco de dados.

Segue o código editar.php:


            <?php

            $conexao = mysql_connect("localhost", "root", "");
            
            $banco = mysql_select_db("noticias");
            
            $codigo = $_POST["codigo"];
            
            $titulo = $_POST["titulo"];
            
            $conteudo = $_POST["conteudo"];
            
            $datahora = $_POST["data"];
            
            
            if ($datahora) {
                $data = ", datahora = str_to_date('$datahora', '%d/%m/%Y %H:%i:%s')";
            }
            
            $sql = "UPDATE noticias SET titulo='$titulo', conteudo='$conteudo' $data WHERE codigo = $codigo";
            
            $update = mysql_query($sql);
            
            if ($update) {
                echo "Noticia atualizada com sucesso!";
            } else {
                echo "Erro durante a atualização da notícia. Verifique os dados!";
            }
            ?>
            
            <a href="index.php">Voltar</a>
            

Inicialmente conectamos no banco de dados.

Após, capturamos através do $_POST os valores dos campos do formulário frmeditar.php.

Logo, faço um teste SE a $datahora está preenchida.

Se sim a consulta $sql vai acrescentar junto a sua string a variável $data.

Exemplo:


$data = ", datahora = str_to_date('$datahora', '%d/%m/%Y %H:%i:%s')";

UPDATE noticias SET titulo='$titulo', conteudo='$conteudo' $data WHERE codigo = $codigo";

UPDATE noticias SET titulo='$titulo', conteudo='$conteudo', datahora = str_to_date('$datahora', '%d/%m/%Y %H:%i:%s') WHERE codigo = $codigo";
            

Se a variável $datahora estiver vazia o IF não vai acontecer ou seja não vai ser atribuido nada a variável $data.

Exemplo:


            $sql = "UPDATE noticias SET titulo='$titulo', conteudo='$conteudo' $data WHERE codigo = $codigo";

            $data = "";
            
            $sql = "UPDATE noticias SET titulo='$titulo', conteudo='$conteudo' WHERE codigo = $codigo";
            

Abra o arquivo index.php clique no link editar e deixe o campo data em branco. Veja no banco de dados que a data vai permanecer a mesma. Se você alterar a data, esta vai ser atualizada.

Criando o arquivo remover.php

Para finalizar nosso site de noticias falta apenas o arquivo remover.php.

Este arquivo executa um codigo no qual remove a noticia do banco de dados.

Segue o código:


            <?php
$conexao = mysql_connect("localhost", "root", "");
$banco = mysql_select_db("noticias");

$codigo = $_GET["codigo"];

$sql = "DELETE FROM noticias WHERE codigo = $codigo";
$delete = mysql_query($sql);

if ($delete) {
  echo "Noticia removida com sucesso!";
} else {
  echo "Erro durante a remoção da notícia. Verifique os dados!";
}
?>

<a href="index.php">Voltar</a>
            

Pronto, finalizado nosso projeto do site de noticias.

Confira também