Foros del Web » Programando para Internet » PHP »

mostrar mensaje cuando un .txt no existe

Estas en el tema de mostrar mensaje cuando un .txt no existe en el foro de PHP en Foros del Web. Buenas muchachos, tengo una duda, ya que yo no me doy cuenta en que estoy fallando. resulta que en una web tengo muestras de diseños, ...
  #1 (permalink)  
Antiguo 28/02/2011, 16:07
 
Fecha de Ingreso: junio-2010
Mensajes: 142
Antigüedad: 13 años, 10 meses
Puntos: 5
mostrar mensaje cuando un .txt no existe

Buenas muchachos, tengo una duda, ya que yo no me doy cuenta en que estoy fallando.

resulta que en una web tengo muestras de diseños, en la cual quiero que puedan agregar comentarios quienes las visiten.

Hasta el momento e logrado que con PHP al ingresar a uno de estos trabajos y al no existir un .txt (nombredeltrabajo.txt) aparesca el mensaje: "Aún no se han escrito comentarios sobre este trabajo".

Ok, esto en principio me funciono perfecto, ahora lo que me esta sucediendo es que ese mensaje aparece cuando el visitante aun no a escrito comentario, no s si se entiende lo que quiero decir?.

El visitante primero debe de escribir un mensaje para poder ver el resto de los mensajes que se han escrito.

Este es el codigo PHP:
Código:
<?php
if ($_REQUEST['boton']=="Comentar")
{
  $ar=fopen($_REQUEST['codigo2'].".txt","a") or
    die("Problemas en la creacion");
$div="<div class='coment'>";
$cerrardiv="</div>";
  fputs($ar,$div);
  fputs($ar,$_REQUEST['nombre']);
  fputs($ar,"\n");
  fputs($ar,$_REQUEST['comentario']);
  fputs($ar,"\n");
  fputs($ar,"--------------------------------------------------------");
  fputs($ar,"\n");
  fclose($ar);
}
else {}
if (file_exists($_REQUEST['codigo2'].".txt")) {
$art=fopen($_REQUEST['codigo2'].".txt","r") or
    die("No se pudo abrir el archivo");
  while (!feof($art))
  {
    $linea=fgets($art);
    $lineasalto=nl2br($linea);
    echo $lineasalto;
  }
  fclose($art);
} else {
    echo "Aun no existe comentarios sobre este trabajo.";
}
  ?>
Desde ya, muchas gracias!
  #2 (permalink)  
Antiguo 28/02/2011, 16:22
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: mostrar mensaje cuando un .txt no existe

creo que el problema está aqui

Código PHP:
Ver original
  1. if ($_REQUEST['boton']=="Comentar")

ahi dice algo como "si el boton pulsado"

o sea que tomas por ende que el boton tiene que ser pulsado para que mande algo, y ese es tu parametro para que se ejecute el archivo, como el usuario no ha pulsado ni enviado nada, pues el archivo no corre, debes cambiar ese parametro.
  #3 (permalink)  
Antiguo 28/02/2011, 18:09
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 1 mes
Puntos: 25
Respuesta: mostrar mensaje cuando un .txt no existe

Memoadian, ese $_REQUEST, debe ser de un formulario. Como tu dices debe activarse por alguien. Igual yo cambiaria ese REQUEST por un POST, que se activa atravez del formulario. Saludos
  #4 (permalink)  
Antiguo 28/02/2011, 18:32
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: mostrar mensaje cuando un .txt no existe

Ya se que es de un formulario.

pero al entrar a la pagina no hay ningun envio, aunque REQUEST funciona como GET y POST al ver la pagina no hay nada en REQUEST, y obvio el valor es por lo que debe cambiar esa condicional.
  #5 (permalink)  
Antiguo 28/02/2011, 19:06
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: mostrar mensaje cuando un .txt no existe

creo que lo que quieres lograr no es posible sin la ayuda de las sesiones o cookies, los usuarios deberían de registrarse que sería lo mejor, lo que pasa es que debes de tener el control del usuario para saber si él a comentado o no y asi poder mostrarle los resultados.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #6 (permalink)  
Antiguo 28/02/2011, 22:51
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: mostrar mensaje cuando un .txt no existe

en este caso no es necesario saber si el user ha comentado, lo necesario es saber si lo han hecho otros.

por que parte de un metodo de envio, para determinar si abre el archivo txt o no, lo que debe hacer es abrirlo en todos los casos, y verificar que tenga algo, si tiene algo que lo muestre, si no tiene nada que diga el mensaje de que no hay comentarios

y debe programar en otra parte el envio de comentarios, obvio puede ser en el mismo archivo

al presionar el boton comentar puede realizar la operacion abrir escribir y guardar, pero son dos procesos que no tienen que ver entre si.
uno el mostrar los comentarios y otro el registro de estos.

por eso el script está mal.
  #7 (permalink)  
Antiguo 01/03/2011, 01:53
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: mostrar mensaje cuando un .txt no existe

Si es el primer comentario, el archivo no existe y es por lo que ves ese mensaje de error. Lo unico que debes hacer es agregar la opcion de crear el archivo si no existe:

fopen('archivo.txt', 'a+');

Listo!
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 01/03/2011, 14:36
 
Fecha de Ingreso: junio-2010
Mensajes: 142
Antigüedad: 13 años, 10 meses
Puntos: 5
Respuesta: mostrar mensaje cuando un .txt no existe

Cita:
Iniciado por Triby Ver Mensaje
Si es el primer comentario, el archivo no existe y es por lo que ves ese mensaje de error. Lo unico que debes hacer es agregar la opcion de crear el archivo si no existe:

fopen('archivo.txt', 'a+');

Listo!
Antes que nada, muchas gracias a todos por el prestamo de su tiempo.

Estimado dices que agregando "+" luego del "a", solo con eso se soluciona?.

Sobre el $_REQUEST (sirve tanto para GET como para POST).

sobre la condición del if (al presionar el botón cumpla determinada función), esto puede ser que este mal, yo lo uso para no tener que crear un segundo archivo .php, osea no envió los datos a ningún lado, esta todo dentro del mismo .php (si agregar el "+" no funciona, voy a probar creando otro .php, quitar la condición de presionar el botón y crear un include al .php donde mostrará los datos del txt.

Lo otro, tengo la idea de que sea en un TXT porque realmente no estoy necesitando que alguien se registre y haga login para realizar un comentario, necesito que sea más ágil el proceso.

Cuando termine con el proyecto se los muestro.

Muchas gracias, les cuento luego.
  #9 (permalink)  
Antiguo 02/03/2011, 04:32
 
Fecha de Ingreso: junio-2010
Mensajes: 142
Antigüedad: 13 años, 10 meses
Puntos: 5
Respuesta: mostrar mensaje cuando un .txt no existe

Listo, esta solucionado, resulto ser varias cosas:
1. Separe a otro .php para que se realice el envío del formulario
ese otro .php:
Código:
<?php
$ar=fopen($_REQUEST['codigo2'].".txt","a") or
   die("Problemas en la creacion");
$div="<div class='coment'>";
$cerrardiv="</div>";
$fecha=date("D / M / Y");
  fputs($ar,$div);
  fputs($ar,"<span>".$fecha."</span>");
  fputs($ar,"\n");
  fputs($ar,$_REQUEST['nombre']." comento:");
  fputs($ar,"\n");
  fputs($ar,$_REQUEST['comentario']);
  fputs($ar,$cerrardiv);
  fclose($ar);
  Header("Location: avisos.php?codigo=".$_REQUEST['codigo2']);
?>

2. Como ven a este otro .php le agregue redireccionar nuevamente al anterior tomando el valor en "código2"
Código:
Header("Location: avisos.php?codigo=".$_REQUEST['codigo2']);
3. En el .php donde se encuentra el formulario deje en un div que muestre el .txt con los comentarios:
Código:
$art=@fopen($imagen.".txt","r") or
    die("Aún no se han escrito comentarios sobre este trabajo.");
  while (!feof($art))
  {
    $linea=fgets($art);
    $lineasalto=nl2br($linea);
    echo $lineasalto;
  }
  fclose($art);
4. La variable $imagen es tomada más arriba con un REQUEST al código generado por el enlace que lleva a este .PHP ejemplo:
Código:
<a href="images/avisos_grandes/avisos.php?codigo=nuevo_cd_cymaco_digital_21_02_11"><img src="images/avisos/nuevo_cd_cymaco_digital_21_02_11.jpg" title="CD Cymaco Repuestos Digital 21/02/2011"/></a>
5. Simplemente agregue "@" por si el archivo .txt no existe para que no muestre el horroroso mensaje del WARNING.


Por el momento fue todo, otra cosa que podría llegar a implementar es (si es que se puede) que lea el .txt desde abajo hacia arriba, pero de esta forma de igual modo estoy conforme, solo quiero ver los comentarios que deja la gente.

También pensaba en enviarme un correo avisando cuando dejaron un comentario (fácil), pero tengo poco tiempo.

Les dejo la web para que vean el resultado de todo este lío, muchas gracias a todos y un fuerte abrazo!.

http://digitaldesign.hostei.com/nuevo/images/avisos_grandes/avisos.php?codigo=Aviso_Ovacion

Etiquetas: cuando, existe, mensaje, txt
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 01:21.