Foros del Web » Programando para Internet » PHP »

Pasar array a otro fichero.php

Estas en el tema de Pasar array a otro fichero.php en el foro de PHP en Foros del Web. Buenos días, Me gustaría poder pasar un array que le entra como argumento a un fichero Php(loan_result_view.php) el cual lo usa para imprimir una tabla. ...
  #1 (permalink)  
Antiguo 06/11/2012, 05:12
 
Fecha de Ingreso: octubre-2012
Ubicación: Pozuelo de Alarcón
Mensajes: 67
Antigüedad: 12 años
Puntos: 1
Pasar array a otro fichero.php

Buenos días,

Me gustaría poder pasar un array que le entra como argumento a un fichero Php(loan_result_view.php) el cual lo usa para imprimir una tabla.

He puesto un "input"/"boton"(esta en loan_result_view.php) (que llama a otro fichero llamado ficheroExcel.php) para que dicho fichero exporte el esa tabla a un fichero Excel.

Input/Enlace:

Código HTML:
Ver original
  1. <a href="/ilmts/application/views/ficheroExcel.php" id="loans" value="<?php echo $loans ?>">EXPORTAR</a>

El fichero "ficheroExcel.php" me genera/crea el excel perfectamente. Lo que no me genera son las lineas de la variable $loans ya que no se como pasarlo a eso otro fichero para que me genere la tabla dentro del excel.

En el fichero "ficheroExcel.php" tengo puesto esto:

Código PHP:
Ver original
  1. <?php
  2. header('Content-type: application/vnd.ms-excel');
  3. header("Content-Disposition: attachment; filename=archivo.xls");
  4. header("Pragma: no-cache");
  5. header("Expires: 0"); ?>
  6. <?php if(isset($loans) && count($loans)>0): ?>
  7.    
  8.     <?php echo "<p>Loans found: "; echo count($loans); echo "</p>" ?>
  9.     <div id="pagination" >
  10.     <table id="loans_table" class="results_table">  
  11.         <tr class="table_header">  
  12.             <?php foreach ($ffields as $ffield): ?>
  13.                 <th scope="col"> <?php echo $ffield; ?> </th>
  14.             <?php endforeach; ?>
  15.         </tr>
  16.         <?php foreach($loans as $loan): ?>
  17.         <tr>
  18.             <?php foreach ($fields as $field): ?>
  19.                 <?php if (strcmp($field,'rma')==0): ?>
  20.                     <td><a href="/ilmts/loan/detail/<?php echo $loan['rma']?>"> <?php echo $loan[$field]; ?> </td>
  21.                 <?php else: ?>
  22.                     <td> <?php echo $loan[$field]; ?> </td>
  23.                 <?php endif; ?>
  24.             <?php endforeach; ?>
  25.         </tr>              
  26.         <?php endforeach; ?>
  27.     </table>   
  28.     </div>
  29. <?php else: ?> 
  30.     <p>No loans found.</p>
  31. <?php endif; ?>

Si me pudierais decir como pasar esa variable/array al otro fichero para poder sacar la tabla seria de gran ayuda.

Muchas gracias de antemano.

Un saludo.
  #2 (permalink)  
Antiguo 06/11/2012, 06:16
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 10 meses
Puntos: 32
Respuesta: Pasar array a otro fichero.php

Si lo quieres pasar por GET:

Código HTML:
Ver original
  1. <a href="/ilmts/application/views/ficheroExcel.php?loans=urlencode(serialize($loans))">EXPORTAR</a>

Y en ficheroExcel.php tienes que hacer esto otro:
Código PHP:
$loans unserialize(urldecode(stripslashes($_GET["loans"]))); 
Si prefieres pasarlo por POST:

Código HTML:
Ver original
  1. <form action ="/ilmts/application/views/ficheroExcel.php" method="post">
  2. <input type="hidden" name="loans" value="<?php echo urlencode(serialize($loans)) ?>"/><input type="submit" name="boton" value="EXPORTAR"/>
  3. </form>

Y en ficheroExcel.php tienes que hacer esto otro:
Código PHP:
$loans unserialize(urldecode(stripslashes($_POST["loans"]))); 
  #3 (permalink)  
Antiguo 06/11/2012, 06:32
 
Fecha de Ingreso: octubre-2012
Ubicación: Pozuelo de Alarcón
Mensajes: 67
Antigüedad: 12 años
Puntos: 1
Respuesta: Pasar array a otro fichero.php

Muchas gracias por su respuesta.

Al realizar la primera opción me sale el siguiente error el cual no tengo ni idea de que se trata.

Notice: unserialize() [<a href='function.unserialize'>function.unserialize</a>]: Error at offset 0 of 28 bytes in C:\wamp\www\ilmts\application\views\ficheroExcel.p hp on line 1

¿Puede ser que el array sea muy grande?

En el segundo caso, me da error en la url. Puesto que yo llamo a los fichero cargando un controlador, vista o modelo. ¿Seria posible forzar la llamada a ese fichero?

Un saludo y gracias de nuevo.
  #4 (permalink)  
Antiguo 06/11/2012, 08:26
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 10 meses
Puntos: 32
Respuesta: Pasar array a otro fichero.php

Cita:
Iniciado por taboacar Ver Mensaje
Notice: unserialize() [<a href='function.unserialize'>function.unserialize</a>]: Error at offset 0 of 28 bytes in C:\wamp\www\ilmts\application\views\ficheroExcel.p hp on line 1
En el ejemplo que te he puesto veo que hay un error. no se si será ese le problema. Sería así:

Código HTML:
Ver original
  1. <a href="/ilmts/application/views/ficheroExcel.php?loans=<?php echo urlencode(serialize($loans)) ?>">EXPORTAR</a>

Cita:
Iniciado por taboacar Ver Mensaje
En el segundo caso, me da error en la url. Puesto que yo llamo a los fichero cargando un controlador, vista o modelo. ¿Seria posible forzar la llamada a ese fichero?
Veo que ficheroExcel.php es una vista. No puedes enviar ahí el formulario? Si no deberías crear un controlador para que recupere el array pasado por POST y luego cargue la vista para que genere el excell.
  #5 (permalink)  
Antiguo 07/11/2012, 02:39
 
Fecha de Ingreso: octubre-2012
Ubicación: Pozuelo de Alarcón
Mensajes: 67
Antigüedad: 12 años
Puntos: 1
Respuesta: Pasar array a otro fichero.php

Muchas gracias por su respuesta. Siento no contestar antes. Voy a probar su respuesta y le digo como ha ido. Pero lo de crear un controlador tiene buena pinta, lo había pensado pero me resultaba algo lioso para algo que pienso se podría hacer mas cómodo.

Un saludo.
  #6 (permalink)  
Antiguo 07/11/2012, 02:45
 
Fecha de Ingreso: octubre-2012
Ubicación: Pozuelo de Alarcón
Mensajes: 67
Antigüedad: 12 años
Puntos: 1
Respuesta: Pasar array a otro fichero.php

Buenos días de nuevo,

Al realizar la correción primera que me comento ayer, me sale un erro que supongo que sera que la URL(que contendra todo el array) que pasamos es demasiado grande.

El error es el siguiente:

Request-URI Too Large

The requested URL's length exceeds the capacity limit for this server.


Como puedo solucionar eso ampliando la capacidad del servidor o acortando la URL?

Muchas gracias.

Un saludo
  #7 (permalink)  
Antiguo 07/11/2012, 02:51
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 10 meses
Puntos: 32
Respuesta: Pasar array a otro fichero.php

Por lo visto puedes modificarlo en Apache

http://www.forosdelweb.com/407397-post4.html

Otra opción es pasarlo a través de una sesión ($_SESSION).
  #8 (permalink)  
Antiguo 07/11/2012, 03:07
 
Fecha de Ingreso: octubre-2012
Ubicación: Pozuelo de Alarcón
Mensajes: 67
Antigüedad: 12 años
Puntos: 1
Respuesta: Pasar array a otro fichero.php

Buenas, al pasar el valor por la variable $_SESSION el problema es que ya no tengo permisos para acceder a ese fichero. Y tengo todos los permisos dados a ese fichero.

Puede ser que la $_SESSION inicial cambia y como no me reconoce el usuario introducido me quita dichos permisos?

Hacerlo con PhpExcel seria mas fácil y menos lioso que crear un controlador y su vista?

Saludos.
  #9 (permalink)  
Antiguo 07/11/2012, 04:13
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 10 meses
Puntos: 32
Respuesta: Pasar array a otro fichero.php

Cita:
Iniciado por taboacar Ver Mensaje
Buenas, al pasar el valor por la variable $_SESSION el problema es que ya no tengo permisos para acceder a ese fichero. Y tengo todos los permisos dados a ese fichero.
No entiendo.

Con la variable $_SESSION sería así:

En el script dónde cargas el array tendrías que hacer estas dos cosas

Código PHP:
session_start();

$_SESSION["loans"] = $loans
Y en ficheroExcel.php lo mismo pero sacando el array de $_SESSION (o puedes usar $_SESSION directamente)


Código PHP:
session_start();

$loans $_SESSION["loans"]; 
  #10 (permalink)  
Antiguo 07/11/2012, 04:22
 
Fecha de Ingreso: octubre-2012
Ubicación: Pozuelo de Alarcón
Mensajes: 67
Antigüedad: 12 años
Puntos: 1
Respuesta: Pasar array a otro fichero.php

Gracias por la respuesta, justo eso mismo es lo que he probado anteriormente y me sale el mismo error.

Forbidden

You don't have permission to access /ilmts/application/views/ficheroExcel.php> on this server.

He comprobado los permisos en el servidor puesto que soy el administrador y tengo todos los permisos activos. Llamándolo con otro método el fichero lo lee perfectamente, esto surge al poner lo de $_SESSION.

Otro método que he probado ha sido con Javascript y su librería JQuery. Los datos/tabla los paso con un <form> y me llama perfectamente al otro fichero con sus correspondientes valores, en este caso el mismo "ficheroExcel.php" pero al importar la librería me desactiva algunas características de mi tabla como la paginación por lo que me sale toda la tabla seguida y no por paginas. Se podría seguir desde ese punto?
  #11 (permalink)  
Antiguo 07/11/2012, 05:51
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 10 meses
Puntos: 32
Respuesta: Pasar array a otro fichero.php

Estoy muy perdido ya. Podrías poner algo de código?
  #12 (permalink)  
Antiguo 08/11/2012, 03:25
 
Fecha de Ingreso: octubre-2012
Ubicación: Pozuelo de Alarcón
Mensajes: 67
Antigüedad: 12 años
Puntos: 1
Respuesta: Pasar array a otro fichero.php

Muchas gracias por responder,

Como el resultado de pasar ese array a otro fichero, era que dicho fichero imprimiera la tabla con los valores de ese array en un fichero excel, me decante por usar Javascript con la librería JQuery en el mismo fichero ya que con ello me pasaba perfecta la tabla y la variable. He tenido que realizar un parche para que la tabla resultante saliera paginada, pero funciona perfectamente.

Dejo el código del apaño que he realizado por si a alguien le sirve.
Es bastante "rustico" pero era lo único que se me ha ocurrido y que funciona.

Código PHP:
Ver original
  1. <script type="text/javascript" src="<?php echo js_url(); ?>jquery-1.6.1.min.js"></script>
  2. <script type="text/javascript" src="<?php echo js_url(); ?>field_management.js"></script>
  3.  
  4. <script type="text/javascript">
  5.     $(document).ready(function()
  6.     {
  7.         $(".botonExcel").click(function(event) {
  8.             $("#datos_a_enviar").val( $("<div>").append( $("#loans_table2").eq(0).clone()).html());
  9.             $("#FormularioExportacion").submit();
  10.         });
  11.          
  12.         document.getElementById("loans_table2").style.display = 'none';
  13.     });
  14. </script>
  15.  
  16. <?php if(isset($loans) && count($loans)>0): ?>
  17.     <?php echo "<p>Loans found: "; echo count($loans); echo "</p>" ?>
  18.     <div id="pagination">
  19.     <script type="text/javascript" src="<?php echo js_url(); ?>smartpaginator.js"></script>
  20.     <table id="loans_table" class="results_table" >  
  21.         <tr class="table_header">  
  22.             <?php foreach ($ffields as $ffield): ?>
  23.                 <th scope="col"> <?php echo $ffield; ?> </th>
  24.             <?php endforeach; ?>
  25.         </tr>
  26.         <?php foreach($loans as $loan): ?>
  27.         <tr>
  28.             <?php foreach ($fields as $field): ?>
  29.                 <?php if (strcmp($field,'rma')==0): ?>
  30.                     <td><a href="/ilmts/loan/detail/<?php echo $loan['rma']?>"> <?php echo $loan[$field]; ?> </td>
  31.                 <?php else: ?>
  32.                     <td> <?php echo $loan[$field]; ?> </td>
  33.                 <?php endif; ?>
  34.             <?php endforeach; ?>
  35.         </tr>              
  36.         <?php endforeach; ?>
  37.     </table>
  38.         <form action="/ilmts/application/views/ficheroExcel.php" method="post" target="_blank" id="FormularioExportacion">
  39.         <p>Export to Excel  <img src="/ilmts/application/files/export_to_excel.gif" class="botonExcel" /></p>
  40.         <input type="hidden" id="datos_a_enviar" name="datos_a_enviar" />
  41.     </form>
  42.     </div>
  43.     <div id="pagination2">
  44.     <table id="loans_table2" class="results_table" style="display='none'">  
  45.         <tr class="table_header">  
  46.             <?php foreach ($ffields as $ffield): ?>
  47.                 <th scope="col"> <?php echo $ffield; ?> </th>
  48.             <?php endforeach; ?>
  49.         </tr>
  50.         <?php foreach($loans as $loan): ?>
  51.         <tr>
  52.             <?php foreach ($fields as $field): ?>
  53.                 <?php if (strcmp($field,'rma')==0): ?>
  54.                     <td><a href="/ilmts/loan/detail/<?php echo $loan['rma']?>"> <?php echo $loan[$field]; ?> </td>
  55.                 <?php else: ?>
  56.                     <td> <?php echo $loan[$field]; ?> </td>
  57.                 <?php endif; ?>
  58.             <?php endforeach; ?>
  59.         </tr>              
  60.         <?php endforeach; ?>
  61.     </table>
  62.     </div>
  63.  
  64.  
  65. <?php else: ?> 
  66.     <p>No loans found.</p>
  67. <?php endif; ?>

Al dar al botón que exporta a excel llama al ficheroExcel.php que contiene:

Código PHP:
Ver original
  1. <?php
  2. header("Content-type: application/vnd.ms-excel; name='excel'");
  3. header("Content-Disposition: filename=Loans Search.xls");
  4. header("Pragma: no-cache");
  5. header("Expires: 0");
  6.  
  7. echo $_POST['datos_a_enviar'];
  8. ?>


Muchas gracias por todas las respuestas.

Un saludo.

Etiquetas: tabla, variables
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 21:39.