Formatar Data Na Pesquisa

Na Internet você encontra vários sistemas de notícias personalizados ou simples, porém, relacionado ao buscador que deve ser adicionado para facilitar as buscas, dificilmente tu encontra algo completo.

Nesta matéria vamos postar um sistema simples de notícia, com um argumento para inserir em sua busca.

Como fazemos em todas as nossas matérias, em anexo temos disponível os ficheiros para que tu possa estudar e testar a matéria que estaremos explicando a seguir.

Criando As Tabelas Na Base De Dados

Antes de partirmos para a programação, vamos criar uma tabelinha simples, só para rodarmos a solução que estamos a criar.

Para isso, pegue o conteúdo do ficheiro script-sql.txt (disponível 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 ou o PHPMyAdmin. Caso tu também esteja utilizando outra solução é só colar o conteúdo no SQL Editor (conforme código abaixo).


----- CRIA A TABELA DE NOTÍCIAS -----

DROP TABLE IF EXISTS `tbl_noticias`;
CREATE TABLE `tbl_noticias` (
  `id` int(5) NOT NULL auto_increment,
  `nome` varchar(30) NOT NULL default '',
  `sobrenome` varchar(30) NOT NULL default '',
  `cidade` varchar(50) NOT NULL default '',
  `estado` char(2) NOT NULL default '',
  `email` varchar(80) default NULL,
  `data` date NOT NULL default '0000-00-00',
  `hora` time NOT NULL default '00:00:00',
  `titulo` varchar(100) NOT NULL default '',
  `subtitulo` varchar(200) default NULL,
  `texto` text NOT NULL,
  `ver` char(3) default 'off',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`)
);

----- INSERE CONTEÚDO NA TABELA DE NOTÍCIAS -----

INSERT INTO `tbl_noticias` VALUES (1,'Lorem ipsum dolor','Lorem ipsum dolor','Lorem ipsum dolor','LO','teste@teste.com.br','2010-07-31','00:00:00','Lorem ipsum dolor','Lorem ipsum dolorLorem ipsum dolorLorem ipsum dolor','Lorem ipsum dolorLorem ipsum dolorLorem ipsum dolor\r\n\r\nLorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolor\r\n\r\nLorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolor\r\n\r\nLorem ipsum dolorLorem ipsum dolorLorem ipsum dolor','on');
INSERT INTO `tbl_noticias` VALUES (2,'Teste teste teste','Lorem ipsum dolor','Lorem ipsum dolor','LO','teste@teste.com.br','2010-07-31','00:00:00','Lorem ipsum dolor','Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor','Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor \r\n\r\nLorem ipsum dolor Lorem ipsum dolor \r\n\r\nLorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor \r\n\r\nLorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor ','on');
INSERT INTO `tbl_noticias` VALUES (3,'Lorem ipsum dolor','Lorem ipsum dolor','Lorem ipsum dolor','LO','teste@teste.com.br','2010-07-31','00:00:00','Lorem ipsum dolor','Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor','Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor \r\n\r\nLorem ipsum dolor Lorem ipsum dolor \r\n\r\nLorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor \r\n\r\nLorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor ','on');
INSERT INTO `tbl_noticias` VALUES (4,'Lorem ipsum dolor','Lorem ipsum dolor','Lorem ipsum dolor','LO','teste@teste.com.br','2010-07-31','00:00:00','Lorem ipsum dolor','Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor','Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor \r\n\r\nLorem ipsum dolor Lorem ipsum dolor \r\n\r\nLorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor \r\n\r\nLorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor ','on');
INSERT INTO `tbl_noticias` VALUES (5,'Lorem ipsum dolor','Lorem ipsum dolor','Lorem ipsum dolor','LO','teste@teste.com.br','2010-07-31','00:00:00','Lorem ipsum dolor','Lorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolor','Lorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolor\r\n\r\nLorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolor\r\n\r\nLorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolor','on');

Após importar os dados, você poderá configurar o script de conexão à base de dados.

Configurando O Script De Conexão

Para efetuar a configuração devida, acesse o script “conexao.php” e siga o exemplo a seguir:


$database = "SERVIDOR"; // NOME DO SERVIDOR
$dbname   = "BASEDEDADOS"; // NOME DA BASE DE DADOS
$usuario  = "USUARIO"; // USUARIO DO MYSQL
$dbsenha  = "SENHA"; // SENHA DO USUARIO 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";
           }

Após efetuar essa configuração, vamos agora conhecer os scripts que trabalharemos?

Ficheiro cadastrar.php

Até para facilitar suas futuras implementações, não caprixamos na parte visual. Apenas tentamos postar um script limpo e direto!

Esse ficheiro tem por finalidade efetuar o cadastro junto ao banco de dados dos principais dados na base de dados (conforme script e imagem a seguir).


<?php

$data = date("Y-m-d");
$hora = date("H:i:s");
$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 "<h1>Sistema de Cadastro de Notícias</h1>";
echo "<hr><br>";
echo "<form action='script_noticias.php?acao=cadastrar' method='post'>";
echo "Nome:<input name='nome' type='text' size=30> *<br>";
echo "Sobrenome:<input name='sobrenome' type='text' size=30> *<br>";
echo "Cidade:<input name='cidade' type='text' size=30> *<br>";
echo "Estado:<i>(Exemplo: SP, RS, BA)</i><input name='estado' type='text' size=5> *<br>";
echo "Email: <i>(Exemplo: teste@teste.com)</i><input name='email' type='text' size=30><br><br>";
echo "Título do Texto:<input name='titulo' type='text' size=30> *<br>";
echo "Subtítulo do Texto:<textarea name='subtitulo' rows=5 cols=30></textarea><br>";
echo "Texto:<textarea name='texto' rows=10 cols=30></textarea> *<br>";
echo "<input name='data' type='hidden' value='$data'>";
echo "<input name='hora' type='hidden' value='$hora'>";
echo "<input type='submit' value='Cadastrar'>";
echo "</form>";
echo "<br><hr>";
echo "<i>Campos marcados com <b>*</b> são obrigatórios no cadastro.<br>";
echo "<b>Observação</b>: Será inserido no seu cadastro a data atual, bem como a hora atual do cadastro<br>";
echo "Data: $novadata - Hora: $novahora<br>";

?>

Após preencher as informações, o sistema lhe redicionará para a página “script_noticias.php” que fará a inserção das informações, redirecionando a seguir para a página “listar_noticias.php”.

Ficheiro listar_noticias.php

A página listar também é básica e trás um select personalizado que deverá imprimir em tela as principais variáveis (título, data, alterar e excluir).

Bem… espero que não se importe com a quantidade de “echo” encontrado no ficheiro, mas eles foram postos de forma proposital para ajudar quem está começando na programação web (conforme código e imagem a seguir).

codigo

Após visualizar, excluir ou alterar a notícia, ele poderá retornar à tela inicial.

OBS.: Poderíamos implementar bastante esse ficheiro com visualizador de informações, imagens, entre outras soluções a mais, mas o foco principal será o buscador (que falaremos a seguir).

Como você pode ver, há uma opção de retornar à página inicial.

Ficheiro Página Inicial

Nesta página, você encontrará 3 links:

  • Para a página onde poderá visualizar todos os cadastros;
  • Alterar ou Excluir uma notícia cadastrada;
  • Cadastrar uma nova notícia.

Após isso será possível efetuar sua busca!

O script é simples, sem muitas funções (prático para quem está começando), mas funcional.

Antes de verificar o código, saiba que essa parte tratará a data!

Aqui ele converterá o formato de inglês para o formato brasileiro (ex: 13/04/2010).


$data = $_POST['palavra'];
$data_br = implode(preg_match("~\/~", $data) == 0 ? "/" : "-", array_reverse(explode(preg_match("~\/~", $data) == 0 ? "-" : "/", $data)));

Bem… poderíamos fazer uma função melhor elaborada, mas como pensei em apresentar o código acima para quem está começando, não o fiz!

Ele funciona da seguinte forma: Busca as informações (título, data e subtítulo). Se não encontra as informações, informa em tela que o conteúdo não foi encontrado (conforme código e imagens a seguir).


<?

include('conexao.php');
?>
<html>
<head>
<title>.:: WEBMASTER.PT :: SISTEMA DE NOTÍCIAS ::.</title>
</head>

<p>Veja as Not&iacute;cias cadastradas no sistema <a href="noticias.php" target="_top">clicando aqui</a> (TEXTOS E INFORMAÇÕES)</p>

<p>Altere ou Exclua uma not&iacute;cia cadastrada <a href="listar_noticias.php" target="_top">clicando aqui</a> </p>

<p>Cadastre uma nova Notícia <a href="cadastrar.php" target="_top">clicando aqui</a> </p>

<table width="100%">
  <tr>
    <td width="4"><div align="left"><font color="white">.</font></div></td>
    <td width="885" valign="top">
      <!-- INICIO DO MEIO -->
      <table border="0" width="503">
        <tbody>
          <tr>
            <td width="100%" valign="top">
              <div align="left"><font color="#000000" size="2" face="Arial"><b>Efetuar Busca </b></font></div></td>
          </tr>
        </tbody>
        </table>      
  <div align="left"></div>
  <table>
          <tr>
            <td>
              <form  name="form1" method=POST action"index.php">
                <div align="center"> <input type="text"  name="palavra" value=""><input type="submit" value="Buscar">
</div></form></td>
          </tr>
          </table>      
      <div align="left"></div>  
        <table width="481" border="0">
          <tr>
            <td valign="middle" align="left"> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">
              <?
              
              if(!empty($_POST[palavra])) {

              $palavra = str_replace(" ", "%", $_POST[palavra]);

              // caso você trabalhe com números (datas) precisará implementar assim:
              $data = $_POST['palavra']; // a data vem no formato dos eua (, ex: 2010-04-13
              $data_br = implode(preg_match("~\/~", $data) == 0 ? "/" : "-", array_reverse(explode(preg_match("~\/~", $data) == 0 ? "-" : "/", $data))); // aqui converte para formato brasileiro, ex: 13/04/2010

              $query = "SELECT * FROM tbl_noticias WHERE texto LIKE '%".$palavra."%' or
                         data LIKE '".$data_br."' OR subtitulo LIKE '%".$palavra."%' ORDER BY data DESC";
              $resultado = mysql_query($query);
              $total = mysql_num_rows($resultado);
              if($total>= 1){
              echo "Sua busca retornou <b>'$total'</b> resultado(s).<br>\n";
                   while($r = mysql_fetch_array($resultado)) {
                   echo "<hr>\n";
                   echo date('d/m/Y', strtotime($r[data])) . " - <b><a href='noticia_completa.php?id=$r[id]'>";
                   echo $r[titulo]."</a></b><br>\n";
                   echo $r[descricao]."<br>\n";
                   }
              }
              else{
              echo "<font size=2 color='red'>&nbsp;&nbsp;Desculpe mas a Palavra <b><font color=black>$palavra</font></b> não Foi  Encontrada</font>";
              }
              }

?>
              </font>
                <div align="left"></div></td>
          </tr>
        </table>
            </center><p><font face=verdana><br>
              <!-- FIM DO MEIO -->
    </font></p><p>&nbsp; </p></td>
  </tr>
</table>

Prático, não?

Bem… esse ficheiro não é difícil de se trabalhar e creio que com as explicações acima você poderá implementar fácilmente seu web site com esta solução.

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

Download do código usado neste tutorial: Formatar Data Na Pesquisa

Be Sociable, Share!

Participa! Comenta...