Autor Tema: Ayuda ejercicio CU00837B de PHP fwrite y fopen escribir en ficheros  (Leído 7174 veces)

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Una preguntilla, que es una tonteria, pero ahora no caigo.
este es el enunciado:
a) Una función (tipo procedimiento, no hay valor devuelto) denominada escribirNumerosMod que reciba dos parámetros: un array de valores enteros y una cadena de texto que puede ser "sobreescribir" ó "ampliar". La función debe proceder a: escribir cada uno de los números que forman el contenido del array en una línea de un archivo datosEjercicio.txt usando el modo de operación que se indique con el otro parámetro. Si el archivo no existe, debe crearlo.
Ejemplo: El array que se pasa es $numeros = array(5, 9, 3, 22); y la invocación que se utiliza es escribirNumerosMod($numeros, "sobreescribir"); En este caso, se debe eliminar el contenido que existiera previamente en el archivo y escribir en él 4 líneas, cada una de las cuales contendrá los números 5, 9, 3 y 22.

Y este mi codigo:
Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
</head>
<body>
<!--escribirNumerosMod-->
<?php
$numeros = array(59322);
$sobreescribir w;
$ampliar a;
$file fopen("archivo.txt""$sobreescribir");
for ($i 0$i=4$i++){
fwrite($file$numeros[i] . PHP_EOL);
}
fclose($file);
?>

</body>
</html>
No he podido probarlo porque el hosting gratuito me esta dando problemas, pero creo que funciona.
La pregunta tonta es: ¿Como hago para poder manejar el bucle, si no supiera cuantos datos hay en el array "numeros"? Es decir, si el numero de elementos en el array fuera aleatorio, como hago para que el bucle lo recorrar entero?
Muchas gracias!
« Última modificación: 28 de Octubre 2014, 08:27 por Alex Rodríguez »

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Ayuda con entrega CU00837B de PHP
« Respuesta #1 en: 24 de Octubre 2014, 20:55 »
Vale, el código esta mal... estoy a ver si lo corrijo, porque el navegador me da error... lo que quiero saber es lo del bucle.
Gracias!

javi in the sky

  • Avanzado
  • ****
  • Mensajes: 393
    • Ver Perfil
Re:Ayuda con entrega CU00837B de PHP
« Respuesta #2 en: 25 de Octubre 2014, 14:50 »
Hola, no estás planteando correctamente el ejercicio. El ejercicio te pide que crees una función:

 "Una función (tipo procedimiento, no hay valor devuelto) denominada escribirNumerosMod "

Para crear la función tienes que definirla como:

function escribirNumerosMod (parametroArray, parametroModo) {
// Aquí el contenido de la función
}

¿Dónde estás definiendo tú la función?

Sobre la duda del for, para manejar un bucle sobre un array usa la función count explicada en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=571:count-php-funcion-recorrer-arreglos-o-arrays-uni-o-multidimensionales-con-for-y-foreach-ejemplo-cu00826b&catid=70:tutorial-basico-programador-web-php-desde-cero&Itemid=193

Saludoooos

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Ayuda con entrega CU00837B de PHP
« Respuesta #3 en: 25 de Octubre 2014, 21:15 »
Gracias javi in the sky, ahora miro como hago bien lo de la funcion ;)

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Ayuda con entrega CU00837B de PHP
« Respuesta #4 en: 26 de Octubre 2014, 10:53 »
De acuerdo, aqui tengo el codigo de la fucnion:
Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
</head>
<body>
<?php
function escribirNumerosMod ($numeros$sobreescribir) {
$file fopen("archivo.txt"$sobreescribir);
for ($i 0$i<=count($numeros); $i++){
fwrite($file"$numeros[i]PHP_EOL);
}
fclose($file);
}
escribirNumerosMod ([1,2,3,4,5], "w");
?>

</body>
</html>
El cofigo me crea el archivo txt, pero no escribe nada en el... no se donde puede estar el problem

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Ayuda con entrega CU00837B de PHP
« Respuesta #5 en: 26 de Octubre 2014, 11:30 »
Buenas otra vez, pongo el enunciado de la ultima parte del ejercicio:
c) Crea código php donde a través de la función escribirNumerosMod escribas en el fichero los números 2, 8, 14. Luego, mediante la función leerContenidoFichero muestra el contenido del fichero. Ahora con la función escribirNumerosMod amplía el contenido del fichero y añádele los números 33, 11 y 16. Muestra nuevamente el contenido del fichero por pantalla. Finalmente, escribe el fichero pasándole un array con los número 4, 99, 12 y parámetro <<sobreescribir>> para eliminar los datos que existieran previamente. Muestra el contenido del fichero por pantalla y un mensaje de despedida.

El codigo seria el siguente:
Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
</head>
<body>
<?php
function escribirNumerosMod ($numeros$sobreescribir) {
$file fopen("archivo.txt"$sobreescribir);
for ($i 0$i<=count($numeros); $i++){
fwrite($file"$numeros[i]PHP_EOL);
}
fclose($file);
}
function leerContenidoFichero ($ruta) {
$file fopen($ruta"r");
while(!feof($file)) {
echo fgets($file). "<br />";
}
fclose($file);
}
escribirNumerosMod ([2814], "w");
leerContenidoFichero ("archivo.txt");
escribirNumerosMod ([331116], "a");
leerContenidoFichero ("archivo.txt");
escribirNumerosMod ([4912], "w");
leerContenidoFichero ("archivo.txt");
echo "</br>";
echo "</br>";
echo "Hasta luego!!!";
?>

</body>
</html>
Aquí tengo un par de dudas.
Como no he conseguido que la funcion escribirNumerosMod escriba el archivo (crear lo crea, pero no escribe el array de numeros) pues no puedo comprobar el funcionamiento del programa completo.
Por otro lado la ultima parte del enunicado: "Finalmente, escribe el fichero pasándole un array con los número 4, 99, 12 y parámetro <<sobreescribir>> para eliminar los datos que existieran previamente" me hace que me pregunte que, si a la hora de ejecutarse las instrucciones, no serian los dartos del ultimo array las que se mostraria, ya que se sobreescirbe el archivo... Bueno, supongo que ya lo veré cuando consiga hacer que la funcion escriba en el archivo
Gracais!

javi in the sky

  • Avanzado
  • ****
  • Mensajes: 393
    • Ver Perfil
Re:Ayuda con entrega CU00837B de PHP
« Respuesta #6 en: 26 de Octubre 2014, 16:33 »
Hola, tienes algunos fallos en la definición y uso de la función.

Una cosa que fallaba es $numeros[ i ] no es válido porque i no es nada. Tienes que usar $numeros[$i]

Este código sí he conseguido que funcione bien:

Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
</head>
<body>
<?php
function escribirNumerosMod ($numeros$sobreescribir) {
$file fopen("archivo.txt"$sobreescribir);
for ($i 0$i<=count($numeros); $i++){
fwrite($file$numeros[$i] . PHP_EOL);
}
fclose($file);
}
escribirNumerosMod (Array(1,2,3,4,5), "w");
?>

</body>
</html>

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Ayuda con entrega CU00837B de PHP
« Respuesta #7 en: 26 de Octubre 2014, 18:18 »
Gracias javi in the sky... joder siempre me pasa cosas de estas... o no pongo $ o me equivoco y pongo &.... En fin

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".