<html>
<head><title>Foro</title>


</head>
<body>
<?php

/*
# - Nombre = gForum v1.0
# - Autor = gOnd0
# - Este archivo contiene todas las funciones y la estructura del foro
*/


/*
        Antes de nada , tienes que crear las BDS en MYSQL.
        Introduce este codigo SQL en el phpmyAdmin
       
        CREATE TABLE foros (
         id int(11) NOT NULL auto_increment,
        id_padre text NOT NULL,
        mensage longtext NOT NULL,
        autor text NOT NULL,
        asunto text NOT NULL,
        fecha text NOT NULL,
        categoria text NOT NULL,
        ip text NOT NULL,
        contador text NOT NULL,
        PRIMARY KEY  (id)
        ) TYPE=MyISAM;

        CREATE TABLE `foro_categorias` (
        `categoria` VARCHAR(40) NOT NULL   
        );
       
        Para insertar las categorias tienes que hacerlo desde el phpmyAdmin
       
*/


# - Funciones - #

        # Se conecta a la base de datos
        function mysql_conect($host,$user,$pass,$db) { 

                mysql_connect('$host','$user','$pass');
                mysql_select_db('$db');
       
        }
       
        # Inserta un mensage en la BD y redirecciona a la pagina indicada , si no se indica redirecciona a index.php
        function insertar_mensage($mensage,$fecha,$ip,$id_padre,$autor,$asunto,$categoria,$paginaaredireccionar) {
               
                $pagina = (empty($paginaaredireccionar)) ? 'index.php' : $paginaaredireccionar ;
                $mensage = bbcode($mensage);
                mysql_query('INSERT INTO foros (id_padre,mensage,autor,asunto,fecha,categoria,ip) values ('$id_padre','$mensage','$autor','$asunto','$fecha','$categoria','$ip') ') or die (mysql_error());
                echo '<META HTTP-EQUIV=\'refresh\' content=\'1; URL=$pagina\'>';
               
                }
       
        # Muestra en pantalla el mensage insertado y sus correspondientes respuestas.
        function mostrar_mensage($id,$categoria) {
       
                $query = mysql_query('SELECT * FROM foros WHERE id='$id' and categoria='$categoria' ');
               
                if($datos = mysql_fetch_array($query) )
                {
                        $datos['contador']++;
                        mysql_query('update foros set contador='$datos[contador]' where id='$id'');
                $date = date(' H:m -  d/m/y',$datos['fecha']);
                echo '<table border='1' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='97%' id='AutoNumber1'>
              <tr>
            <td width='74%' bgcolor='#339966'>'.$datos['asunto'].'&nbsp; -&nbsp; '.$datos['autor'].'  Palabras: '.count(explode(' ',$datos['mensage'])).' , Caracteres : '.strlen($datos['mensage']) .', Tamaño: '.round(strlen($datos['mensage']) / 1024,2).' Kb</td>
            <td width='26%' bgcolor='#C0C0C0'> '.$date.' </td>
              </tr>
                        </table>
                        <table border='1' cellpadding='0' cellspacing='0' style='border-collapse: collapse; border: 1px dotted #FFFFFF' bordercolor='#111111' width='97%' id='AutoNumber2' bgcolor='#FFFFFF'>
               <tr>
                    <td width='100%'><br><p> '.$datos['mensage'] .' </p></td>
               </tr>
                        </table>';
                $num_respuestas = mysql_num_rows(mysql_query('
SELECT * FROM `foros` WHERE categoria='$categoria' and id_padre='$id' ORDER BY `id` DESC'));
               
                echo '
<br>
                        <table border='1' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='52%' id='AutoNumber3' bgcolor='#FF6600'>
              <tr>
            <td width='100%'>Total Respuestas '.$num_respuestas.'</td>
              </tr>
                        </table>
                <br>';

                if($num_respuestas == '
0')
               
                        {
                       
                         echo '
Aun no hay respuestas :-( ';
               
                        } else {
                                $resp = mysql_query('
SELECT * FROM `foros` WHERE categoria='$categoria' and id_padre='$id' ORDER BY id DESC LIMIT 0,30');
                                while($row=mysql_fetch_array($resp)) 
                                {
                                        $date_res = date('
H:m - d/m/y',$row['fecha']);
                       
                                        echo '
<br><br>
                                        <table border='0'><table border='1' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='97%' id='AutoNumber1'>
                                      <tr>
                            <td width='74%' bgcolor='#339966'>'.$row['asunto'].'&nbsp; -&nbsp; '.$row['autor'].' Palabras: '.count(explode(' ',$row['mensage'])).' , Caracteres : '.strlen($row['mensage']) .', Tamaño: '.round(strlen($row['mensage']) / 1024,2).' Kb </td>
                            <td width='26%' bgcolor='#C0C0C0'>A las '.$date_res.'</td>
                                      </tr>
                                        </table>
                                        <table border='1' cellpadding='0' cellspacing='0' style='border-collapse: collapse; border: 1px dotted #FFFFFF' bordercolor='#111111' width='97%' id='AutoNumber2' bgcolor='#FFFFFF'>
                                      <tr>
                            <td width='100%'><br><p>'.$row['mensage'].'</p></td>
                                      </tr>
                                        </table>
                                        </table>
                                        <br>'; 

                                }
               
                               

                      }
                        echo '
<br><a href=foro.php?ac=nuevo&cat='.$categoria.'&idg='.$id.'> Responder </a>';
                       
        } else {
       
        echo '
la ID del mensage que intentas mostrar, no corresponde con ningun mensage insertado en la categoria '. $categoria .'';
               
        }
               
        }
       
        # Muestra todos los mensages insertados a una categoria
        function mostrar_mensages($categoria) {
               
                 echo '

                 <table width='515' border='0' >
                        <tr bgcolor='#003399'>
                                <td align='center' width='334'>
                    <p align='left'><font color='#FFFFFF'>Mensage</font></td>
                                <td align='center' width='76'><font color='#FFFFFF'>Por</font></td>
                                <td align='center' width='91'><font color='#FFFFFF'>Lecturas</font></td>
                                <td align='center' width='91'><font color='#FFFFFF'>Repuestas</font></td>
                        </tr>';
               
                $query = mysql_query('
SELECT * FROM `foros` WHERE categoria='$categoria' and id_padre='0'  ORDER BY `id` DESC');
               
                        if(mysql_num_rows($query) == 0)
                        {
                
                               echo '
<p><td>No hay mensajes Insertados en nuestra Base de datos.</td></tr></table>' ;
                            exit();
                        } else {
                             
                                while($row=mysql_fetch_array($query)) 
                             {
                               
                                $respuestas_mensage =  mysql_num_rows(mysql_query('
SELECT * FROM `foros` WHERE categoria='$categoria' and id_padre='{$row['id']}' ORDER BY `id` DESC'));
                                $respuestas_mensage = (empty($respuestas_mensage)) ? 0 : $respuestas_mensage;
                                $lecturas = (empty($row['
contador'])) ? 0 : $row['contador'];
                                $link = '
?ac=leer&cat=$categoria&id=$row[id]';
                               
                                         echo '
<tr>
                                                                <td style='border: 1px dotted #FFFFFF'> <a href=''.$link.'' title = ''.$row['asunto'].'''.$row['asunto'].' </a> </td>
                                                                <td style='border: 1px dotted #FFFFFF'> '.$row['autor'].'      </td>
                                                                <td style='border: 1px dotted #FFFFFF'> '.$lecturas.'     </td>
                                                                <td style='border: 1px dotted #FFFFFF'> '.$respuestas_mensage.'     </td>
                                                        </tr>';
                                }
                                echo '
</table>';
                                echo '
<br><a href='?ac=nuevo&cat='.$categoria.'' title='Postea un Mensage Nuevo'>Nuevo Mensage</a>';
                        }       
                }
       
        # Muestra todas las categorias 
        function mostrar_categorias () {
       
                echo '

                        <table width='515' border='0' >
                                <tr bgcolor='#003399'>
                                        <td align='center' width='334'>
                        <p align='left'><font color='#FFFFFF'>Foros</font></td>
                                        <td align='center' width='76'><font color='#FFFFFF'>Temas</font></td>
                                        <td align='center' width='91'><font color='#FFFFFF'>Mensages</font></td>
                                </tr> ';
                               
                $x = mysql_query('
SELECT * FROM `foro_categorias`');
                while($row=mysql_fetch_array($x)) 
               {
                        $y = mysql_query('
SELECT id from foros WHERE categoria='$row[categoria]'');
                        $z = mysql_query('
SELECT id from foros WHERE categoria='$row[categoria]' and id_padre='0'');
                      $mensages_escritos = mysql_num_rows($y);
                      $temas_escritos = mysql_num_rows($z);
 
                    echo '
<tr>
                                                <td style='border: 1px dotted #FFFFFF'> <a href='foro.php?ac=ver&cat='.$row['categoria'].''>'.$row['categoria'].' </a> </td>
                                                <td style='border: 1px dotted #FFFFFF'> '.$temas_escritos.'</td>
                                                <td style='border: 1px dotted #FFFFFF'> '.$mensages_escritos.' </td>
                                 </tr>';
               }
        }
        # Muestra el Formulario para insertar imagenes
        function formulario_ins_msg($categoria,$id) {
       
                echo '
<form action='foro.php' method='post' name='form'>
                                <input type='hidden' name='id_padre' value=''.$id.'' readonly size='20'>
                                <input type='hidden' name='categoria' value=''.$categoria.''  readonly size='20'>
                                <input type='hidden' name='ins_msg' value='ok'  readonly size='20'>
                                        <div >
                        <div align='center'>
            <label>Asunto</label>
                  <input name='asunto' size='50' maxlength='50' type='text'>


                  <label><br>
                                            Autor</label>
                                            <input name='autor' size='50' maxlength='50' type='text'>
                                 </div>
                                    </div>
                <p align='center'>
                  <label>Mensaje</label>
                       </p>
                    <div align='center'>
            <p>
                   <label>
            <textarea name='mensage' rows='9'></textarea>
</label>
            </p>
            <p>
              <label>
                  </p>
                    </div>
                             <div class='b'>
                                        <div align='center'>
                                                        <input value='Enviar Mensaje' type='submit'>
                                         <input value='Borrar' type='reset'>
            </div>
                             </div>

             <div class='b'>
                                 <div align='center'></div>
             </div>
   
                        </form>';
                       
        }
       
        function bbcode ($texto) {
       
                $texto = str_replace('
\n\r','<br>',$texto);
                $texto = str_replace('
\r\n','<br>',$texto);
                $texto = str_replace('
\n','<br>',$texto);
        $texto = eregi_replace('
\[web=([^\[]*)\]([^\[]*)\[/web\]', '<a target=\'_blank\' href=\'\1\'>\2</a>', $texto);
        $texto = eregi_replace('\[web\]([^\[]*)\[/web\]','<a target=\'_blank\' href=\'\1\'>\1</a>',$texto);
   
                        while($i < 3) {
                        $texto = eregi_replace('\[u\]([^\[]*)\[/u\]','<u>\1</u>', $texto);
                        $texto = eregi_replace('\[i\]([^\[]*)\[/i\]','<em>\1</em>', $texto);
                        $texto = eregi_replace('\[b\]([^\[]*)\[/b\]','<strong>\1</strong>', $texto);
                        $i++;
            }
   
        return $texto;
   
        }
       
        function ip ()   {
               
                if (isset($_SERVER['X_FORWARDED_FOR'])) {
                        $ip = $_SERVER['X_FORWARDED_FOR'];
                } else {
                        $ip = $_SERVER['REMOTE_ADDR'];
                           }       
                return $ip;
        }
       
################# - ESTRUCTURA - #################

        mysql_conect('localhost','user','password','dbname');
       
        if(isset($_GET['ac'])) {
       
                switch($_GET['ac']) {
                        case 'leer':
                                mostrar_mensage($_GET['id'],$_GET['cat']);
                        break;
                        case 'ver':
                                mostrar_mensages($_GET['cat']);
                        break;
                        case 'nuevo':
                                if(!isset($_GET['cat'])) { exit('Faltan Parametros'); }
                                if(!isset($_GET['idg'])) { $id = 0; } else { $id = $_GET['idg']; }
                                formulario_ins_msg($_GET['cat'],$id);
                        break;
               
                }
        } else {
       
                if($_POST['ins_msg'] == 'ok') {
                               
                                $fecha = time();
                                $ip = ip();
                                insertar_mensage($_POST['mensage'],$fecha,$ip,$_POST['id_padre'],$_POST['autor'],$_POST['asunto'],$_POST['categoria'],'foro.php');
               
                } else {
       
                                mostrar_categorias();
                }
        }
       
       
               
?>

</body>
PHP-Hispano.net - Porque al final, todos acabamos aprendiendo.