Pular para o conteúdo

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.
Laudelino laudelino7
Hits: 90.691 Categoria: Banco de Dados Subcategoria: Postgres
  • Indicar
  • Impressora
  • Denunciar

Parte 2: 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: laudelino7@click21.com.br)
   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>
   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

Criptografando mensagens com PHP

PostgreSQL: comandos básicos

Método de Newton e PHP

PostgreSQL: SGBDOR

Instalando PostgreSQL 8.1 com extensão para dados espaciais (PostGis) e interface de gerenciamento (PgAdmin3)

PostGIS no Slackware

PostgreSQL no Slackware - Importando e Exportando arquivos TXT e CSV

PgBouncer - Instalação no Debian 6.0 Squeeze

#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?
#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

Entre na sua conta para comentar.