Programando PostgreSQL + PHP

Quem conhece o "básico" dos comandos do PostgreSQL e um pouco de linguagem PHP já está preparado para misturar PostgreSQL + PHP. Esta mistura é muito útil para criarmos sites (páginas) dinâmicos para internet.

[ Hits: 86.984 ]

Por: Laudelino em 21/07/2004


Código em PHP do exibidor de notícias (noticias.php)



<html>
<head>
<title>noticias.php</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
#n1 { font-family:verdana,arial,tahoma,times new roman; font-size:10pt; color:black; font-weight:bold; }
#n2 { font-family:verdana,arial,tahoma,times new roman; font-size:7pt; color:gray; }
#n3 { font-family:verdana,arial,tahoma,times new roman; font-size:8pt; color:black; }
</style>
</head>

<body>

<?

/* Código PHP desenvolvido por Laudelino (Dúvidas? Envie um email para: [email protected])
   Este código pode ser distribuído ou utilizado de qualquer forma, só não pode ser vendido.

TIPO DA TABELA A SER CRIADA NO BANCO DE DADOS!!!

CREATE TABLE news_m (
info_time   varchar (100),
info_title  varchar (150),
info_text   text
);

*/


// ----------- função para gerar a data

function gera_data() {

$data = getdate();
$dia = $data["mday"];
$mes = $data["mon"];
$ano = $data["year"];
$nome_mes = array("Sem mês!", "Janeiro", "Fevereiro", "Março" ,"Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro");

return "$dia de ".$nome_mes[$mes]." de $ano";

}

// ----------- FIM DA FUNÇÃO PARA GERAR A DATA!!!

// ------- configurações ---------

$db = "nosso_banco_de_dados"; // nome do banco de dados
$host = "localhost";          // host (local onde seu banco de dados está hospedado, caso seja na sua máquina use "localhost") DESTAQUE 6
$user = "eu";                 // nome de usuário registrado no banco de dados
$pass = "senha1234";          // senha do usuário
$port = "5432";               // "porta" para conexão ao banco de dados

$main_file = "noticias.php";   // nome deste arquivo
$user_add = "eu";              // usuário que irá adicionar as notícias
$password_add = "senha4321";   // senha para o usuário que irá adicionar as notícias

// ------- configurar as fontes no "<style>" acima

$tipo_fonte1 = "n1"; // fonte do título do texto
$tipo_fonte2 = "n2"; // fonte da data
$tipo_fonte3 = "n3"; // fonte do texto

// -------- configurações fim -----------

$string_connect = "host=$host port=$port dbname=$db user=$user password=$pass"; // Variável com as informações para a conexão ser feita
$connect = pg_pconnect($string_connect); // Comando para conectar-se ao servidor

echo "<p align=\"center\"><font id=\"$tipo_fonte3\"><b>NOTÍCIAS</b></font></p>";

if (!$acao) {
$query = pg_query("SELECT * FROM news_m");  // Comando para fazer um "query" (uma requisição de informação) no banco de dados. Note que, "SELECT * FROM news_m" já é um comando SQL conhecido. DESTAQUE 1

$n_resultados = 3; // Número de notícias a serem exibidas
$n_linhas  = pg_num_rows($query);  // DESTAQUE 2
$n_pag = ceil($n_linhas / $n_resultados);  // DESTAQUE 3
if(!isset($_GET['pagina'])) { $_GET['pagina'] = $n_pag-1; }
$inicio = $_GET['pagina'] * $n_resultados;
$query = pg_query("SELECT * FROM news_m LIMIT $n_resultados OFFSET $inicio"); // DESTAQUE 4

// comando para listar as notícias [início] --------------------------------

while ($answer = pg_fetch_array($query)) {
  echo "<p align=\"left\"><font id=\"$tipo_fonte1\"> <b>".$answer["info_title"]."</b></font></p>\n";
  $text = stripslashes($answer["info_text"]);
  $text = ereg_replace("\n","<br>\n",$answer["info_text"]);
  echo "<p align=\"left\"><font id=\"$tipo_fonte3\">\n$text\n</font></p>\n";
  echo "<p align=\"left\"><font id=\"$tipo_fonte2\">".$answer["info_time"]."</font></p>\n";
  echo "<hr color=\"#000000\" size=\"1\" noshade>\n\n";
}

// comando para listar as notícias [fim] --------------------------------

// paginação de resultados [início] --------------------------------

echo "<p align=\"center\"><font id=\"$tipo_fonte3\">";
if ($n_pag > 1 && $_GET['pagina'] > 0) { $num = $_GET['pagina'] - 1; echo " [<a href=\"$main_file?pagina=$num\"><<</a>]"; }

for($i = 0; $i < $n_pag; $i++) {
  $url = "$main_file?pagina=$i";
  $num = $i+1;
  if ($i == $_GET['pagina']) { echo " [<b>$num</b>]"; } else { echo " [<a href=\"$url\">$num</a>]"; }
}

if ($n_pag > 1 && $_GET['pagina'] < $n_pag - 1) { $num = $_GET['pagina'] + 1; echo " [<a href=\"$main_file?pagina=$num\">>></a>]"; }

echo "</font></p>\n\n";

// paginação de resultados [fim] --------------------------------

echo "<p align=\"right\"><font id=\"$tipo_fonte3\"><a href=\"$main_file?acao=form\">Envie uma notícia</a> </font><font id=\"$tipo_fonte2\">(só usuário cadastrado)</font></p>\n\n";

} else {
switch ($acao) {
  case form:  // formulário para enviar notícia
   echo "<p align=\"center\"><font id=\"$tipo_fonte3\">Envie uma NOTÍCIA!<br>Preencha todo formulário abaixo.</font></p>";
   echo "<form action=\"$main_file?acao=enviar\" method=\"post\" name=\"envia_dados\">\n";
   echo "<table width=\"70%\" border=\"0\" cellspacing=\"0\" align=\"center\" bgcolor=\"#FFCC66\">\n";
   echo "  <tr>\n";
   echo "    <td align=\"right\" valign=\"top\"><font id=\"$tipo_fonte3\">Usuário</font></td>\n";
   echo "    <td align=\"left\" valign=\"top\"><input name=\"usuario\" type=\"text\" size=\"30\" maxlength=\"20\"></td>\n";
   echo "  </tr>\n";
   echo "  <tr>\n";
   echo "    <td align=\"right\" valign=\"top\"><font id=\"$tipo_fonte3\">Senha</font></td>\n";
   echo "    <td align=\"left\" valign=\"top\"><input name=\"senha\" type=\"password\" size=\"30\" maxlength=\"8\"></td>\n";
   echo "  </tr>\n";
   echo "  <tr>\n";
   echo "    <td colspan=\"2\" align=\"left\" valign=\"top\"><font id=\"$tipo_fonte3\">Título</font> <input name=\"titulo\" type=\"text\" size=\"50\" maxlength=\"150\"></td>\n";
   echo "  </tr>\n";
   echo "  <tr>\n";
   echo "    <td colspan=\"2\" align=\"left\" valign=\"top\"><font id=\"$tipo_fonte3\">Notícia</font><br><textarea name=\"texto\" cols=\"43\" rows=\"10\"></textarea></td>\n";
   echo "  </tr>\n";
   echo "  <tr>\n";
   echo "    <td colspan=\"2\" align=\"center\" valign=\"top\"><input name=\"ok\" type=\"submit\" value=\"ENVIAR\"> <input name=\"limpa\" type=\"reset\" value=\"LIMPAR\"> <font id=\"$tipo_fonte3\">[<a href=\"$main_file\">Cancelar</a>]</font></td>\n";
   echo "  </tr>\n";
   echo "</table>\n";
   echo "</form>\n";
  break;
  
  case enviar:
   if ($titulo && $texto && $ok && $senha == "$password_add" && $usuario == "$user_add") { // Se tudo estiver OK, envia uma nova notícia. Caso contrário, dá uma mensagem de erro.
    $data  = gera_data();
    $query = pg_query("INSERT INTO news_m (info_title,info_text,info_time) VALUES ('$titulo','$texto','$data')") or die("<p align=\"center\"><b><font id=\"$tipo_fonte3\" color=\"red\">ERRO!</font></b></p>\n<p align=\"center\"><font id=\"$tipo_fonte3\">Não foi possível enviar sua notícia!!!<br><a href=\"$main_file?acao=form\">Clique aqui</a> para tentar novamente.</font></p>"); // DESTAQUE 5
   if ($query) { echo "<p align=\"center\"><b><font id=\"$tipo_fonte3\" color=\"red\">NOTÍCIA ENVIADA COM SUCESSO!</font></b></p>\n<p align=\"center\"><font id=\"$tipo_fonte3\"><a href=\"$main_file\">Clique aqui</a> para voltar às NOTÍCIAS</font></p>"; } else { echo "<p align=\"center\"><b><font id=\"$tipo_fonte3\" color=\"red\">ERRO!</font></b></p>\n<p align=\"center\"><font id=\"$tipo_fonte3\">Não foi possível enviar sua notícia!!!<br><a href=\"$main_file?acao=form\">Clique aqui</a> para tentar novamente.</font></p>"; }
   } else {
    echo "<p align=\"center\"><b><font id=\"$tipo_fonte3\" color=\"red\">ERRO!</font></b></p>\n";
   echo "<p align=\"center\"><font id=\"$tipo_fonte3\">Não foi possível enviar sua notícia, você deve preencher todos os campos do formulário.<br> <a href=\"$main_file?acao=form\">Clique aqui</a> para tentar novamente.</font></p>\n";
   }
  break;
}
}


?>

</body>
</html>
Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Código em PHP do exibidor de notícias (noticias.php)
   3. Destaques
   4. Mais alguns comandos básicos do PostgreSQL
Outros artigos deste autor

Criptografando mensagens com PHP

Método de Newton e PHP

PostgreSQL: comandos básicos

Leitura recomendada

PostgreSQL 9.4 - O conceito de Role

PgBouncer - Instalação no Debian 6.0 Squeeze

Automação comercial livre no Slackware 12

PostGIS no Slackware

HowTo: Como criar Cluster Linux - Ativo/Passivo para Postgres com DRBD, Pacemaker e Corosync

  
Comentários
[1] Comentário enviado por gustavo_marcon em 21/07/2004 - 09:09h

Quais são as vantagens do PostgreSQL sobre o MySQL?
Por que usar ele em programação PHP?

[2] Comentário enviado por Herr_Filip em 21/07/2004 - 13:36h

cara, otimo artigo
escrevi um artigo sobre instalacao do apache, php e postgresql no slackware, e teu artigo completa o meu e vice-versa!

parabens!

[3] Comentário enviado por agk em 21/07/2004 - 16:02h

Parabéns excelente artigo.
Pretendo usar PostgreSQL junto com postfix aqui, ouvi dizer que PostgreSQL é mais robusto para bases de dados grandes e funciona melhor que MYSQL, mas não convém discutir isso aqui.

[4] Comentário enviado por vodooo em 22/07/2004 - 02:12h

Bom artigo! Parabens!!!

Abraços

[5] Comentário enviado por laudelino7 em 22/07/2004 - 23:14h

Quem quiser ver o "noticas.php" funcionando é só ver este endereço (funcionando por tempo indeterminado):
http://www.mat.ufpb.br/~camat/noticias.php

Aproveite e deixe sua mensagem. O nome de usuário é "eu" e a senha é "123".

[6] Comentário enviado por jeffestanislau em 23/07/2004 - 10:18h

Ficou muito bom o seu artigo... parabéns!!!
Obs: já tirou a página do ar?

[7] Comentário enviado por laudelino7 em 24/07/2004 - 14:07h

a página está disponível para todos enviarem mensagens!!!

http://www.mat.ufpb.br/~camat/noticias.php

[8] Comentário enviado por bragil em 12/11/2004 - 13:05h

gustavo_marcon, o PostGreSQL é um gerenciador de banco de dados muito mais completo, a nível de recursos, do que o MySQL. O MySQL é indicado quando a velocidade importa mais.
Mas o PostgreSQL possui muitos recursos avançados não encontrados no Mysql, como stored procedures, triggers, sub-selects, etc... Além de suportar um volume muito maior de dados por tabela (se não me engano, 16 terabytes...). Só que não é tão rápido como o Mysql para aplicações mais simples...

Qualquer outra dúvida, www.postgresql.org


Falow!

[9] Comentário enviado por reimassupilami em 31/01/2005 - 16:25h

cara, achei muito bom seu artigo... e encontrei ele em momento oportuno, pois estou mudando meu banco de dados de mysql pra postgre, mas to apanhando bastante...

andei resolvendo uma panes aki pra rodar o seu código, mas to com um problema estranho aki: quando preencho o formulário e envio da uma mensagem dizendo que tenho q preencher todos campos... ixi... dae volto e tento novamente, mas sem resultados...

por que sera q isso ta acontecendo? ja procurei no codigo mas naum encontrei nada...

no aguardo...

[10] Comentário enviado por cah666 em 13/11/2005 - 22:52h

Nossa Cara muito bom o ebook ^^ e o artigo todo em si ...interessante .... conceitos basicos são otemos

[]´s

[11] Comentário enviado por removido em 16/01/2006 - 21:11h

"otemos" eh [*****]!!! huahuahua!!!

[12] Comentário enviado por thigux em 29/03/2006 - 15:48h

ae brother show de bola..to no trampo mas quando chegar em casa vo funfa isso em realidade....vlw pelo pelo artigo

[13] Comentário enviado por fernandoamador em 18/04/2006 - 18:57h

Excelente artigo...

[14] Comentário enviado por charlestech em 31/07/2006 - 11:48h

Excelente código.. mas me ajude ai.. Na paginação está mostrando a última página.. o que devo alterar para mostrar a partir da primeira página?

[15] Comentário enviado por HER GNU/LINUX em 17/05/2010 - 17:10h

Salve, Rapaz!

Fiquei encantado com os comentário e a clareza. Trabalho com o Microsoft Access a bastante tempo.
Gosatria de apreender um prático como ele para uso na plataforma LINUX Ubuntu. Qual que você recomendaria. Será que tem um prático como o Access.
É para pequenos banco de dados. Abraços e parabéns


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts