Foros del Web » Programando para Internet » PHP »

Problema almacenar datos en archivos .txt

Estas en el tema de Problema almacenar datos en archivos .txt en el foro de PHP en Foros del Web. Buenas, estoy siguiendo el famoso curso de 0utkast y parece ser que los ejercicios están desactualizados con las nuevas versiones de PHP. Ahora mismo tengo ...
  #1 (permalink)  
Antiguo 22/07/2013, 13:12
 
Fecha de Ingreso: julio-2013
Ubicación: Córdoba
Mensajes: 84
Antigüedad: 11 años, 4 meses
Puntos: 0
Problema almacenar datos en archivos .txt

Buenas, estoy siguiendo el famoso curso de 0utkast y parece ser que los ejercicios están desactualizados con las nuevas versiones de PHP. Ahora mismo tengo un problema y es que no consigo que el envío de un formulario quede almacenado en un archivo .txt . Me da el mensaje predeterminado que esta programado para que salte cuando se cumple el if (!$fp). Os pongo el código HTML y PHP completo para ver si me podéis ayudar:

Código:
<HTML>
	<HEAD>
		<TITLE>LIBROS LIBRES</TITLE>
		<META http-equiv=Content-Type content="text/html; charset=windows-1252">
		<META content="MSHTML 6.00.2800.1458" name=GENERATOR>
	</HEAD>

	
	<BODY>
		<H1>Libros Libres</H1>
		<H2>Formulario de pedido</H2>
		<FORM action=procesarpedidos.php method=post>
			<TABLE border=0>
				<TBODY>
					<TR bgColor=#cccccc>
					    <TD width=150>Libro</TD>
					    <TD width=15>Cantidad</TD></TR>
				  	<TR>
					    <TD>ActionScript</TD>
					    <TD align=left><INPUT maxLength=3 size=3 name=actionqty></TD>
					</TR>

				  	<TR>
					    <TD>Photoshop</TD>
					    <TD align=left><INPUT maxLength=3 size=3 name=photoqty></TD>
					</TR>

				  	<TR>
					    <TD>Flash</TD>
					    <TD align=left><INPUT maxLength=3 size=3 name=flashqty></TD>
					</TR>

				  	<TR>
					    <TD>Dirección de envío</TD>
					    <TD align=middle><INPUT maxLength=40 size=40 name=direcc></TD>
				    </TR>

				  	<TR>
				    	<TD align=middle colSpan=2><INPUT type=submit value="Enviar pedido"></TD>
				  	</TR>
				</TBODY>
			</TABLE>
		</FORM>
	</BODY>
</HTML>

Código:
<html>
<head>
  <title>Resultado de pedido de la librería</title>
</head>
<body>
<h1>Libros Libres</h1>
<h2>Resultado del pedido</h2>
<?php
  $actionqty = $_POST['actionqty']; 
  $photoqty = $_POST['photoqty']; 
  $flashqty = $_POST['flashqty'];
  $direcc = $_POST['direcc'];


  $totalqty = 0;
  $totalqty += $actionqty;
  $totalqty += $photoqty;
  $totalqty += $flashqty;

  
  $totalamount = 0.00;

  define("ACTIONPRICE", 100);
  define("PHOTOPRICE", 10);
  define("FLASHPRICE", 4);

  $date = date("H:i, j F");

  echo "<p>Orden procesada a las ";
  echo $date;
  echo "<br>";
  echo "<p>Usted nos ha hecho el siguiente pedido:";
  echo "<br>";

  if( $totalqty == 0 )
  {
    echo "¡ No ha hecho ningún pedido en el formulario previo!<br>";
  }
  else
  {
    if ( $actionqty>0 )
      echo $actionqty." actionscript<br>";
    if ( $photoqty>0 )
      echo $photoqty." photoshop<br>";
    if ( $flashqty>0 )
      echo $flashqty." flash<br>";
  }

  $total = $actionqty * ACTIONPRICE + $photoqty * PHOTOPRICE + $flashqty * FLASHPRICE;
  $total=number_format($total, 2, ".", " ");

  echo "<P>El total de su pedido es ".$total."</p>";

  echo "<P>La dirección de envío es ".$direcc."<br>";

  $stringsalida = $date."\t".$actionqty." actionscript \t".$photoqty." photoshop\t"
                  .$flashqty." flash\t\$".$total
                  ."\t". $direcc."\n";

  // abrir fichero añadiendo
 $fp = fopen("../pedidos/pedidos.txt", "a");

@  flock($fp, 2);

  if (!$fp)
  {
    echo "<p><strong> Su orden no ha podido ser procesada en este momento.  "
         ."Por favor inténtelo de nuevo más tarde.</strong></p></body></html>";
    exit;
  }

  fwrite($fp, $stringsalida);
  flock($fp, 3);
  fclose($fp);

  echo "<p>Su orden ha sido recibida y guardada.</p>";

?>
</body>
</html>

El error que me salta es este:

SCREAM: Error suppression ignored for
( ! ) Warning: fopen(../pedidos/pedidos.txt): failed to open stream: No such file or directory in C:\wamp\www\CursoPHP+MySQL\EjerciciosVT07\procesar pedidos.php on line 61


Y decir que el archivo pedidos está guardado en la carpeta padre de donde está giardado los mismos archivos php y html. de ahí que la ruta que he puesto es esta:

$fp = fopen("../pedidos/pedidos.txt", "a");

¿Eso está bien verdad?

En fin, a ver si lo he dejado todo lo suficientemente claro como para que me podáis ayudar.

Gracias de antemano!
  #2 (permalink)  
Antiguo 22/07/2013, 14:03
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 19 años, 1 mes
Puntos: 56
Respuesta: Problema almacenar datos en archivos .txt

y la carpeta "pedidos" existe en un nivel superior a la página "procesar pedidos.php" ??
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #3 (permalink)  
Antiguo 22/07/2013, 14:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Problema almacenar datos en archivos .txt

Pues sí te fijas, muy bien te dice, que no existe el archivo que quieres abrir, verifica la ruta ya que esa es la causa de tu problema.

Saludos.
  #4 (permalink)  
Antiguo 22/07/2013, 14:46
 
Fecha de Ingreso: julio-2013
Ubicación: Córdoba
Mensajes: 84
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Problema almacenar datos en archivos .txt

Cita:
Iniciado por GatorV Ver Mensaje
Pues sí te fijas, muy bien te dice, que no existe el archivo que quieres abrir, verifica la ruta ya que esa es la causa de tu problema.

Saludos.
Cita:
Iniciado por jcxnet Ver Mensaje
y la carpeta "pedidos" existe en un nivel superior a la página "procesar pedidos.php" ??
Pues aún no ser que haya entendido mal las rutas, que a estas alturas me soprendería, creo que está todo correcto. De todas maneras, una imágen vale más que mil palabras:

http://img46.imageshack.us/img46/


Por otra parte, según el curso, decían que uno de los problemas más habituales es la falta de permisos para escribir en las carpetas. He probado en las mismas dando click derecho/propiedades y me sale que está seleccionado "sólo lectura", como veis en la imagen:

http://img707.imageshack.us/img707/9715/3f0u.jpg

No sé si ese es el problema, pero aunque lo deselecciono y guardo, cuando vuelvo a mirar las propiedades vuelve a salir seleccionado.

En fin, ya me contais vosotros...
  #5 (permalink)  
Antiguo 22/07/2013, 14:50
 
Fecha de Ingreso: julio-2013
Ubicación: Córdoba
Mensajes: 84
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Problema almacenar datos en archivos .txt

Juas, acabo de darme cuenta de que soy subnormal profundo XD. Nada que se me había olvidado crear la carpeta pedidos y meter dentro el archivo pedidos.txt. Como era la primera vez que hacía este ejercicio lo primero que pensé es que me había equivocado yo en algo del código...

Siento haceros perder el tiempo en estupideces xd

Etiquetas: almacenar, formulario, html, sql, 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 13:00.