Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: paramonso en 25 de Julio 2017, 19:33

Título: PHP. Leer y escribir archivos de texto. fopen, fgets, fputs, fclose... CU00836B
Publicado por: paramonso en 25 de Julio 2017, 19:33
Hola. Hago entrega del ejercicio CU00836B del curso básico de programación web con PHP usando Notepad++ como editor. Función fopen (modo), fgets, fputs, fclose y feof.

Enlace:http://paramonso.byethost7.com/Ejercicio36(CU00836B).php (http://paramonso.byethost7.com/Ejercicio36(CU00836B).php)

Codigo HTML, PHP :

Código: [Seleccionar]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<title>PHP Desde cero aprenderaprogramar.com</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="generator" content="Geany 1.27" />
<style type="text/css">
      body{  background-color:yellow; color:white;}
      h1, h2{
  text-align:center;
  color:green;
  margin:0;
  padding:0;
  }
      div{
text-align:left;
background-color:black;
height:350px;
width:500px;
padding:10px;
margin:10px auto;
}
p{
text-align:center;
font-weight: bold;
font-size:20px;
padding:1px;
margin:0px auto;
}
</style>
</head>

<body>

  <h1>Ejercicio36(CU00836B).php</h1>
<h2>Leer y escribir archivos de texto con PHP.<br/>
Función fopen (modo), fgets, fputs, fclose y feof. </h2>

<?php

echo '<div><br/>';

// Llamada a la funcion apartado a)
$num =array(121,232,535.55 );
$fp fopen("datosEjercicio.txt""w");
 
escribirTresNumeros($num,$fp);
fclose($fp);

// Llamada a la funcion apartado b)
$fp fopen("datosEjercicio.txt""r");
$resultado=obtenerSuma($fp,$TotalSuma);
fclose($fp);
echo 
"<p> Apartado b)<br/> 
El resultado de la suma es = "
.$resultado."<br/>
<br/>Apartado c)<br/></p>"
;
// Llamada a la funcion apartado c)
$fp fopen("datosEjercicio.txt""r");
$resultado =obtenerArrNum($fp,$Array);
 
for(
$i=0;$i<count($resultado)-1;$i++) {
echo 
"<p>El indice $i =".$resultado[$i].'</p>';
}
fclose($fp);

// Llamada a la funcion apartado d)
echo "<p><br/>Apartado d)</p>";
$num =array(2,8,14 );
$fp fopen("datosEjercicio2.txt""w");
 
escribirTresNumeros($num,$fp);
fclose($fp);

$fp fopen("datosEjercicio2.txt""r");
$resultado=obtenerSuma($fp,$TotalSuma);
 Echo 
"<p>El resultado de la suma es = ".$resultado."</p>";

rewind($fp );
$res =obtenerArrNum($fp,$Array); 
for(
$i=0;$i<count($res)-1;$i++) {
echo 
"<p>El indice $i =".$res[$i]."</p>";
}
fclose($fp);
echo 
'<br/>';

echo 
'</div>';

//>>>>>>>>>>>>>>>>>>>>>>>>>>>> FUNCIONES <<<<<<<<<<<<<<<<<<<<<<<<
//Funcion apartado a)
function escribirTresNumeros($a,$Fichero)
{
foreach($a as $valor
{
$n=$valor;
fputs($Fichero,$n.chr(13).chr(10));
 
}
}

//Funcion apartado b)
function obtenerSuma($a,$suma)
{
$m=0;
while(!feof($a)) 
{
   $linea fgets($a);
 
$suma=$suma+$linea;
}
return $suma;
}

//Funcion apartado c)
function obtenerArrNum($a,$matriz)
{
$m=0;
while(!feof($a)) 
{
    $linea fgets($a);
 
$matriz[$m]=$linea;
 
$m++;
  
}
return $matriz;

}
?>

 <p>
  <a href="http://validator.w3.org/check?uri=referer">
  <img Src = "http://www.w3.org/Icons/valid-xhtml10" alt = "Valid XHTML 1.0 Strict" height = "31" width = "88" />
  </a>
</p>
</body>

</html>

Hasta luego ::)
Título: Re:Entrega Ejercicio36(CU00836B).php
Publicado por: pedro,, en 27 de Julio 2017, 00:38
Buenas.

Cosas a corregir:

El código quedaría mejor ordenado si la apertura y cierre de los archivos se hicieran dentro de cada función, quedando fuera de las funciones sólo el código necesaria para hacer las llamadas a las funciones y mostrar los resultados.

Cuando llamas a la función obtenerSuma, le pasas dos parámetros, uno con la ruta del archivo y otro que llamas $TotalSuma que no tiene ningún valor puesto que anteriormente no lo has definido, en la función obtenerArrNum te pasa igual, la variable $Array no contiene nada.


Saludos. ;D
Título: Re:Entrega Ejercicio36(CU00836B).php
Publicado por: paramonso en 27 de Julio 2017, 11:52
Hola.

Citar
El código quedaría mejor ordenado si la apertura y cierre de los archivos se hicieran dentro de cada función, quedando fuera de las funciones sólo el código necesaria para hacer las llamadas a las funciones y mostrar los resultados.

Si.

Debería haberlo hecho así.
Pero pienso que las funciones son algo especializado dentro de  la programación y hubiera sido mejor crear una función de apertura de ficheros y otra de cierre.

Y no he querido complicarme ya que solo es para presentar un ejercicio y lo importante en este caso es que se haga la apertura y el cierre del fichero, y prefiero que esten juntos para que no se me olvide.

De todas la maneras gracias por la corrección.

Citar
Cuando llamas a la función obtenerSuma, le pasas dos parámetros, uno con la ruta del archivo y otro que llamas $TotalSuma que no tiene ningún valor puesto que anteriormente no lo has definido, en la función obtenerArrNum te pasa igual, la variable $Array no contiene nada.

Según tengo entendido en PHP no hace falta declarar o iniciar las variables como en otros lenguajes (Vbasic, c++, etc..).

No las declare al principio del programa por este motivo.

Y dentro de la función y al salir de ella hacen su trabajo aunque no estén declaradas.

La correcciòn que me haces es correctisima ya que si pierdo el hábito de declarar variables luego con otros lenguajes tendré problemas.

De todas las maneras en adelante intentaré declarar las variables para no perder la costumbre y estructurar bien el código.

Gracias.
Título: Re:Entrega Ejercicio36(CU00836B).php
Publicado por: pedro,, en 27 de Julio 2017, 13:15
Buenas.

Como bien dices en php no es necesario declarar ni iniciar las variables, hasta ahí todo bien.

Lo que quería decir, es
¿que sentido tiene que mandes un parámetro a una función del cuál no se va hacer uso, en este caso?

Porque en la función obtenerSuma estás mandado el valor que contenga "$TotalSuma", es decir, nada. Además de que no comete ninguna tarea dentro de la función.


Saludos. ;D
Título: Re:PHP. Leer y escribir archivos de texto. fopen, fgets, fputs, fclose... CU00836B
Publicado por: paramonso en 27 de Julio 2017, 18:29
Hola.

Ahora dijo gua.

Citar
Lo que quería decir, es
¿que sentido tiene que mandes un parámetro a una función del cuál no se va hacer uso, en este caso?

Porque en la función obtenerSuma estás mandado el valor que contenga "$TotalSuma", es decir, nada. Además de que no comete ninguna tarea dentro de la función.

Ningún sentido.

Ya que esas variables aunque tuvieran algún dato no salen de la función pero por inercia en otros lenguajes se ponen las variables que ha de salir de la función y no medi cuenta que en PHP vuelven con return.

O craso error
Cracias. :-[
 ;D