Nueva pregunta

Pregunta:

Fecha: 28-02-2017 10:08:41 (En Español)

Ayuda para ejecución de dos acciones[Resuelta]

Saludos, espero puedan ayudarme, tengo una página web donde se ingresan datos una vez que presionen el boton guardar, deseo que además de ejecutar el guardado que si lo hace bien, esta página se direccione al index y se abra otra pestaña donde aparecera un reporte en pdf generado con fpdf, lo que no puedo es que en la página principal no pueda direccionarse al index.
Espero sus comentarios y modelos de codigo al respecto.
Un abrazo y buen código.
Pedro
Etiquetas: JQuery - Mejores Prácticas - PDF - PHP - POO - Pregunta Votos: 0 - Respuestas: 6 - Vistas: 15 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 28-02-2017 11:11:13 En general te recomiendo usar un framework en vez de hacer un app desde cero tu mismo.
    Hay opciones como Laravel, que incluso tiene una opcion liviana.
    O usar los componentes de Symphony o Zend directamente.
    Y de ser posible, es muy conveniente usar un patron como MVC.

    Dicho eso, lo que ocupas es hacer un redirect al terminar el proceso.
    En vez de desplegar html cuando terminas de salvar, mas bien seteas el header para hacer un redirect y listo.

    <?php
    // Revisas la información, si es valida, limpias, etc
    // Salvas la información
    
    // Redireccionas
    header("Location: http://example.com/myOtherPage.php");
    die();
      Votos: 1 - Link respuesta
     
  • Fecha: 28-02-2017 11:53:38 Independientemente de si usas un framework o no, debes usar una SQL Transaction para tener la certeza de que los datos se guardaron bien.

    Respecto a el redirect como dice Nestor con header() podes hacerlo pero no es posible (hasta donde yo se) abrir un tab desde PHP, para eso vas a tener que generar el URL del pdf y trabajarlo desde el frontend, si queres que se abra automaticamente vas a necesitar utilizar Javascript.

    Un par de opciones:

    1). Generar un <link target="_blank"> con el url y con Javascript programaticamente hacer "click" sobre el elemento.

    2). Obtener el URL de alguna forma ya sea en un link o un input hidden o una respuesta JSON y con Javascript hacer un window.open();
      Votos: 2 - Link respuesta
     
  • Fecha: 28-02-2017 12:44:07 :v si lo haces con ajax ya sea en jQuery o javascript solo basta poner un codigo como este:

    setTimeout(function() {
    location.replace("index.php"); // el index en este caso recuerda poner bien la url y evitamos que regrese a la pagina anterior osea ya no volver si le da para atras a la pagina donde genero el pdf en este caso
    }, 6000); // tiempo que se tardara en redireccionar
    


    si bien no lo haces con ajax y este se encuentra en el mismo documento o en otro en php como el html basta con header("index.php"); pero antes pones un sleep($tiempo); para retrasar el header o bien puedes poner un echo y en este un script de redireccion igual al código que le puse arriba, asi de facil .-. no se ocupa absolutamente de ningun framework para esto.
      Votos: 4 - Link respuesta
     
  • Fecha: 01-03-2017 02:16:37 Hola Pedro, hace ya un tiempo hable sobre el redirect web, aquí puedes ver uno de mis aportes al respecto, la función redirectToReferer --> http://www.phpcentral.com/pregunta/15/problema-al-redirigir-a-pagina-anterior#resp_e2c420d928d4bf8ce0ff2ec19b371514

    Si bien la función hace referencia al "Referer", esta puede hacerse generica y servir para cualquier caso de redirect (como un helper).

    En un rato estaré subiendo la función redirect generica.

    Saludos y buen código.

    Editado: agrego el link a la función de redirect generica: Función redirectTo: redirección PHP y Javascript simplificada
      Votos: 5 - Link respuesta
     
  • Fecha: 01-03-2017 11:50:19 Parece que por los aportes de arriba con las redirecciones ya no tendras ningun problema de todas formas te dejo tipos de redirrecionamientos que yo uso estando en un archivo PHP :

    <?PHP 
    
    echo "<script> location.href='aqui_ingresas_tu_ruta.php' </script>";
    
    // O tambien 
    
    
    header ("Location: 'aqui_ingresas_tu_ruta.php");
    
    
    
    ?>
    


    Encuanto al uso de FPDF al realizar tu reportes

    Te sugiero que gusto al grabar la información en la base de datos también actualices la variables de sesión O declares nuevas varibles de sesion especificas para tu reportes asi cuando las llames en tu reporte sera más sencillo.

    Saludos
      Votos: 0 - Link respuesta
     
  • Fecha: 05-03-2017 21:07:48 Hola Pedro,
    Uff parece muy difícil al principio jajajaja pero es sencillo aunque laborioso.
    Me costó mucho trabajo entender qué es lo que quieres hacer porque la redacción no es muy buena así que te recomiendo que la mejores un poco para que sea más fácil guiarte y ayudarte.
    Esto es lo que yo entendí:

    Tienes un formulario y quieres que al dar click en guardar si los datos se guardan exitosamente la página se redirija al index y además abra un tab|ventana nueva donde se muestre el reporte en PDF con los datos.

    Realmente es super sencillo:

    1. Guarda los datos
    2. Si hubo error, muestra el formulario de nuevo con los campos prellenados
    3. Si se almacenaron exitosamente los datos crea una variable de sesión: $_SESSION['muestraReporte'] = $idReporte;
    4. Redirige al index

    En tu index vas a poner una lógica como esta:
    1. Si existe la variable $_SESSION['muestraReporte'] agrega el siguiente bloque de jquery:

    $( document ).ready(function() {
        //El id de tu reporte está guardado en la variable de sesión
        window.open("http://tuServer/path/a/tu/reporte/id");
    });
    


    Es una lógica muy escueta pero te sirve de base para que la programes a tu gusto

    Saludos
      Votos: 3 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com