Ver Mensaje Individual
  #9 (permalink)  
Antiguo 18/03/2015, 03:04
Avatar de kahlito
kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 9 meses
Puntos: 65
Respuesta: No perder Datos del Form trasrecargar la pagina

Cita:
Iniciado por churretin Ver Mensaje
Hola #kahlito tu solución no me es valida, ya que mando a un controlador los datos para verificarlo y si falla la verificación me devuelve al controlador anterior, por lo que se pierden los post.

#jluishuaman no es solo una fecha son, varias decebas de campos, de ahi su importancia.
Entonces creo que te podría servir algo así:

controlador.php

Código PHP:
<?php
 
// Si recibo los datos o se ha pulsado enviar                
                
if(isset($_POST['enviar'])){
                
//Declaro las variables 
                
$usuario mysql_real_escape_string($_POST['usuario']);
                
$password mysql_real_escape_string($_POST['password']);    
                
//Si hay algún campo vacío aviso de error.                      
                
if($_POST["usuario"] == "" || $_POST["password"] == ""){    
                    
//Redirecciono a la página del formulario para avisar del error y que a la vez devuelva los datos completados hasta el momento.                
header("location: entrada.php?errorLogin=1&usuario=$usuario&password=$password");
                }
                
//Si se rellenan los campos compruebo datos
                
else{
echo 
"Todo ok y preparo el envío";
}
}
//Fin enviar
?>
Y en el archivo actual donde se rellena el formulario, por ejemplo entrada.php :

Código PHP:
<?php
if(isset($_GET["errorLogin"])){    
                    echo 
"<p class=\"error\">Error: </p>";
                    
//Preparo las variables de los campos del formulario para traerlas aqui
                    
if(isset($_GET["usuario"])){    
                    
$usuario mysql_real_escape_string($_GET['usuario']);
                    }
                    if(isset(
$_GET["password"])){    
                    
$password mysql_real_escape_string($_GET['password']);
                    }                        
                    if(
$_GET["errorLogin"] == "1"){
                        echo 
"<p class=\"error\">Error: Hay algún campo vacío.</p>";                        
                    }
//
}
//Incluyo el formulario controlador o verificador 
include("inc/formulario-controlador.php");           
?>
formulario-controlador.php

Código PHP:
<?php        
//Si se reciben los datos por get
            
if(isset($_GET["usuario"]) || isset($_GET["passowrd"])){
                
//echo "El usuario es: ". $usuario;
            
?>
             <form method="post" action="controlador.php">
                <label>Nombre de usuario: </label><input type="text" name="usuario" value="<?php if(isset($_GET["usuario"])){ echo $_GET["usuario"];} ?>"><br />
                <label>Contraseña: </label><input type="password" name="password" value="<?php if(isset($_GET["password"])){ echo $_GET["password"];} ?>"><br />
                <div class="submit">
                    <input type="submit" value="Entrar" name="enviar">
             </form>

          
            <?php
            
}
            else{ 
//Si se reciben los datos por post.
                
?>
            
            <form method="post" action="controlador.php">
                <label>Nombre de usuario: </label><input type="text" name="usuario" value="<?php if(isset($_POST["usuario"])){ echo $_POST["usuario"];} ?>"><br />
                <label>Contraseña: </label><input type="password" name="password" value="<?php if(isset($_POST["password"])){ echo $_POST["password"];} ?>"><br />
                <div class="submit">
                    <input type="submit" value="Entrar" name="enviar">
              </form>
                     
</div>
<?php
}
?>
No se si me explico o es parecido a lo que quieres hacer, he utilizado un ejemplo básico que quizás te puede servir.

Saludos.

Última edición por kahlito; 18/03/2015 a las 03:06 Razón: Me falta una }//Fin enviar