Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/07/2013, 13:12
G3nH4ck
 
Fecha de Ingreso: julio-2013
Ubicación: Córdoba
Mensajes: 84
Antigüedad: 10 años, 9 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!