Ver Mensaje Individual
  #3 (permalink)  
Antiguo 24/10/2012, 19:42
Avatar de ramiro_md
ramiro_md
 
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 15 años, 8 meses
Puntos: 26
Respuesta: Recargar página tras envío exitoso de formulario.

Emprear, gracias por la respuesta. Y si, la verdad que hasta me he mareado para describir la situación.
A continuación coloco algo de código y explicando que hace y cómo tengo encarado el sistema.

Perfiles.php
Es la pantalla de administración de perfiles. Básicamente interesa el formulario y el div que contiene el alerta de éxito o fracaso.
El dichoso div:
Código PHP:
<!-- Mensajes de la aplicacion -->
<div class="g_12">
     <?php
          
if ( isset($_SESSION['ABMStatus']) ){
               if (
$_SESSION['ABMStatus']['Success'] == true){
                    echo 
"<div class='success iDialog'>".$_SESSION['ABMStatus']['Msg']."</div>";
               }else{
                    echo 
"<div class='error iDialog'>".$_SESSION['ABMStatus']['Msg']."</div>";
               }
          }
          unset(
$_SESSION['ABMStatus']);
     
?>
</div>
Básicamente, si existe la variable de sesión ABMStatus, es porque vino de alguna operación del ABM (todas las operaciones que he desarrollado definen esta variable).Entonces informa el mensaje.

Ahora el formulario, como lo tengo ahora:
Código HTML:
Ver original
  1. <form id="exportPerfil" target="popup" method="POST" action="Bin/exportPerfil.php">
  2.         <!-- Submit -->
  3.         <div class="line_grid">
  4.             <div class="g_3"><span class="label">Iniciar     exportaci&oacute;n</span></div>
  5.             <div class="g_9">
  6.                 <input type="submit" value="Exportar" class="submitIt simple_buttons"/>
  7.             </div>
  8.         </div>
  9.     </form>

Ahora el script que genera el dichoso csv. Coloco solo la parte donde fuerzo la descarga y establezco los valores de ABMStatus:
Código PHP:
$format ".csv";
$filename $_SERVER['DOCUMENT_ROOT']."/Cache/perfiles".date('dmY').$format;

/*
 * Aca cargo el archivo y lo cierro. Funciona, así que no viene al caso.
 */
if ($_SESSION['ABMStatus']['Success'] == true){
    
    
$_SESSION['ABMStatus']['Msg'] =  "Perfiles exportados correctamente.";

    
header("Content-disposition: attachment; filename=perfiles".date('dmY').$format);
    
header("Content-type: application/octet-stream");
    
readfile($filename);

    
}else{
    
$_SESSION['ABMStatus']['Msg'] = "La exportaci&oacute;n de los perfiles ha fallado inesperadamente.";

El formulario al tener target popup me descarga el archivo sin dramas, pero no me actualiza perfiles.php para leer el nuevo valor de ABMStatus.
Y si intento redireccionar desde el script PHP, no voy a poder hacerlo porque ya toque los headers.
Se entiende un poco más ahora ? je.