Foros del Web » Programando para Internet » PHP »

mensajes ordenados por antigüedad(d menos a mas)

Estas en el tema de mensajes ordenados por antigüedad(d menos a mas) en el foro de PHP en Foros del Web. Hola a todos, tengo un foro que no utiliza base de datos, sino archivos .txt, es bastante sencillo pero me va muy bien, solo hay ...
  #1 (permalink)  
Antiguo 05/02/2007, 18:09
Avatar de marijos  
Fecha de Ingreso: mayo-2004
Ubicación: Madrid
Mensajes: 241
Antigüedad: 19 años, 11 meses
Puntos: 0
mensajes ordenados por antigüedad(d menos a mas)

Hola a todos, tengo un foro que no utiliza base de datos, sino archivos .txt, es bastante sencillo pero me va muy bien, solo hay una cosa que no me gusta y me gustaria mucho poder cambiarla, no se si es posible, y es que el orden de los mensajes en la pantalla principal fuera del mas reciente al más antiguo, ya que ahora aparecen al reves, primero los más antiguos y al final los mas recientes...

Si es algo complicado que necesitais modificar el código de foro.php, yo os lo paso por aqui y me decís...

os agradezco de verdad cualquier tipo de ayuda. un saludo!!
  #2 (permalink)  
Antiguo 05/02/2007, 22:18
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: mensajes ordenados por antigüedad(d menos a mas)

Sips para eso tenemos que ver el Codigo de tu Foro.
Ya que es muy variable, es posible que en un solo fichero de texto se encuentre todos los post, o cada post tiene un archivo de texto etc etc ..

Tenemos que ver como trabajar el Script, para aplicar algun tipo de ordenamiento.

Postea el source nomas :)
  #3 (permalink)  
Antiguo 06/02/2007, 09:36
Avatar de marijos  
Fecha de Ingreso: mayo-2004
Ubicación: Madrid
Mensajes: 241
Antigüedad: 19 años, 11 meses
Puntos: 0
Re: mensajes ordenados por antigüedad(d menos a mas)

Aqui lo teneis. Es todo el codigo de foro.php. Todos los mensajes están en un archivo unico que se llama mensajes.dat... es posible hacer lo que yo digo???

gracias de antemano!!

Código PHP:
<?
// Ruta absoluta a los archivos de texto:
$postsID "id.dat";
$posts "mensajes.dat";

// Nombre del foro
$nForo "" ;

// Colores del foro
$tabla_color="#D0DDEE";
$borde_color="#24559F";
$fila1_color="#BCCEE7";
$fila2_color="#AEC4E1";

// Mostrar formulario 'si' o 'no'
$verFormulario "si";

// Login: Nombre (admin) y Pass (pass)
$loginNombre "admin";
$loginPass "admin";

function 
validarTags()  

global 
$nombre
global 
$asunto
global 
$mensaje
$nombre htmlspecialchars(trim($nombre)); 
$nombre str_replace("&","&",$nombre); 
$nombre stripslashes(str_replace("<","",$nombre)); 
$nombre strip_tags(str_replace(">","",$nombre)); 
$nombre substr(strip_tags($nombre),0,20); 
$asunto htmlspecialchars(trim($asunto)); 
$asunto str_replace("&","&",$asunto); 
$asunto stripslashes(str_replace("<","",$asunto)); 
$asunto strip_tags(str_replace(">","",$asunto)); 
$asunto substr(strip_tags($asunto),0,50); 
$mensaje htmlspecialchars(trim($mensaje)); 
$mensaje str_replace("&","&",$mensaje); 
$mensaje str_replace("<","",$mensaje); 
$mensaje str_replace(">","",$mensaje); 

$mensaje str_replace("\n","",$mensaje); 

return; 


function 
reemplazarTags() 
 {
 global 
$mensaje1;
 
$mensaje1 str_replace('''<b>'$mensaje1);
 
$mensaje1 str_replace('''</b>'$mensaje1);
 
$mensaje1 str_replace('''<i>'$mensaje1);
 
$mensaje1 str_replace('''</i>'$mensaje1);
 
$mensaje1 str_replace('''<u>'$mensaje1);
 
$mensaje1 str_replace('''</u>'$mensaje1);
 
$mensaje1 str_replace('[c]'"<font color='#004080'>"$mensaje1);
 
$mensaje1 str_replace('[/c]''</font>'$mensaje1);
 
$mensaje1 str_replace ("[tk]""<img src='imagenes/tk.gif' width='15' height='15'>"$mensaje1);
 
$mensaje1 str_replace(":)""<img src='imagenes/sonrisa.gif' >"$mensaje1);
 
$mensaje1 str_replace(":e""<img src='imagenes/icon_mad.gif' >"$mensaje1);
 
$mensaje1 str_replace(":D""<img src='imagenes/icon_confused.gif' >"$mensaje1);
 
$mensaje1 str_replace(":a""<img src='imagenes/icon_cool.gif' >"$mensaje1);
 
$mensaje1 str_replace(":8""<img src='imagenes/icon_eek.gif' >"$mensaje1);
 
$mensaje1 eregi_replace (":u""<img src='imagenes/icon_surprised.gif' >"$mensaje1);
 
$mensaje1 eregi_replace (":x""<img src='imagenes/icon_sunrise.gif' >"$mensaje1);
 
$mensaje1 eregi_replace (":k""<img src='imagenes/icon_lol.gif' >"$mensaje1);
 
$mensaje1 eregi_replace (":w""<img src='imagenes/icon_love.gif' >"$mensaje1);
 
$mensaje1 eregi_replace (":z""<img src='imagenes/icon_wtf.gif' >"$mensaje1);
 
$mensaje1 eregi_replace (":s""<img src='imagenes/icon_razz.gif' >"$mensaje1);
 
$mensaje1 eregi_replace (":j""<img src='imagenes/icon_wink.gif' >"$mensaje1);
 
$mensaje1 str_replace (":r""<img src='imagenes/icon_music.gif' >"$mensaje1);
 return;
 }

function 
escribirMensaje($posts$postsID)
 {
 global 
$nueva_id;
 
$fp fopen ($postsID"rb");
 
$id fgets($fp4096);
 
$nueva_id $id 1;
 
fclose($fp);
 
$fp fopen ($postsID"r+b");
 
flock ($fp,2);
 
fwrite($fp$nueva_id);
 
flock ($fp,3);
 
fclose($fp);
 
 
$fp fopen ($posts"ab");
 
flock ($fp,2);
 
fwrite($fp"\r\n");
 
flock ($fp,3);
 
fclose($fp);
 return;
 }
 
function 
eliminarMensaje($elArchivo$elPost)
 {
 
$i 0;
 
$archivo1 file($elArchivo);
 
$fp fopen($elArchivo"w");
 for (
$i 0$i <= sizeof($archivo1); $i++)
 {
 if (
strstr($archivo1[$i], $elPost))
 { 
 
$archivo1[$i] = "";
 }
 
fwrite($fp$archivo1[$i]);
 }
 
fclose($fp);
 return;
 }
 
// Contar temas y mensajes

$temas=0;
$mens=0;
 
$fp fopen ($posts"rb");
while (!
feof ($fp))
 {
 
$buff fgets($fp4096);
 if(
substr($buff012 )=="[nuevo_post]") {
 
$p=explode('|||^^^|||'"$buff");
 if (
$p[2]==0) {
 
$temas++;
 
$mens++;
 }
 else {
 
$mens++;
 }
 }
 }
fclose($fp);

switch(
$a)
{

// Ingrear al sistema

case "login":

 echo 
"<form action='index.php?ver_formulario=$verFormulario&a=ver_mensaje&tid=$tid' method='post'>";
 echo 
"<table border='0' cellspacing='1' cellpadding='3' width='320' bgcolor='$borde_color'><tr bgcolor='$tabla_color' style='color: #24559F'><td><b>Acceso para el Administrador</b></td></tr>";
 echo 
"<tr><td width='320' colspan='2' bgcolor='#ffffff'>";
 echo 
"<table cols='2' width='320' class='body'>";
 echo 
"<tr><td colspan='2' bgcolor='#ffffff'><img src='imagenes/tablasepara.gif' width='1' height='10'></td></tr>";
 echo 
"<tr><td width='70' valign='top'>Usuario:</td><td width='250'><input type='text' name='usuario' size='35' maxlength='12' class='input'></td></tr>";
 echo 
"<tr><td width='70' valign='top'>Password:</td><td width='250'><input type='text' name='password' size='35' maxlength='30' class='input'></td></tr>";
 echo 
"<tr><td width='320' colspan='2'></td></tr>";
 echo 
"<tr><td width='70' valign='top'></td><td width='250'><input type='submit' name='login' value='Ingresar' class='boton'><input type='reset' value='Restablecer' class='boton'></td></tr>";
 echo 
"<tr><td bgcolor='#ffffff'><img src='imagenes/tablasepara.gif' width='1' height='10'></td></tr>";
 echo 
"</table></td></tr></table></form>";
 if (!
$usuario or !$password) {
 echo 
"<a href='index.php?ver_formulario=$verFormulario&a=ver_mensaje&tid=$tid'><< Volver al mensaje</a>";
 }
 
break;
lo envio en dos trozos porque no me cabe...
  #4 (permalink)  
Antiguo 06/02/2007, 09:41
Avatar de marijos  
Fecha de Ingreso: mayo-2004
Ubicación: Madrid
Mensajes: 241
Antigüedad: 19 años, 11 meses
Puntos: 0
Re: mensajes ordenados por antigüedad(d menos a mas)

Código PHP:
// Postear un nuevo mensaje

case "postnuevo":

 
// Validar formulario
 
 
if (!$nombre or !$asunto or !$mensaje) {
 echo 
"Por favor, complete todos los campos del formuario.<br><a href='index.php?ver_formulario=$verFormulario'><< Volver al Foro</a>";
 }
 else {
 
 
escribirMensaje($posts$postsID);
 
 
// Reemplazar tags no deseados
 
 
validarTags();
 
 
// Escribir post en el archivo
 
 
if (!$nombre or !$asunto or !$mensaje) {
 
$nombre "(Ninguno)";
 
$asunto "(Ninguno)";
 }
 
$fecha=date("d-m-y");
 
$fp fopen ($posts"ab");
 
flock ($fp,2);
 
fwrite($fp"[nuevo_post]|||^^^|||$nueva_id|||^^^|||0|||^^^|||$nombre|||^^^|||$asunto|||^^^|||$fecha|||^^^|||$mensaje|||^^^|||");
 
flock ($fp,3);
 
fclose($fp);
 
 echo 
"Muchas gracias. Tu mensaje ha sido agregado.<br><a href='index.php?ver_formulario=$verFormulario' target='_top'><< Volver atrás</a>";
 }
break;


// En caso de que sea una respuesta

case "responder":

 if (!
$nombre or !$asunto or !$mensaje) {
 echo 
"Por favor, completa todos los campos del formuario.<br><a href='index.php?ver_formulario=$verFormulario&a=ver_mensaje&tid=$tid' target='_top'><< Volver al mensaje</a>";
 }

 else {

 
escribirMensaje($posts$postsID);
 
 
// Reemplazar tags...
 
 
validarTags();
 
 
$fecha=date("d-m-y");
 
$fp fopen ($posts"ab");
 
flock ($fp,2);
 
fwrite($fp"[nuevo_post]|||^^^|||$nueva_id|||^^^|||$tid|||^^^|||$nombre|||^^^|||$asunto|||^^^|||$fecha|||^^^|||$mensaje|||^^^|||");
 
flock($fp,3);
 
fclose($fp);
 
 echo 
"Muchas gracias. Tu respuesta ha sido agregada.<br><a href='index.php?ver_formulario=$verFormulario&a=ver_mensaje&tid=$tid' target='_top'><< Ver mensaje</a>";
 }
break;


// En caso de ver un mensaje

case "ver_mensaje":

 
$ahora date("d-m-y");
 
$zonahoraria date("O");
 
 echo 
"<table border='0' width='700'><tr><td align='left'><tr><td>$nForo<td align='right'>";
 if (
$usuario != $loginNombre || $password != $loginPass)
 {
 echo 
"<a href='index.php?ver_formulario=$verFormulario&a=login&tid=$tid'>Admin</a> | ";
 }
 elseif (
$usuario == $loginNombre && $password == $loginPass
 {
 
$verFormulario "no";
 }
 echo 
"<a href='index.php?ver_formulario=$verFormulario' target='_top'>Volver al Foro</a></td></tr></table>
 <table border='0' width='700' cellspacing='1' cellpadding='2' bgcolor='$borde_color'><tr bgcolor='$tabla_color' border='1' bordercolor='1' style='color:#24559F'>
 <td width='100'><b>Autor</b><td width='450'><b>Mensaje</b></td></tr>"
;
 
 
$fp fopen ($posts"rb");

 while(!
feof ($fp))
 {
 
 
$buffer fgets($fp4096);
 if (
substr($buffer012 )=="[nuevo_post]")
 {
 
$p=explode('|||^^^|||'"$buffer");
 if (
$p[1]==$tid)
 {
 
$asunto=$p[4];
 
$mensaje1 nl2br($p[6]);
 
 if (
$usuario == $loginNombre && $password == $loginPass)
 {
 
$eliminar "[ <a href='index.php?ver_formulario=$verFormulario&a=eliminar&usuario=$usuario&password=$password&tid=$tid&p1=$p[1]&p2=$p[2]&p3=$p[3]&p4=$p[4]'>Eliminar</a> ]";
 }
 
 
reemplazarTags();
 
 echo 
"<tr bgcolor='$fila1_color' border='1' bordercolor='1'><td valign='top'>
 <B>$p[3]</B><td><b>$p[4]</b><p>$mensaje1</td></tr>
 <tr bgcolor='$fila1_color' border='1' bordercolor='#ffffff'><td>$eliminar</td>
 <td>Fecha: $p[5]</td></tr>"

 }
 }
 }
 
fclose($fp);

 
$fp fopen ($posts"rb");
 
 
$color=0;
 while (!
feof ($fp))
 {
 
$buffer fgets($fp4096);
 if(
substr($buffer012 )=="[nuevo_post]")
 {
 
$p=explode('|||^^^|||'"$buffer");
 if (
$p[2]==$tid)
 {
 
$asunto substr(strip_tags($p[4]),0,30);
 
$nombre substr(strip_tags($p[3]),0,10);
 
$mensaje1 nl2br($p[6]);
 
 if (
$usuario == $loginNombre && $password == $loginPass)
 {
 
$eliminar "[ <a href='index.php?ver_formulario=$verFormulario&a=eliminar&usuario=$usuario&password=$password&tid=$tid&p1=$p[1]&p2=$p[2]&p3=$p[3]&p4=$p[4]'>Eliminar</a> ]";
 }

 
reemplazarTags();
 
 if (
$color==0) {
 echo 
"<tr bgcolor='$fila2_color' border='1' bordercolor='1'><td valign='top'><B>$nombre</B><td><B>Re: $asunto</B><p>$mensaje1</td>
 <tr bgcolor='$fila2_color' border='1' bordercolor='#ffffff'><td>$eliminar</td><td>Fecha: $p[5]</td></tr>"
;
 
$color=1;
 }
 else {
 echo 
"<tr bgcolor='$fila1_color' border='1' bordercolor='1'><td valign='top'><B>$nombre</B><td><B>Re: $asunto</B><p>$mensaje1</td>
 <tr bgcolor='$fila1_color' border='1' bordercolor='#ffffff'><td>$eliminar</td><td>Fecha: $p[5]</td></tr>"
;
 
$color=0;
 }
 }
 }
 }
 
fclose($fp);
 echo 
"</table><table width='700'><tr><td></tr></td>";
 echo 
"<tr><td align='right'><A HREF='index.php?ver_formulario=$verFormulario'>Volver al Foro</A></tr></td></table>";
 
 
// Formulario de respuesta
 
 
if ($verFormulario == "si" && $tid != "")
 {
 echo 
"<form action='index.php?ver_formulario=$verFormulario&a=responder' method='post'>";
 echo 
"<table border='0' cellspacing='1' cellpadding='3' width='550' bgcolor='$borde_color'><tr bgcolor='$tabla_color' style='color:#24559F'><td><b>Responder al mensaje:</b> $asunto</td></tr>";
 echo 
"<tr><td width='550' colspan='2' bgcolor='#ffffff'>";
 echo 
"<table cols='2' width='550' class='body'>";
 echo 
"<tr><td colspan='2' bgcolor='#ffffff'><img src='imagenes/tablasepara.gif' width='1' height='10'></td></tr>";
 echo 
"<tr><td width='100' valign='top'>Nombre:</td><td width='450'><input type='text' name='nombre' size='55' maxlength='12' class='input'></td></tr>";
 echo 
"<tr><td width='100' valign='top'>Mensaje:</td><td width='450'><textarea name='mensaje' rows='8' cols='54' class='input'></textarea></td></tr>"
 echo 
"<tr><td width='550' colspan='2'></td></tr>";
 echo 
"<tr><td width='100' valign='top'></td><td width='450'><input type='submit' name='responder' value='Responder mensaje' class='boton'><input type='reset' value='Restablecer' class='boton'></td></tr>";
 echo 
"<input type='hidden' name='tid' value='$tid'><input type='hidden' name='asunto' value='$asunto'>";
 echo 
"<tr><td bgcolor='#ffffff'><img src='imagenes/tablasepara.gif' width='1' height='10'></td></tr>";
 echo 
"</table></form></td></tr></table>";
 }
break;


// Eliminar mensaje

case "eliminar":

 if (
$usuario == $loginNombre && $password == $loginPass){
 if (
$p1 != "" && $p2 != "" && $p3 != "" && $p4 != ""){
 
$elPost "[nuevo_post]|||^^^|||$p1|||^^^|||$p2|||^^^|||$p3|||^^^|||$p4|||^^^|||";
 
eliminarMensaje($posts$elPost);
 echo 
"Listo. El mensaje ha sido eliminado.<br><a href='index.php?ver_formulario=$verFormulario&a=ver_mensaje&tid=$tid&usuario=$usuario&password=$password' target='_top'><< Volver al mensaje</a>";
 }
 }
 else 
 {
 echo 
"<font color='#ff0000'><b>Error! El sistema no lo ha identificado.</b></font><br>";
 echo 
"<a href='index.php?ver_formulario=$verFormulario&a=ver_mensaje&tid=$tid' target='_top'><< Volver al mensaje</a>";
 }
break; 
Con esto ya está todo... a ver que se puede hacer... muchas gracias de verdad!!
  #5 (permalink)  
Antiguo 06/02/2007, 11:54
Usuario no validado
 
Fecha de Ingreso: julio-2003
Ubicación: <?="www.tuky.cl";?>
Mensajes: 132
Antigüedad: 20 años, 9 meses
Puntos: 4
Re: mensajes ordenados por antigüedad(d menos a mas)

mmm, tu script recorre el archivo tomando 4096 caracteres por lectura.. y lo recorre desde el principio hasta el final.... la solucion seria recorrerlo al reves.. del final al principio... pero no se como hacerlo... quizás usando un archivo dat auxiliar...


es la idea, no se como implementarlo.... no manejo muy bien esto de leer ficheros desde php... saludos
  #6 (permalink)  
Antiguo 06/02/2007, 16:30
Avatar de marijos  
Fecha de Ingreso: mayo-2004
Ubicación: Madrid
Mensajes: 241
Antigüedad: 19 años, 11 meses
Puntos: 0
Re: mensajes ordenados por antigüedad(d menos a mas)

y eso es muy chungo de hacer?...

gracias!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:36.