Jump to content
revX

[PHP] Criar um sistema de artigos

Recommended Posts

revX

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]

Share this post


Link to post
Share on other sites
revX

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:

Share this post


Link to post
Share on other sites
deathseeker25

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

Share this post


Link to post
Share on other sites
revX

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

Share this post


Link to post
Share on other sites
Guest Marine

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

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

Share this post


Link to post
Share on other sites
Hipnoted

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...  😲


"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.