Ver Mensaje Individual
  #27 (permalink)  
Antiguo 17/10/2006, 10:23
Avatar de Erikfrancisco
Erikfrancisco
 
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Bueno pues aquí esta la respuesta a la pregunta que hicieron con respecto a como mostrar los comentarios antiguos, el código se afino un poco pero le faltan más detalles que ya irán por cuenta de ustedes como son: validaciones de las variables, es decir que el contenido este o no vacio, que tenga el email valido, etc.) modifiquenlo de acuerdo a sus necesidades y estudienlo para que cuando necesiten realizar cambios sepan donde hay que hacerlos, trate de ser lo más explicito posible para que se me entendiera, por favor lean los comentarios para que entiendan mejor lo que hace el código.

El blog consta de dos archivos: ejemplo.php (pueden guardarlo como se les antoje) que se encarga de guardar los comentarios y mostrar unos cuantos, esto según el número que ustedes pongan como limite y mascomentarios.php (a este también le pueden cambiar el nombre pero también lo deberán hacer el las líneas 59 y 63 de ejemplo.php, también en las 45 y 49 de mascomentarios.php) que se encarga de mostrar los comentarios más antiguos.

ejemplo.php
Código PHP:
<?php
$ruta 
"comentarios.txt"// ruta completa hacia el archivo que vamos a crear
if ( isset ( $_POST['submit'] ) ) // si presionaron el boton de Enviar
{
   
// Creamos nombres de variables cortos
   
$nombre $_POST['nombre'];
   
$email $_POST['email'];
   
$comentario $_POST['comentario'];
   
// convertimos a mayúsculas el comentario para que la funcion que se encarga de remplazar groserias surta efecto
   
$comentario strtr strtoupper$comentario ), 'àáâãäåæçèéêëìíîïðñòóôõöøùüú''ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÜÚ' );

   
// anexamos estos valores a una sóla variable que será la que guardaremos en nuestro archivo
   // y esta tendra como separadores de campos el símbolo "^"
   
$n_datos $nombre."^".$email."^".$comentario."^".date('j')." ".$meses[date('n')]." ".date('Y')." | ".date('g:i a')."\n";

   @ 
$fp fopen $ruta'a' ); // abrimos el archivo para adjuntar los nuevos datos
   
fwrite $fp$n_datos ); // escribimos los datos indicandole cuales son
   
fclose $fp ); // cerramos el archivo
}

$lee_archivo file $ruta ); // abrimos el archivo y lo leemos
$lee_archivo array_reverse $lee_archivo ); // invertimos el orden del array para leer los comentarios desde el último que fue guardado

if ( $lee_archivo // si existe el archivo
{
   
$numero_de_comentarios count $lee_archivo ); // no. de comentarios que han sido guardados
   // creamos un array con los nombres de los meses para guardarlos en castellano
   
$meses = array ( '0''Enero''Febrero''Marzo''Abril''Mayo''Junio''Julio''Agosto''Septiembre''Octubre''Noviembre''Diciembre');
   
$cuantos_comentarios 3// limite de comentarios que queremos mostrar en pantalla

   
$groserias = array ( 'PINCHE''CABRON' ); // disculpen las groserias pero, recuerden que las pueden poner, aquí pongan todas las que no quieran que aparezcan 

   
if ( $numero_de_comentarios $cuantos_comentarios )
   {
      
$amostrar $numero_de_comentarios;
   }
   else
   {
      
$amostrar $cuantos_comentarios;
   }

   for ( 
$e 0$e $amostrar$e++ )
   {
      
// separamos los campos nombre, email, comentario y fecha_hora obteniendo los campos de esta manera
      // $partes[0]=nombre, $partes[1]=email, $partes[2]=comentario, $partes[3]=fecha_hora si necesitan que el email se muestre solo agregen $partes[1]
      
$partes explode "^"$lee_archivo[$e] );
      echo 
"<table border=0 bgcolor=\"#DEDEDE\"><tr><td colspan=\"2\">";
      echo 
"<textarea style=\"width: 400px; height: 40px; border: 0; background-color:transparent; overflow: auto\" readonly>";
      echo 
str_replace $groserias'?@$#&'$partes[2] )."</textarea></td></tr>"// remplazamos las malas palabras que fueron escritas en el campo comentario por signos
      
echo "<tr><td>Lo dijo ".$partes[0]."</td><td align=\"right\">".$partes[3]."</td></tr></table><p>";
   }

   
$restan $numero_de_comentarios $cuantos_comentarios// cuantos comentarios nos estamos mostrando en pantalla

   
if ( $restan // hay comentarios antiguos
   
{
      if ( 
$restan $cuantos_comentarios // si los comentarios que hacen falta son menos de los que se muestran por hoja mostramos el nO. que falta por mostrar
      
{
         echo 
"<a href=\"mascomentarios.php?muestra=$cuantos_comentarios&ruta=$ruta&desde=$cuantos_comentarios\">Mostrar el(los) siguiente(s) $restan comentario(s)</a>";
      }
      else 
// mostramos otros comentarios el no. depende del limite que pusimos en la vaiable $cuantos_comentarios
      
{
         echo 
"<a href=\"mascomentarios.php?muestra=$cuantos_comentarios&ruta=$ruta&desde=$cuantos_comentarios\">Mostrar los siguientes $cuantos_comentarios comentarios</a>";
      }
   }
}
else 
// si no existe el archivo
{
   echo 
"No hay ningún mensaje guardado.<p>";
}
?>
<form name="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
Nombre:<br/><input type="text" name="nombre" size="32"><br/>
Correo:<br/><input type="text" name="email" size="32"><br/>
Comentario:<br/>
<textarea name="comentario" cols="50" rows="12"></textarea><br/>
<input type="submit" name="submit" value="Enviar">
</form>
mascomentarios.php
Código PHP:
<?php
if ( isset ( $_GET['muestra'] ) && isset ( $_GET['ruta'] ) && isset ( $_GET['desde'] ) )
{
   
$cuantos_comentarios $_GET['muestra']; // es el limite de comentarios que colocaron en este caso 3
   
$desde $_GET['desde']; // es el némuro desde el cual vamos a mostrar los mensajes
   
$ruta $_GET['ruta'];

   @ 
$lee_archivo file $ruta ); // abrimos el archivo y lo leemos
   
$lee_archivo array_reverse $lee_archivo ); // invertimos el orden del array para leer los comentarios desde el último que fue guardado

   
if ( $lee_archivo 
   {
      
$numero_de_comentarios count $lee_archivo ); // número de cuantos comentarios han sido guardados
      // creamos un array con los nombres de los meses para guardarlos en castellano
      
$meses = array ( '0''Enero''Febrero''Marzo''Abril''Mayo''Junio''Julio''Agosto''Septiembre''Octubre''Noviembre''Diciembre');
      
$restan $numero_de_comentarios $desde// cuantos comentarios nos estamos mostrando en pantalla

      
if ( $restan <= $cuantos_comentarios // si el número de comentarios que faltan es menor al limite establecido
      
{
         
$amostrar $restan $desde;
      }
      else
      {
         
$amostrar $cuantos_comentarios $desde;
      }

      for ( 
$e $desde$e $amostrar$e++ ) 
      {
         
// separamos los campos nombre, email, comentario y fecha_hora obteniendo los campos de esta manera
         // $partes[0]=nombre, $partes[1]=email, $partes[2]=comentario, $partes[3]=fecha_hora
         
$partes explode "^"$lee_archivo[$e] );
         echo 
"<table border=0 bgcolor=\"#DEDEDE\"><tr><td colspan=\"2\">";
         echo 
"<textarea style=\"width: 400px; height: 40px; border: 0; background-color:transparent; overflow: auto\" readonly>";
         echo 
str_replace $groserías'?@$#&'$partes[2] )."</textarea></td></tr>"// remplazamos las malas palabras que fueron escritas en el campo comentario por signos
         
echo "<tr><td>Lo dijo ".$partes[0]."</td><td align=\"right\">".$partes[3]."</td></tr></table><p>";
         
$quedo_en $e 1// variable que almacenara en donde se quedo el contador
      
}

      
$restan2 $numero_de_comentarios $quedo_en// nos dirá cuantos comentarios faltan por mostrar

      
if ( $restan2 // todavia hay comentarios antiguos
      
{
         if ( 
$restan2 $cuantos_comentarios // si los comentarios que hacen falta son menos de los que se muestran por hoja mostramos el nO. que falta por mostrar
         
{
            echo 
"<a href=\"mascomentarios.php?muestra=$cuantos_comentarios&ruta=$ruta&desde=$quedo_en\">Mostrar el(los) siguiente(s) $restan2 comentario(s)</a>";
         }
         else 
// mostramos otros comentarios el no. depende del limite que pusimos en la vaiable $cuantos_comentarios
         
{
            echo 
"<a href=\"mascomentarios.php?muestra=$cuantos_comentarios&ruta=$ruta&desde=$quedo_en\">Mostrar los siguientes $cuantos_comentarios comentarios</a>";
         }
      }
   }
   else
   {
      echo 
"No hay ningún mensaje guardado.<p>";
   }
}
else
{
   echo 
"No se han enviado las variables necesarias para ejecutar el archivo.";
}
?>
Bueno pues espero les sirva y les de una idea para futuras modificaciones. Suerte