• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

revX

[PHP] Criar um sistema de artigos

10 mensagens neste tópico

Aqui fica um tutorial de como criar um sistema de artigos simples  :D

base_de_dados.php

<?php

// Dados de login

$hostado = "localhost"; //Normalmente é localhost 
$base_de_dados = "nome_da_base_de_dados";
$utilizador = "utilizador_da_db";
$password = "password";
?>

$conectando = mysql_connect($hostado, $utilizador, $password) or die                      ('Erro ligando há base de dados MySql');
mysql_select_db($base_de_dados);

Em cima inserimos os dados para fazer a ligação à base de dados e fazemos a ligação

sair.php

<?php
// Fechando a ligação

mysql_close($conn);
?>

O ficheiro que fecha a ligação à base de dados, poupa o trabalho de estar a repetir o código

Criando a tabela no MySql

mysql_query ("CREATE TABLE `Artigos` ( `id` INT NOT NULL AUTO_INCREMENT, `data` TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, `titulo` TEXT NOT NULL, `conteudo` TEXT NOT NULL, PRIMARY KEY (id) ) TYPE=myisam ; ");

Aqui criamos a tabela necessária para o sistema funcionar

artigo.php

<?php
include 'base_de_dados.php';

// se não for especificada o id listar
if(!isset($_GET['id']))
{
  $self = $_SERVER['PHP_SELF'];

  $query = "SELECT id, titulo FROM Artigos ORDER BY id";
  $resultado = mysql_query($query) or die('Erro : ' . mysql_error()); 

  // Criando a lista de artigos
  $conteudo = '<ol>';
  while($row = mysql_fetch_array($resultado, MYSQL_NUM))
  {
      list($id, $titulo) = $row;
      $conteudo .= "<li><a href=\"ver_artigo.php?id=$id\">$titulo</a></li>\r\n";
  }

  $conteudo .= '</ol>';

  $titulo = 'Artigos';
} else {
  // Obtendo informação da base de dados
  $query = "SELECT titulo, conteudo FROM Artigos WHERE id=".$_GET['id'];
  $resultado = mysql_query($query) or die('Erro : ' . mysql_error()); 
  $row = mysql_fetch_array($resultado, MYSQL_ASSOC); 

  $titulo = $row['titulo'];
  $conteudo = $row['conteudo];
} 

include 'sair.php';
?>

<html>
<head>
<title>Artigos</title>
</head>
<body>
<h1 align="center"><?php echo $titulo; ?></h1>
<?php 
echo $conteudo;
// Links para ver os artigos
if(isset($_GET['id']))
{ 
?>
<p> </p>
<p align="center"><a href="<?php echo $_SERVER['PHP_SELF']; ?>">Lista de Artigos</a></p>
<?php
}
?>
<div align="center" class="estilo3">(c) <a href="http://portugal-a-programar.org">Portugal-a-programar.org</a> - <b>Coder:</b> RevX</div>

</body>
</html>

<?php
include 'base_de_dados.php';

// Para a cache crie na directoria dos php's a pasta cache e lá dentro 
// o ficheiro index.html, mude para CHMOD 777

$cacheDir = dirname(__FILE__) . '/cache/';

if (isset($_GET['id'])) {
  $cacheFile = $cacheDir . '_' . $_GET['id'] . '.html';
} else {
  $cacheFile = $cacheDir . 'index.html';
} 

if (file_exists($cacheFile))
{
  readfile($cacheFile);
  exit;
}

if(!isset($_GET['id']))
{
  $self   = $_SERVER['PHP_SELF'];

  $query  = "SELECT id, titulo FROM Artigos ORDER BY id";
  $resultado = mysql_query($query) or die('Erro : ' . mysql_error()); 

      $introducao = '<ol>';
  while($row = mysql_fetch_array($resultado, MYSQL_NUM))
  {
      list($id, $titulo) = $row;
      $introducao .= "<li><a href=\"$self?id=$id\">$titulo</a></li>\r\n";
  }

  $introducao .= '</ol>';

  $titulo = 'Artigos';
} else {
  // Obter informação da base de dados
  $query  = "SELECT titulo, texto_intro, texto_completo FROM Artigos WHERE id=".$_GET['id'];
  $resultado = mysql_query($query) or die('Error : ' . mysql_error()); 
  $row    = mysql_fetch_array($resultado, MYSQL_ASSOC); 

  $titulo = $row['titulo'];
  $introducao = $row['texto_intro'];
  $desenvolvimento = $row['texto_completo'];
} 

include 'saindo.php';

?>

Aqui definimos o index dos artigos

criar_artigo.php

<html>
<head>
<title>Criar Artigo</title>
</head>
<body>

<form method="post">
<table width="100%" border="0" cellpadding="2" cellspacing="1" align="center">
<tr> 
<td width="100"><font color="#FF0000"><b>Titulo:</b></font></td>
<td><input name="titulo" type="text" value="" size="53" /></td>
</tr> 
<tr> 
<td width="100"><b>Conteúdo:</b></td>
<td><textarea name="desenvolvimento" cols="50" rows="10"><textarea></td>
</tr>
<tr> 
<td width="100"> </td>
<td> </td>
</tr>
<tr> 
<td colspan="2" align="center"><input name="gravar" type="submit" value="Gravar Artigo"></td>
</tr>
</table>
</form>

<?php
if(isset($_POST['gravar']))
{
  $titulo   = $_POST['titulo'];
  $conteudo = $_POST['conteudo];

  if(!get_magic_quotes_gpc())
  {
      $titulo   = addslashes($titulo);
      $conteudo = addslashes($conteudo);
  }
  include 'base_de_dados.php';

  $query = " INSERT INTO Artigos (titulo, conteudo) ".
            " VALUES ('$titulo', '$conteudo')";
  mysql_query($query) or die('Erro ao ligar à Base de Dados');

  include 'sair.php';

  echo "Artigo '$titulo' adicionado";
}
?>

</td>
</tr>
</table>
</td>
</tr>
</table>
<div align="center" class="estilo3">(c) <a href="http://portugal-a-programar.org">Portugal-a-programar.org</a> - <b>Coder:</b> RevX</div>

</body>
</html>

Aqui criamos o sitio onde vamos introduzir os artigos para eles serem adicionados.

ver_artigo.php

<?php
include 'base_de_dados.php';

/*
   Escolhendo a directoria onde se vai armazenar a cache
*/ 
$cacheDir  = dirname(__FILE__) . '/cache/';

/*
   Gerando o nome do ficheiro de cache neste caso será feito um index apartir dos ids
*/
if (isset($_GET['id'])) {
    $cacheFile = $cacheDir . '_' . $_GET['id'] . '.html';
} else {
    $cacheFile = $cacheDir . 'index.html';
}    

/* 
   Se o ficheiro em cache for encontrado envia-se para o cliente
*/
if (file_exists($cacheFile))
{
    header("Content-Type: text/html");
    readfile($cacheFile);
    exit;
}

/*
   Se o ficheiro de cache não for encontrado/Não existir
*/

// se não for especificada o id listar
if(!isset($_GET['id']))
{
  $self = $_SERVER['PHP_SELF'];

  $query = "SELECT id, titulo FROM Artigos ORDER BY id";
  $resultado = mysql_query($query) or die('Erro : ' . mysql_error()); 

  // Criando a lista de artigos
  $conteudo = '<ol>';
  while($row = mysql_fetch_array($resultado, MYSQL_NUM))
  {
      list($id, $titulo) = $row;
      $conteudo .= "<li><a href=\"$self?id=$id\">$titulo</a></li>\r\n";
  }

  $conteudo .= '</ol>';

  $titulo = 'Artigos';
} else {
  // Obtendo informação da base de dados
  $query = "SELECT titulo, conteudo FROM Artigos WHERE id=".$_GET['id'];
  $resultado = mysql_query($query) or die('Error : ' . mysql_error()); 
  $row = mysql_fetch_array($resultado, MYSQL_ASSOC); 

  $titulo = $row['titulo'];
  $conteudo = $row['conteudo'];
} 

include 'saindo.php';
?>
<?php
// iniciando buffering 
ob_start();
?>
<html>
<head>
<title>
<?php echo $titulo; ?>
</title>
</head>
<body>

<?php 
echo $conteudo;

// Links para ver os artigos
if(isset($_GET['id']))
{ 
?>
<p> </p>
<p align="center"><a href="<?php echo $_SERVER['PHP_SELF']; ?>">Lista de Artigos</a></p>
<?php
}
?>
<div align="center" class="estilo3">(c) <a href="http://portugal-a-programar.org">Portugal-a-programar.org</a> - <b>Coder:</b> RevX</div>
</body>
</html>
<?php

// obter buffer
$buffer = ob_get_contents();

//acabando com o buffer
ob_end_flush();

// criando o ficheiro de cache
$fp = @fopen($cacheFile, "w");
@fwrite($fp, $buffer);
@fclose($fp);
?>

Aqui vemos os artigos, estando este intimamente ligado ao artigo.php

E aqui fica um simples sistema de artigos que pode ser mais desenvolvido, eu por exemplo já inclui o row da data que pode ser chamado se quiserem  :D

Peço desculpa por algum engano mas tendo em conta que estou na escola em tempo de aulas...

[Artigo no Wiki]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ah já agora, eu sei que o código pode ser simplificado e nem está grande coisa, já estou a espera de comentários assim :-D :roll:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ha 1 coisa que se chama editar, pra alterar a msg escrita...pra evitar escrever 3 msg seguidas...relativas a msg inicial

e ja agora...isso é tipo o login de uma pagina em php, usando 1 base de dados??... poem o resultado final...pra ver como fica sff :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem para quem está a dar os primeiros passos na programação em PHP, como eu, isto ajuda e muito mesmo.

Grande tut, grande exemplo revX.

É destas iniciativas que o forum quer....

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hm não isto é algo que não involve login's cria-se a base de dados, preenchemos os dados da base de dados no base_de_dados.php, executamos um query sql com aqueles códigos que dei em cima para o MySql e criamos os ficheiros php com o conteudo pus em cima, quanto a exemplos, este sistema vai fazer parte do meu próximo trabalho php... um cms :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tu dominas disto. Também ja deves ter muita experiência!!!

Só tenho a dizer uma coisa: os meus parabéns!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tu dominas disto. Também ja deves ter muita experiência!!!

Só tenho a dizer uma coisa: os meus parabéns!

Bem, tou a ver que es um arqueólogo muito bom, 1 ano depois do último comentário fazer um novo...  :shocking:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora