


Código PHP:
<?PHP
/*
+--------------------------------------------------------------------+
| DForum v.0.0.1 |
+--------------------------------------------------------------------+
| Copyright (c) 2003 Dikode |
+--------------------------------------------------------------------+
| This source file is subject to version 2.02 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available at through the world-wide-web at |
| [url]http://www.php.net/license/2_02.txt.[/url] |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| [email][email protected][/email] so we can mail you a copy immediately. |
+--------------------------------------------------------------------+
| Authors: Ivan Rodriguez Espada <[email protected]> |
+--------------------------------------------------------------------+
*/
class DForum {
var $host;
var $user;
var $pass;
var $BBDD;
var $id_connection;
var $datos = array();
function DForum($host, $user, $pass) {
$this->host = $host;
$this->user = $user;
$this->pass = $pass;
$this->BBDD = "DForum";
$this->id_connection = mysql_connect($this->host, $this->user, $this->pass) or die (mysql_error());
mysql_select_db($this->BBDD, $this->id_connection) or die (mysql_error());
return $this->id_connection;
}
function getForums($SQL = "SELECT id_forum, forum_title FROM forums") {
$expresion = "from ([a-z0-9_]+)";
if(eregi ($expresion, $SQL, $nombre)) {
$tabla = $nombre[1];
}
$celdas = mysql_list_fields($this->BBDD, $tabla, $this->id_connection);
$columnas = mysql_num_fields($celdas);
$campos = array();
$dato = array();
for ($i = 0; $i < $columnas; $i++) {
$campos[] = mysql_field_name($celdas, $i);
}
$consulta = mysql_query($SQL, $this->id_connection) or die(mysql_error());
$registros = mysql_num_rows($consulta) or die(mysql_error());
for($i = 0; $i < $registros; $i++) {
while($campo = mysql_fetch_array($consulta)) {
for($i = 0; $i < count($campos); $i++) {
$dato[$i] = $campo[$campos[$i]];
}
$this->datos[] = $dato;
}
}
return $this->datos;
}
function getForumInfo($id_forum) {
$id_forum = $id_forum-1;
$SQL = "SELECT autor, data FROM messages WHERE forum = $id_forum ORDER BY data DESC LIMIT 0, 1";
$query = mysql_query($SQL, $this->id_connection) or die (mysql_error());
while($d = mysql_fetch_array($query)) {
return $d["autor"] . "-" . date("d-m-Y", $d["data"]) . "<br>";
}
}
function countForumMessages($id_forum) {
$id_forum = $id_forum-1;
$SQL = "SELECT id_message FROM messages WHERE forum = $id_forum AND id_forum = 0";
$query = mysql_query($SQL, $this->id_connection) or die (mysql_error());
return mysql_num_rows($query);
}
function getForumMessages($forum) {
$forum = $forum - 1;
$SQL = "SELECT id_message, autor, title, message, data, answers, id_forum, forum FROM messages WHERE id_forum = 0 AND forum = $forum ORDER BY data DESC";
return $this->getForums($SQL);
}
}
$f = new DForum("host", "user", "pass");
if(empty($_GET['accion'])) {
$accion = "foros";
} else {
$accion = $_GET['accion'];
}
switch($accion) {
case "foros":
echo "<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\">";
echo "<tr><td width=\"200\">Foro</td><td width=\"50\">Mensajes</td><td width=\"200\">Último mensjae</td></tr>";
echo "</table>";
echo "<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\">";
foreach($f->getForums() aS $F) {
echo "<tr><td width=\"200\"><a href=\"ver.php?id_foro=$F[0]&accion=ver_foro\">" .$F[1] . "</a></td><td width=\"50\">".$f->countForumMessages($F[0])."</td><td width=\"200\">" . $f->getForumInfo($F[0]) . "</td></tr>";
}
echo "</table>";
break;
case "ver_foro":
$datos = $f->getForumMessages($_GET['id_foro']);
for($i = 0; $i < count($datos); $i++) {
echo $datos[$i][1] . "<br>";
}
break;
default: break;
}
?>