Ver Mensaje Individual
  #5 (permalink)  
Antiguo 09/10/2015, 15:09
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 pateketrueke,

Muchas gracias por responder y por tomarte el tiempo de leer mi código (aunque no se entienda... ) Yo tengo la mala costumbre de separar mediante líneas en vez de indentar, malos vicios que va adquiriendo uno...

Te copio de nuevo el código a ver si ahora se ve más claro, si ves que aún así no se entiende, dime cómo o qué necesitas que aclare o cambie y lo hago.

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){

  global 
$minimo$maximo$db;

    
//Como hay que modificar todos los archivos según los datos de la
    //base de datos, hago un bucle que obtiene los datos de la base de datos

    
for($i=$minimo;$i<=$maximo;$i++) { //bucle que obtiene los datos

               //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
               
$datos $db->getRecord("SELECT
                                             id,
                                             nombre_archivo,
                                             dato1_a_agregar,
                                             dato2_a_agregar
                                        FROM tabla
                                        WHERE id=?"
$i);
               
               
               
//Paso los datos recibidos a variables
               
$nombre_archivo $datos['nombre_archivo'];
               
$dato1_a_agregar $datos['dato1_a_agregar'];
               
$dato2_a_agregar $datos['dato2_a_agregar'];
               
$ext ".ext";
               
$first substr($nombre_archivo,0,1);
    } 
//Fin del bucle que obtiene los datos

   //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>";
             
//En esta línea muestra los datos que deben ser, pero en el contenido de cada archivo, no
                    
                    
             //Con esto muestro el nuevo contenido de cada archivo para ver si está correcto.
             
echo "<pre>";
             echo 
$contenido;
             echo 
"</pre>";
             
//Aquí es donde veo que el contenido de cada archivo no es correcto, lo explico fuera del código

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



?>
Espero que ahora sí me puedas echar un cable porque estoy "más perdido que un pato en un garaje"

Muchas gracias de nuevo.