Ver Mensaje Individual
  #39 (permalink)  
Antiguo 13/11/2006, 16:25
Avatar de Erikfrancisco
Erikfrancisco
 
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 21 años, 5 meses
Puntos: 4
Cita:
Iniciado por fanny0 Ver Mensaje
Tengo otra pregunta.... quiero saber como puedo colocar un vinculo al libro de comentarios que diga "COMENTARIOS (5)" Y ME DIGA EN EL VINCULO LA CANTIDAD DE COMENTARIOS QUE EXISTEN DENTRO DEL LIBRO
Mira, en el archivo ejemplo.php deberías agregar una función javascript para que te jale el número de comentario que quieres ver y a su vez te redireccione a al archivo que te mostrara ese comentario, comentario_especifico.php por decir algo:
Código PHP:
   <script languaje="javascript">
   function 
redireccion()
   {
      
window.open'comentario_especifico.php?num_comentario=' document.form.num_comentario.value );
   }
   
</script> 
y también agregarías el campo donde el usuario escribiria el número de comentario que quiere ver:
Código PHP:
<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"><p>
Escriba el número de comentario que desea ver: <input type="text" name="num_comentario" size="3">
<input type="button" value="Ver" onclick="redireccion()">
</form>
Con lo que el archivo ejemplo.php quedaría de esta forma:
ejemplo.php
Código PHP:
<html>
<head>
   <script languaje="javascript">
   function redireccion()
   {
      window.open( 'comentario_especifico.php?num_comentario=' + document.form.num_comentario.value );
   }
   </script>
</head>
<body>
<?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"><p>
Escriba el número de comentario que desea ver: <input type="text" name="num_comentario" size="3">
<input type="button" value="Ver" onclick="redireccion()">
</form>
</body>
</html>
Y obviamente tambien tendrías que hacer el archivo comentario_especifico.php para que se encargue de mostrar el comentario que el usuario solicito:
comentario_especifico.php
Código PHP:
<?php 
if ( isset ( $_GET['num_comentario'] ) ) // si se envio por metodo Get el número de comentario

   
$ruta "comentarios.txt"// ruta completa hacia el archivo que vamos a crear 
   
$num_comentario $_GET['num_comentario']; //esta será la variable que nos indicara que comentario buscar

   
$lee_archivo file $ruta ); // abrimos el archivo y lo leemos 

   
if ( $lee_archivo // si existe el archivo 
   

      
$numero_de_comentarios count $lee_archivo ); // no. de comentarios que han sido guardados 

      
if ( $numero_de_comentarios $num_comentario )
      {
         echo 
"El número de comentario: ".$num_comentario." no existe.";
         exit;
      }

      
// 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'); 

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

      
echo "Este es el comentario No. <b>".$num_comentario."</b> de <b>".$numero_de_comentarios."</b> comentarios que estan guardados en el libro ".$ruta."<br/>"// mostramos el comentario que deseamos y el número de comentarios que existe en total

      
for ( $e = ( $num_comentario ); $e $num_comentario$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 
      
}
   }
}
else
{
   echo 
"No se envio un número de comentario para verlo. Por favor intentelo nuevamente";
}
?>
Como vez es muy sencillo, para obtener el número total de comentarios sólo tienes que hacer uso de la variable $numero_de_comentarios. Tambien debes de tener el archivo mascomentarios.php que ya habiamos hecho en este mismo post. Bueno, espero que esto te haya funcionado y que sea lo que necesitabas. Cualquier duda hazmela saber, aunque me tarde un poquito en contestar debido a que probablemente me encuentre ocupado pero que a fin de cuentas yo lo checaré o algún otro forista que desee ayudarte. Suerte