Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Como evitar borrar los datos del form si hay error en subir archivo (https://www.clubdelphi.com/foros/showthread.php?t=90807)

uper 08-09-2016 18:46:18

Como evitar borrar los datos del form si hay error en subir archivo
 
buenas tardes, tengo un formulario que se debe de capturar los datos del cliente y a su vez se debe de adjuntar un archivo en formato pdf (el cual es para cumplir los requisitos de alta de cliente), el caso es que ya logre que suba el archivo a una carpeta donde estan alojadas las paginas, pero resulta que no se como se pueda hacer para que se conserve los datos que estan en el formulario cuando exista un error, es decir:
Si se sube un archivo en formato bmp por error que debe de ser en pdf me manda el error pero me borra los datos como evitarlo, posteo el codigo, les agradezco:
Código PHP:

$archivo = (isset($_FILES['archivo'])) ? $_FILES['archivo'] : null;
if (
$archivo) {
   
$extension pathinfo($archivo['name'], PATHINFO_EXTENSION);
   
$extension strtolower($extension);
   
$extension_correcta = ($extension == 'pdf');
   if (
$extension_correcta) {
      
$ruta_destino_archivo "archivoscred/{$archivo['name']}";
      
$archivo_ok move_uploaded_file($archivo['tmp_name'], $ruta_destino_archivo);
      if(
$archivo_ok ){
          require_once 
'regclientes.php';
          echo 
"<strong>Listo se ha subido el archivo</strong>";
          
agregaregistro($_POST['folio'],$_POST['cliente']);
          echo 
'<script type="text/javascript"> alert("Listo se ha subido el archivo y registrado el cliente"); window.location.assign("verclientes.php"); </script>';            
      }
   }else echo 
"<span style='color: #f00;'>No se puede subir el archivo, solo se admite el formato pdf</span>";
}

?>
<html>
    <head>
        <link type="text/css" href="css/headermain.css" rel="stylesheet" />
    <title>Inicio</title>        
    </head>
    <body>        
        <br>
        <h2>Clientes</h2>        
        <form name="busca" method="POST" enctype="multipart/form-data">   
            <br>
            <div align="left"><span title="Folio">FOLIO: 
                <input type="text" name="folio" class="form-input" maxlength="50" style="width:440px;height:25px;" />
              </span></div>
            <br>
            <div align="left"><span title="Cliente">CLIENTE: 
                <input type="text" name="cliente" class="form-input" maxlength="50" style="width:440px;height:25px;"/>
              </span></div>
            <br>
            <div style="width: 500px;margin: auto;border: 1px solid blue;padding: 20px;">
            <h4>Subir archivo PDF</h4>            
                <table>                    
                    <tr>
                        <td colspan="2"><input type="file" required="required" name="archivo" id="archivo"></td>
                    </tr>                    
                </table>            
        </div>            
        <input class="form-btn" name="submit" type="submit" value="Guardar " />
        </form>        
    </div>        
    </body>
</html> 

les agradesco, gracias.

roman 08-09-2016 20:38:14

¿Usas el mismo script para presentar el formulario como para recibir los datos?

LineComment Saludos

uper 08-09-2016 23:51:42

En efecto recupero las variables y se las vuelvo a pasar, de esta manera se quedan almacenadas de nuevo.

gracias

roman 09-09-2016 15:38:50

Pero ahí no se ve que le vuelvas a pasar las variables. Tendrías, por ejemplo que hacer algo así:

Código PHP:

<input type="text" name="folio" value="<?php echo $folio ?>" />

donde a $folio le asignas el valor inicial, que puede ser vacío en el caso de que se presente por primera vez el formulario, o el valor previo en caso de error.

LineComment Saludos

Rocio90 22-09-2016 13:03:30

Soluciones:

A) o metes la subida en un iframe a parte
B) o usas ajax para la subida
c) usas session_start(); $_SESSION["folio"]

Espero te sirva

uper 23-09-2016 18:01:45

buenos dias, les comento que uso sessiones para guardar los valores y con eso me permitio devolver los valores para que se vulevan a presentar, cuando hace el proceso de validar bien los datos por medio de una function boolean destruyo las sessiones de esas variables.

Les agradesco, muchas gracias.


La franja horaria es GMT +2. Ahora son las 09:46:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi