Criar um Sistema de Artigos
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.
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'];
}
mysql_close($conn);
?>
<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'];
}
mysql_close($conn);
?>
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');
mysql_close($conn);
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 sítio 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'];
}
mysql_close($conn);
?>
<?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
.