Jump to content

[PHP] Criar um sistema de artigos


revX
 Share

Recommended Posts

Aqui fica um tutorial de como criar um sistema de artigos simples¬† ūüėĄ

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¬† ūüėĄ

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

[Artigo no Wiki]

Link to comment
Share on other 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 ūüėõ

Link to comment
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

Link to comment
Share on other 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 ūüėĄ

Link to comment
Share on other 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...¬† ?

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

Link to comment
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
 Share

×
×
  • 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.