Foros del Web » Programando para Internet » PHP »

Problemas con require/include dentro de while

Estas en el tema de Problemas con require/include dentro de while en el foro de PHP en Foros del Web. Me explico: Tengo un código php en el que estoy intentando manejar un while, os expico: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $array2 ; //suponemos ...
  #1 (permalink)  
Antiguo 12/08/2013, 08:01
 
Fecha de Ingreso: diciembre-2009
Ubicación: Sevilla
Mensajes: 49
Antigüedad: 14 años, 4 meses
Puntos: 0
Problemas con require/include dentro de while

Me explico:

Tengo un código php en el que estoy intentando manejar un while, os expico:

Código PHP:
Ver original
  1. $array2;//suponemos que este array tiene contenido
  2. $array1;// suponemos que este array tiene contenido.
  3. $diffe_array = array_diff($array2, $array1);
  4.  
  5. //CREATE THE CONDICTION
  6. $diffe=count($diffe_array);
  7. do {
  8.      $lastone=end($diffe_array);
  9.      require('./Step0.php');
  10.      $extract=array_pop($diffe_array);
  11.      $diffe=count($diffe_array);
  12.      print_r($diffe_array);
  13. } while ($diffe > 0);
  14.  
  15. echo 'JUST YOU HAVE 0 ITEMS IN YOUR ARRAY!!!!';

Os aclaro paso por paso:

Paso1.- Tengo por ejemplo estos dos arrays:

array2 ( [0] => 00004.csv [1] => 00007.csv [2] => 00005.csv [3] => 00003.csv [4] => 00002.csv [5] => 00001.csv [6] => 00006.csv [7] => 00000.csv )


array1 ( [0] => 00004.csv [1] => 00003.csv [2] => 00002.csv [3] => 00001.csv [4] => 00000.csv )

Paso3.- Calculo un array con las diferencias:

diffe_array ( [1] => 00007.csv [2] => 00005.csv [6] => 00006.csv )

Step4.- Necesito crear un bucle para ir extrayendo cada item de mi diffe_array y usarlo en mi otro script Step0.php (este script se encarga de abir el archivo conel mismo nombre del item del array extraido y cargar su contenido en una base de datos). Yo necesito hacer esto hasta que diffe_array esté vacío. y salir del bucle.

El otro archivo Step0.php es:
Código PHP:
Ver original
  1. <?php
  2.  
  3. function Conection()
  4. {
  5.        if (!($link=pg_connect("host=xxxxx port=xxxx dbname=xxxxx user=xxxxx password=xxxxx")))  {
  6.            echo "Error connecting to the database.";
  7.            exit();
  8.        }
  9.        return $link;
  10. }
  11. require_once('./process.php');//This is the before file
  12. $rute="/rute/to/my/file/";
  13. $end= $rute.$lastone;
  14. $row = 0;
  15. $handle = fopen($end, "r");
  16. while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
  17.     $num = count($data);
  18.     $row++;
  19.     echo '<b><br/><br/>';
  20.     $request = "insert into table(column1,column2,column3,column4) values(";
  21.     for ($c=0; $c < $num; $c++) {
  22.         if ($c==($num-1))
  23.               $request = $request."'".$data[$c] . "'";
  24.         else
  25.               $request = $request."'".$data[$c] . "',";
  26.     }
  27.  
  28.     $request = $request.");";
  29.     echo $request."<br>";  
  30.  
  31.      $union=Conection();
  32.      $result=pg_query($union, $request);
  33.      pg_close($union);
  34. }
  35.  
  36. fclose($handle);
  37.  
  38. ?>

Lo que ocurre hasta ahora es que cada vez que ejecuto solo me pasa una vez por el Step.php por lo que solo me introduce un dato del diffe_array en lugar de recorrerlo y pasarlos todos.

Alguna idea a mi problema??

Gracias
  #2 (permalink)  
Antiguo 12/08/2013, 08:30
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 36
Respuesta: Problemas con require/include dentro de while

Revisa y prueba cambiando esto:

require('./Step0.php'); por esto require('../Step0.php');

dos puntos delante del /

Saludos,
  #3 (permalink)  
Antiguo 12/08/2013, 08:59
 
Fecha de Ingreso: diciembre-2009
Ubicación: Sevilla
Mensajes: 49
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Problemas con require/include dentro de while

alexisverano.

Gracias por el apunte, pero ese no es el problema. Compruebo que ejecuta mi script Step0.php, pero solo lo ejecuta una sola vez.

Es decir, entra en el While me va ejecutando el códigio, llega al Require, me lo ejecuta, sigue ejecutando, pero cuando vuelve a leer el While desde el principio, ya no me ejecuta Step0.php

Alguna idea viendo el código de Step0.php??

Especificar que actualmente no estoy utilizando do-while, sino solamente while, que creo que es más conveniente!! Es decir

Código PHP:
Ver original
  1. while ($diffe> 0){
  2.      $lastone=end($diffe_array);
  3.      require('./Step0.php');
  4.      $extract=array_pop($diffe_array);
  5.      $diffe=count($diffe_array);
  6.      print_r($diffe_array);
  7. }
Saludos

Última edición por Josamulai; 12/08/2013 a las 09:06
  #4 (permalink)  
Antiguo 12/08/2013, 10:18
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: Problemas con require/include dentro de while

Hola
1.- El archivo solo lo tienes que requerir 1 vez, sacalo del bucle.
2.- En el archivo Step0.php crea una funcion y pasa el valor del array que vas a procesar.

require('./Step0.php');<----------

do {
$lastone=end($diffe_array);
$extract=array_pop($diffe_array);
procesar($extract);<--------------------------
$diffe=count($diffe_array);
print_r($diffe_array);
} while ($diffe > 0);

espero que te sea de ayuda
  #5 (permalink)  
Antiguo 12/08/2013, 10:42
 
Fecha de Ingreso: diciembre-2009
Ubicación: Sevilla
Mensajes: 49
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Problemas con require/include dentro de while

Erick_MD9!!

Gracias por tu ayuda!! he aprendido otro punto de vista con el que utilizar scripts externos, pero desgraciadamente el problema no lo resuelvo, ya que el resultado me sigue dando exactamente el mismo.

Me sigue aplicando solo una vez mi Step0.php!!!!! Es decir, cuando vuelve a ejecutar el código que está dentro de While no me ejecuta una segunda vez procesar($extract) mientras que si me va iterando el array.

Por qué??
  #6 (permalink)  
Antiguo 12/08/2013, 11:17
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: Problemas con require/include dentro de while

veo que a tu codigo le hace falta organización y estructura, te voy a orientar para que lo mejores un poco. Coloca como quedo Step0.php.
  #7 (permalink)  
Antiguo 12/08/2013, 11:49
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Problemas con require/include dentro de while

Me sorprende que no te tire error la redeclaración de la función Conection
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #8 (permalink)  
Antiguo 13/08/2013, 01:12
 
Fecha de Ingreso: diciembre-2009
Ubicación: Sevilla
Mensajes: 49
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Problemas con require/include dentro de while

Cita:
Iniciado por Erick_MD9 Ver Mensaje
veo que a tu codigo le hace falta organización y estructura, te voy a orientar para que lo mejores un poco. Coloca como quedo Step0.php.
Perdona por la tardanza, pero ya ayer estaba desconcectado cuando respondistes.

Pues mira quedó una cosa así:

Código PHP:
Ver original
  1. <?php
  2. function Full()
  3. {
  4.       function Conection()
  5.       {
  6.              if (!($link=pg_connect("host=xxxxx port=xxxx dbname=xxxxx user=xxxxx password=xxxxx")))  
  7.              {
  8.                    echo "Error connecting to the database.";
  9.                    exit();
  10.              }
  11.              return $link;
  12.        }
  13.  
  14. $rute="/rute/to/my/file/";
  15.  
  16. $end= $rute.$lastone;
  17.  
  18. $row = 0;
  19.  
  20. $handle = fopen($end, "r");
  21.  
  22.       while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
  23.       {
  24.           $num = count($data);
  25.           $row++;
  26.           echo '<b><br/><br/>';
  27.           $request = "insert into table(column1,column2,column3,column4) values(";
  28.  
  29.             for ($c=0; $c < $num; $c++)
  30.             {
  31.                 if ($c==($num-1))
  32.                       $request = $request."'".$data[$c] . "'";
  33.                 else
  34.                       $request = $request."'".$data[$c] . "',";
  35.             }
  36.  
  37.           $request = $request.");";
  38.           echo $request."<br>";  
  39.  
  40.           $union=Conection();
  41.           $result=pg_query($union, $request);
  42.           pg_close($union);
  43.       }
  44.  
  45. fclose($handle);
  46.  
  47. }
  48.  
  49. ?>

Y luego pues lo llamé en mi php como me dijistes, lo saqué fuera del while (require(./Step0.php);), y dentro del while, después de definir $extract(), lo que hice fue llamarlo de esta forma:

Full($extract);
  #9 (permalink)  
Antiguo 13/08/2013, 10:09
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: Problemas con require/include dentro de while

Hola,
1.- Es importante que entiendas perfectamente el concepto de "funcion", ya que te permitira hacer un mejor uso de ellas, para eso solo hay una salida.
a)Estudiar el manual
http://www.php.net/manual/es/language.functions.php
b)Hacer pruebas y ejercicios.
Busca en google y encontraras muchos.
2.-cuando realizas una consulta a base de datos, busca que sea facil de leer.
a)realiza la asigancion de tus variables antes de la consulta, para que ella te quede de la siguiente forma.
b) $request = "insert into table(column1,column2,column3,column4) values('$a','$b','$c','$d')";
3.- en tu bloque if no tienes {}

Espero te sea de ayuda.
  #10 (permalink)  
Antiguo 14/08/2013, 01:47
 
Fecha de Ingreso: diciembre-2009
Ubicación: Sevilla
Mensajes: 49
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Problemas con require/include dentro de while

Erick_MD9

Gracias por tus consejos y aportes, me están haciendo de bastante ayuda.

Step0.php me ejecuta sin ningún tipo de anomalía, como verás en el código lo que estoy haciendo es coger una cadena de un archivo csv e insertarlo en mi consulta de ahí que lo concatene a values (no son variables en sí independizadas, lo que le paso es una cadena string para que me haga la consulta con ella).

Con respecto al if entendía que cuando solo encierra una línea de acción no hacía falta poner {}, de todas formas, siguiendo tu consejo, lo he incorporado y me sigue haciendo la consulta de la misma forma, es decir, sin problemas.

El problema en sí está cuando quiero que se repita en mi bucle la ejecución del script Step0.php que solo me lo pasa la primera vez, las demás veces que pasa el bucle no hace caso y se lo salta.

De hecho la impresión por pantalla que me saca es un estilo a este:

insert into ingresa(campo1,campo2,campo3,campo4,campo5,campo6, campo7,campo8) values('119.616000',' 37.255049',' -5.549553',' 141.978586',' -172.419065',' -0.996059',' 0.917293',' 00006.jpg')


Muchas gracias de nuevo.
  #11 (permalink)  
Antiguo 14/08/2013, 06:29
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 36
Respuesta: Problemas con require/include dentro de while

Josamulai,

Haz probado en vez de hacer referencia al include, ubicar el codigo que esta dentro de este, dentro del while?
  #12 (permalink)  
Antiguo 14/08/2013, 08:52
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Problemas con require/include dentro de while

Para que haces $union=Conection(); dentro del WHILE ? que se supone quieres hacer con eso ?
__________________
Salu2!
  #13 (permalink)  
Antiguo 14/08/2013, 10:38
 
Fecha de Ingreso: diciembre-2009
Ubicación: Sevilla
Mensajes: 49
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Problemas con require/include dentro de while

Cita:
Iniciado por Italico76 Ver Mensaje
Para que haces $union=Conection(); dentro del WHILE ? que se supone quieres hacer con eso ?
Lo hago para poder usar la función como variable posteriormente y así poder hacer el query: este necesita de una conexión a una bd y la propia consulta.
  #14 (permalink)  
Antiguo 14/08/2013, 10:46
 
Fecha de Ingreso: diciembre-2009
Ubicación: Sevilla
Mensajes: 49
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Problemas con require/include dentro de while

Cita:
Iniciado por alexisverano Ver Mensaje
Josamulai,

Haz probado en vez de hacer referencia al include, ubicar el codigo que esta dentro de este, dentro del while?
Si, lo probé y lo que ocurre cuando hago eso es que cuando llega al final del while, en mi caso yo muestro por pantalla:

Código PHP:
Ver original
  1. echo '<br/><br/>AHORA EL ARRAY ES DIFERENTE: <br/><br/>';
  2.             print_r($diffe_array);

Aquí no sigue avanzando, ni vuelve a empezar mi while ni se sale de él, se queda ahí.

no se si me explico.

Gracias enormemente.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:52.