Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/08/2006, 03:46
Mr. Outer
 
Fecha de Ingreso: agosto-2006
Mensajes: 8
Antigüedad: 17 años, 8 meses
Puntos: 0
Intentando crear un tag-board

Hola, hace ya un tiempo que estoy intentando crear un tag-board usando POO, pero lo unico que hice fue un codigo realmente malo, por lo que queria describir lo que quiero hacer, por si alguien me puede facilitar un codigo que cumpla con lo que quiero para poder estudiarlo. Tambien voy a poner mi codigo mas abajo, aunque creo que lo mejor va a ser un codigo totalmente nuevo, por que el mio esta muy mal, pero lo pongo por si agluien quiere marcarme errores.

Lo que quiero hacer es bastantente simple. Un tag-board (con mysql) usando POO que acepte un numero maximo de mensajes (por ejemplo 20) y vaya acomodando los mensajes en la base de datos (una tabla que tendria 20 filas) y el script lo imprima de mensaje mas nuevo a mas viejo. Y lo mas dificil (no debe ser muy dificil, pero para mi lo es), cuando la tabla que este llena y un usuario quiera ingresar un mensaje, que el mensaje mas viejo sea borrado para dejar lugar al mensaje recien ingresado.

Basicamente es eso. Ahora les dejo mi codigo. Para que "funcione" (entre comillas por que realmente no funciona) tienen que tener una base de datos con 3 columnas, la primera llamada "numero" que seria el id de la fila, la segunda "nombre" que es el nombre de la persona que ingreso el mensaje, y la tercera "mensaje" que es el mensaje en si.

Por ultimo aclaro que el codigo no me da ningun error, simplemente no hace lo que deberia hacer, probe depurarlo de mil maneras, pero parece que no tiene arreglo, por eso creo que es mejor hacer uno desde cero.

Código PHP:
<?php
class insertarMensaje {
    private 
$dblink$filas/* variables para almacenar el enlaze a mysql y la cantidad de filas que esta tiene la base de datos */
    
    
public function conectar($host$user$pass$db) { /* constructor que sirve para conectar con la base de datos */
        
$this->dblink mysql_connect($host$user$pass);
    
mysql_select_db($db$this->dblink);
    }
    
    public function 
buscarEspacio($nombre$mensaje$tabla$cantidadFilas) { /* metodo que busca espacio en la base de datos */
        
echo $nombre." ".$mensaje;
        
$this->filas $cantidadFilas// guarda la cantidad de filas que tiene la base de datos
        
$sql "select nombre from '$tabla' where numero = $cantidadFilas";
    for (;(
$resultado mysql_query($sql)); $cantidadFilas--) { /* hace una consulta a cada fila, desde la ultima a la primera hasta que encuentre un espacio libre o no queden mas filas*/
        
$fila mysql_fetch_assoc($resultado);
        if (
$fila['nombre'] == '') { /* si la columna nombre esta vacia llama al metodo insertar y termina el bucle */
            
$this->insertar($nombre$mensaje$tabla$cantidadFilas);
        break;
            }
        }
    if (
$cantidadFilas 0/* si cantidadFilas es menor que 0 significa que no hay espacio disponible en la base de datos, por lo que llama al metodo hacerEspacio */
        
$this->hacerEspacio($nombre$mensaje$tabla);
    }
    
    public function 
hacerEspacio($nombre$mensaje$tabla) { /* mueve los datos de una fila a la fila que le sigue, por ejemplo, los datos de la fila 2 seran movidos a la fila 3, para asi eliminar los datos de la ultima fila y dejar libre la primer fila (0) para insertar los datos nuevos */
        
echo $nombre." ".$mensaje;
    
$filaNum $this->filas;
    for (;
$filaNum >= 1$filaNum--) {
        
$filaInferior $filaNum 1;
        
$sql "select * from '$tabla' where numero = $filaInferior";
        
$resultado mysql_query($sql); /* copia los datos de una fila, como por ejemplo puede ser la fila numero 2 */
        
$fila mysql_fetch_assoc($resultado);
        
$nombre $fila['nombre'];
        
$mensaje $fila['mensaje'];
        
$sql "update mensajes set nombre = '$nombre' where numero = $filaNum";
        
mysql_query($sql);  /* inserta el valor de la columna nombre que copio anterirmente, siguiendo con el ejemplo anterior, se insertaria en la fila numero 3 */
        
$sql "update mensajes set mensaje = '$mensaje' where numero = $filaNum";
        
mysql_query($sql); /* igual que el anterior pero con la columna mensaje */
    
}
    
$this->insertar($nombre$mensaje$tabla0); //al terminar de mover todas las filas llama a la funcion insertar
    
}
    
    public function 
insertar($nombre$mensaje$tabla$fila) {
        echo 
$nombre." ".$mensaje;
        
$sql "update mensajes set nombre = '$nombre' where numero = $fila";
    
mysql_query($sql); /* inserta el valor de nombre en la columna correspondiente */
    
$sql "update mensajes set mensaje = '$mensaje' where numero = $fila";
    
mysql_query($sql); /* igual que el anterior pero con el mensaje */
    
}
}
if(isset(
$_POST['nombre']) && isset($_POST['mensaje']) && isset($_POST['host']) && isset($_POST['user']) && isset($_POST['db']) && isset($_POST['tabla']) && isset($_POST['filas'])) {
$nombre $_POST['nombre'];
$mensaje $_POST['mensaje'];
$host $_POST['host'];
$user $_POST['user'];
$pass $_POST['pass'];
$db $_POST['db'];
$tabla $_POST['tabla'];
$filas $_POST['filas'];

$board = new insertarMensaje;
$board->conectar($host$user$pass$db);
$board->buscarEspacio($nombre$mensaje$tabla$fila);
}
else {
?>
<form action="tagpoo.php" method="post">
<h3>Datos a introducir:</h3>
<p>Nombre: <input type="text" name="nombre" /></p>
<p>Mensaje: <input type="text" name="mensaje" /></p>
<h3>Datos de la base de datos:</h3>
<p>Host: <input type="text" name="host" /></p>
<p>Usuario: <input type="text" name="user" /></p>
<p>Password: <input type="text" name="pass" /></p>
<p>Base de datos: <input type="text" name="db" /></p>
<p>Tabla: <input type="text" name="tabla" /></p>
<p>Cantidad de filas: <input type="text" name="filas" /></p>
<input type="submit" value="Enviar" />
</form>
<?php
}
?>
Desde ya muchas gracias por cualquier recomendacion, codigo o cualquier cosa con la que me ayuden