Foros del Web » Programando para Internet » PHP »

PHP OO Formulario PHP mantener datos al validar

Estas en el tema de Formulario PHP mantener datos al validar en el foro de PHP en Foros del Web. Hola Amigos del Foro tengo un Duda con PHP y Javascript, mi problema es el siguiente, intento hacer una factura en PHP, tengo dos Archivos ...
  #1 (permalink)  
Antiguo 08/09/2012, 10:31
 
Fecha de Ingreso: septiembre-2012
Mensajes: 23
Antigüedad: 11 años, 7 meses
Puntos: 0
Formulario PHP mantener datos al validar

Hola Amigos del Foro tengo un Duda con PHP y Javascript, mi problema es el siguiente, intento hacer una factura en PHP, tengo dos Archivos Factura.php y Base de Datos.php en el cual los datos como Precio son obtenidos desde la base de datos pero otros como cantidad son ingresados manualmente, la cosa es que por cada código ingresado se valida si existe en la base de datos, al validar puedo mantener los datos en el formulario, pero si la información no existe y hace la pregunta con Javascript, me borra los datos.

Factura.php
Código PHP:
<?php
require("Base de Datos.php");
    
$b = new basededatos();
    
$b->conexion();
    
    
session_name($nombre_sesion);
    
session_start();

    if((
$_SESSION['user_status'] ==false) or !isset($_SESSION['user_status'])){

    
header("location: Acceso.php?ref=d");
    }else{
    }
        
        
$_SESSION['can1'] = $_POST['can1'];
        
$_SESSION['tot1'] = $_POST['tot1'];

        
        if(isset(
$_POST['obtenercod1'])){
        
$cod1 $_POST['cod1'];
        
$b->obtenercod1($cod1);    
        }

?>


<input name="can1" type="text" id="can1" value="<?php if (isset($_SESSION['can1'])){ echo $_SESSION['can1']; } ?>" size="10" onChange="calculo(this.value,val1.value,tot1,total);" />

<input name="tot1" type="text" id="tot1" value="<?php if (isset($_SESSION['tot1'])){ echo $_SESSION['tot1']; } ?>" size="15" />

Base de Datos.php
Código PHP:
<?php
function obtenercod1($cod1){
        
            
$consulta "select * from productosbodega where codigo='$cod1'";
            
$ejecutar mysql_query($consulta$this->id_con);
            if(
mysql_num_rows($ejecutar)==0){

            
            
?>
            <script language="javascript">
                var answer = confirm ("Producto no Existe o Código es Erroneo, ¿Desea Ingresar un Nuevo Producto?")
                if (answer)
                parent.document.location =  "Ingreso Productos Bodega.php";
                else
                parent.document.location =  "Factura.php";
            </script>
            <?php
                
            
}else{
                
            while(
$rs mysql_fetch_array($ejecutar$this->id_bd)){
            
            
$_SESSION['cod1'] = $rs['codigo'];
            
$_SESSION['des1'] = $rs['descripcion'];
            
$_SESSION['val1'] = $rs['valorunitario'];
            
            }
            }            
    }    
?>

Ya no sé como hacerlo, me limitan mis conocimientos.
Espero su Ayuda, muchas gracias.
  #2 (permalink)  
Antiguo 08/09/2012, 10:53
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Formulario PHP mantener datos al validar

Muy sencillo pásalos por get, aunque, veo que guardas las variables get en sesiones, recuerda que la sesión es accesible desde cualquier archivo en el sitio (siempre y cuando inicies la sesión), como dato, pésima, enserio, pésima idea usar nombres de archivos con espacios, jamas debes usar espacios o caracteres especiales en los nombres de archivos, ya que puede acarrear problemas de compatibilidad...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 08/09/2012, 11:07
 
Fecha de Ingreso: septiembre-2012
Mensajes: 23
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Formulario PHP mantener datos al validar

Cita:
Iniciado por Nemutagk Ver Mensaje
Muy sencillo pásalos por get, aunque, veo que guardas las variables get en sesiones, recuerda que la sesión es accesible desde cualquier archivo en el sitio (siempre y cuando inicies la sesión), como dato, pésima, enserio, pésima idea usar nombres de archivos con espacios, jamas debes usar espacios o caracteres especiales en los nombres de archivos, ya que puede acarrear problemas de compatibilidad...
Muchas Gracias por tu pronta respuesta.
Tendré muy presente eso de los nombres, básico en programación, pero yo siempre olvidando.

¿Podrías darme un ejemplo de como pasar las variables por get, que tendría que cambiar?

Espero no sea mucha molesta, gracias.
  #4 (permalink)  
Antiguo 08/09/2012, 11:12
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Formulario PHP mantener datos al validar

Código PHP:
Ver original
  1. <?php
  2. function obtenercod1($cod1){
  3.        
  4.             $consulta = "select * from productosbodega where codigo='$cod1'";
  5.             $ejecutar = mysql_query($consulta, $this->id_con);
  6.             if(mysql_num_rows($ejecutar)==0){
  7.  
  8.            
  9.             ?>
  10.             <script language="javascript">
  11.                 var answer = confirm ("Producto no Existe o Código es Erroneo, ¿Desea Ingresar un Nuevo Producto?")
  12.                 if (answer)
  13.                 parent.document.location =  "Ingreso Productos Bodega.php?codigo=<?php echo $cod1; ?>";
  14.                 else
  15.                 parent.document.location =  "Factura.php?codigo=<?php echo $cod1; ?>";
  16.             </script>
  17.             <?php
  18.                
  19.             }else{
  20.                
  21.             while($rs = mysql_fetch_array($ejecutar, $this->id_bd)){
  22.            
  23.             $_SESSION['cod1'] = $rs['codigo'];
  24.             $_SESSION['des1'] = $rs['descripcion'];
  25.             $_SESSION['val1'] = $rs['valorunitario'];
  26.            
  27.             }
  28.             }            
  29.     }    
  30. ?>

Ya en los otros archivos lo recoges como $_GET['codigo']....
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 08/09/2012, 11:49
 
Fecha de Ingreso: septiembre-2012
Mensajes: 23
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Formulario PHP mantener datos al validar

Disculpa si no entiendo, pero en los siguientes ejemplos:

parent.document.location = "Ingreso Productos Bodega.php?codigo=<?php echo $cod1; ?>";
parent.document.location = "Factura.php?codigo=<?php echo $cod1; ?>";

Que saco con envíar en éste caso el Codigo de la base de Datos si lo que quiero conservar en el formulario son datos ingresados manualmente que no están almacenados.

Gracias nuevamente.
  #6 (permalink)  
Antiguo 08/09/2012, 18:46
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Formulario PHP mantener datos al validar

o.O es un ejemplo, yo no se bien, o al menos no entendi cuales son los campos que quieras pasar, cambia el "codigo" por la variable que desees....

Código PHP:
Ver original
  1. <?php
  2. function obtenercod1($cod1){
  3.        
  4.             $consulta = "select * from productosbodega where codigo='$cod1'";
  5.             $ejecutar = mysql_query($consulta, $this->id_con);
  6.             if(mysql_num_rows($ejecutar)==0){
  7.  
  8.            
  9.             ?>
  10.             <script language="javascript">
  11.                 var answer = confirm ("Producto no Existe o Código es Erroneo, ¿Desea Ingresar un Nuevo Producto?")
  12.                 if (answer)
  13.                 parent.document.location =  "Ingreso Productos Bodega.php?variable1=<?php echo $cod1; ?>&variable2=<?echo 'variable2'; ?>";
  14.                 else
  15.                 parent.document.location =  "Factura.php?variable1=<?php echo $cod1; ?>&variable2=<?echo 'variable2'; ?>";
  16.             </script>
  17.             <?php
  18.                
  19.             }else{
  20.                
  21.             while($rs = mysql_fetch_array($ejecutar, $this->id_bd)){
  22.            
  23.             $_SESSION['cod1'] = $rs['codigo'];
  24.             $_SESSION['des1'] = $rs['descripcion'];
  25.             $_SESSION['val1'] = $rs['valorunitario'];
  26.            
  27.             }
  28.             }            
  29.     }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 09/09/2012, 16:09
 
Fecha de Ingreso: septiembre-2012
Mensajes: 23
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Formulario PHP mantener datos al validar

Cita:
Iniciado por Nemutagk Ver Mensaje
o.O es un ejemplo, yo no se bien, o al menos no entendi cuales son los campos que quieras pasar, cambia el "codigo" por la variable que desees....

Código PHP:
Ver original
  1. <?php
  2. function obtenercod1($cod1){
  3.        
  4.             $consulta = "select * from productosbodega where codigo='$cod1'";
  5.             $ejecutar = mysql_query($consulta, $this->id_con);
  6.             if(mysql_num_rows($ejecutar)==0){
  7.  
  8.            
  9.             ?>
  10.             <script language="javascript">
  11.                 var answer = confirm ("Producto no Existe o Código es Erroneo, ¿Desea Ingresar un Nuevo Producto?")
  12.                 if (answer)
  13.                 parent.document.location =  "Ingreso Productos Bodega.php?variable1=<?php echo $cod1; ?>&variable2=<?echo 'variable2'; ?>";
  14.                 else
  15.                 parent.document.location =  "Factura.php?variable1=<?php echo $cod1; ?>&variable2=<?echo 'variable2'; ?>";
  16.             </script>
  17.             <?php
  18.                
  19.             }else{
  20.                
  21.             while($rs = mysql_fetch_array($ejecutar, $this->id_bd)){
  22.            
  23.             $_SESSION['cod1'] = $rs['codigo'];
  24.             $_SESSION['des1'] = $rs['descripcion'];
  25.             $_SESSION['val1'] = $rs['valorunitario'];
  26.            
  27.             }
  28.             }            
  29.     }
Deja ver si me explico bien, porque no comprendo. -.-

En el formulario hay muchos submit que llaman a funciones PHP, por eso al llamar a una función PHP para que no se me borren los datos del formulario los almaceno, son muchos, por ejemplo:

Código PHP:
$_SESSION['rut'] = $_POST['rut'];
$_SESSION['nom'] = $_POST['nom']; 
etc...

y luego los devuelvo al formulario a cada textbox
Código PHP:
<input type="text" name="rut" id="rut" value="<?php if (isset($_SESSION['rut'])){ echo $_SESSION['rut']; } ?>" />
etc...

Me funciona de maravillas al llamar a una función PHP.

Pero al momento de entrar al Javascript
Código HTML:
<script language="javascript">
var answer = confirm ("Producto no Existe o Código es Erroneo, ¿Desea Ingresar un Nuevo Producto?")
if (answer)
parent.document.location =  "Ingreso Productos Bodega.php";
else
parent.document.location =  "Factura.php";
</script> 
Se me borran todos los datos.

Es posible almacenar temporalmente digamos los datos en el Javascript o dentro de la función o donde sea y luego devolverlos de la misma manera para que no se me borren, puedo enviar más de una variable de la manera que tu me dices, porqeu son muchas?

Eso no comprendo.

Agradezco mucho tu tiempo y perdona mi torpesa, pero aún no comprendo bien como hacerlo.
Gracias.
  #8 (permalink)  
Antiguo 10/09/2012, 21:51
 
Fecha de Ingreso: septiembre-2012
Mensajes: 23
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Formulario PHP mantener datos al validar

Bien, al final dado que estoy falto de conocimiento, preferí omitir la pregunta y hacer un Dialog con Jquery enviando un aviso, así no se me borran los datos.

Agradezco mucho tu ayuda!

Etiquetas: formulario, mysql, sql
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 22:19.