Cita:
Iniciado por fanny0
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 > 0 ) // 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 - 1 ); $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