Ver Mensaje Individual
  #11 (permalink)  
Antiguo 10/10/2015, 09:53
rbczgz
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Función de php y MySQL que no se ejecuta correctamente

Hola de nuevo,

Al fin he encontrado el problema y la solución... Y todo gracias a las indicaciones de pateketrueke...

Pongo el código por si le pudiera servir a alguien, era tan sencillo como dejar la función sin bucle ni consulta a la base de datos, ya que eso se hace al llamarla, no al crearla .

Código PHP:
<?php

//Activamos la visualización de todo tipo de errores y notificaciones
error_reporting(E_ALL);
ini_set("display_errors"1);

//Definimos zona horaria
date_default_timezone_set('Europe/Madrid');

setlocale(LC_ALL"spanish""es""es_ES@euro","es_ES","esp");

// Cargamos datos comunes a todo el sistema
require_once ("datos_sistema.php");

//creo una conexión con la base de datos
$db = new SpoonDatabase(CONTROLADORSERVIDORUSUARIOCLAVEBASE_DATOS);


define('PATH''/la_ruta_completa_al_archivo/');

$cantidad $db->getRecords("SELECT id FROM tabla");

//Cuento el total de elementos para no pasarme al actualizar los archivos
$total count($cantidad);

//Recibo y limpio las variables que legan por $_GET
if ( (isset($_GET['num1'])) && (!empty($_GET['num1'])) ) {
$maximo trim(htmlentities(strip_tags($_GET['num1'])));
}

if ( (isset(
$_GET['num2'])) && (!empty($_GET['num2'])) ) {
$minimo trim(htmlentities(strip_tags($_GET['num2'])));
}


//Aquí hago un condicional para que si me paso de 
//número en las variables que envío, se quede en el máximo
if ($maximo<=$total) {
$maximo $maximo;
} else {
$maximo $total;
}
$minimo $minimo;

//Creo la función para leer y modificar los archivos
function leer_fichero_completo($nombre_fichero$dato1_a_agregar$dato2_a_agregar){

        
//Empiezo a trabajar con el archivo (o archivos, claro)
        
if (!file_exists($nombre_fichero)) {
            echo 
"No existe el fichero";
        }
        if (!
is_writable($nombre_fichero)) {
            echo 
"El archivo no es escribible";
        }
           
//abrimos el archivo de texto y obtenemos el identificador
           
$fichero_texto fopen ($nombre_fichero"r");
           
//obtenemos de una sola vez todo el contenido del fichero
           //OJO! Debido a filesize(), sólo funcionará con archivos de texto
           
$contenido_fichero fread($fichero_textofilesize($nombre_fichero));
           
$contenido_fichero $contenido_fichero $dato1_a_agregar "\n" $dato2_a_agregar "\n"//Agrego los datos que necesito
           //Actualizamos el archivo con el nuevo valor
           
$fp fopen($nombre_fichero,"w+");
           
fwrite($fp$contenido_fichero1024);
           
fclose($fp);

   return 
$contenido_fichero;

//Fin de la función leer_fichero_completo()


//Como hay que modificar todos los archivos según los datos de la
//base de datos, hago un bucle que, por un lado obtiene los datos
//de la base de datos, y por otro lado, modifica los archivos
//correspondientes mediante la función anterior
for($i=$minimo;$i<=$maximo;$i++) { //Bucle para ejecutar la función las veces que sea necesario

                    //Hago una petición para que me muestre todos los registros de la tabla
                    //que coincidan con el id enviado, esto genera un array unidimensional
                    
$datos2 $db->getRecord("SELECT
                                                   id,
                                                   nombre_archivo,
                                                   dato1_a_agregar,
                                                   dato2_a_agregar
                                              FROM tabla
                                              WHERE id=?"
$i);
                    
                            
$nombre_archivo2 $datos2['nombre_archivo'];
                            
$dato1_a_agregar2 $datos2['dato1_a_agregar'];
                            
$dato2_a_agregar2 $datos2['dato2_a_agregar'];
                            
$ext2 ".ext";
                            
$first2 substr($nombre_archivo2,0,1);
                    
                    
                            
$nombre_fichero2 PATH $first2 ."/".$nombre_archivo2.$ext2;
                    
             
//Aquí ejecuto la función pasando los parámetros necesarios
             
$contenido leer_fichero_completo($nombre_fichero2$dato1_a_agregar2$dato2_a_agregar2);
                    
       
//Esto es una prueba para ver que los datos son correctos.
       //$contenido = $nombre_fichero2 ."<br>". $dato1_a_agregar2 ."<br>". $dato2_a_agregar2;
                    
             //Con esto notifico qué archivo se ha modificado y los datos modificados en cada archivo
             
echo $i ".- Se ha actualizado el archivo <b>" $nombre_archivo2 "</b> con los datos <b>" $dato1_a_agregar2 "</b> y <b>" $dato2_a_agregar2 "</b><br>";
                    
             
//Con esto muestro el nuevo contenido de cada archivo para ver si está correcto, esta parte se puede eliminar una vez comprobado que funciona.
             
echo "<pre>";
             echo 
$contenido;
             echo 
"</pre>";

//Fin del bucle para ejecutar la función las veces que sea necesario



?>
Muchas gracias pateketrueke por tu inestimable ayuda, que me ha hecho pensar hasta dar con la solución, tú sí que sabes ayudar.

Como dice el refrán: "Hay que enseñar a pescar, no dar el pez pescado", eso haces tú y lo haces muy bien. ¡¡¡MIL GRACIAS!!!