Foros del Web » Programando para Internet » PHP »

Problema con sesiones

Estas en el tema de Problema con sesiones en el foro de PHP en Foros del Web. Buenas foro Tengo un problema con una sesión que me guarda los datos de un pedido. al momento de entrar en la pagina por default ...
  #1 (permalink)  
Antiguo 05/04/2013, 16:39
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Pregunta Problema con sesiones

Buenas foro

Tengo un problema con una sesión que me guarda los datos de un pedido.
al momento de entrar en la pagina por default me carga un registro en blanco en la sesión, si trato de ponerle un if que valide que si se envío el formulario inicie la sesión no guarda los datos.


Este es mi formulario.
Código HTML:
Ver original
  1. <form method="GET" name="agregar" id="agregar" >
  2.                     <fieldset>
  3.                         <legend>Agregar producto | servicio</legend>
  4.                     <label for="cantidad">Cantidad</label>
  5.                     <input type="text" name="cantidad" id="cantidad" size="15" /><br />
  6.                     <label for="servicio">Producto | Servicio</label>
  7.                     <input type="text" name="servicio" id="servicio" size="45" autocomplete="off" /><br /><br />
  8.                     <input type="hidden" name="productoID" id="productoID" />
  9.                     <label for="produccion"><input type="checkbox" name="produccion" id="produccion" value="1" /> Producci&oacute;n </label>
  10.                     <label for="diseno"><input type="checkbox" name="diseno" id="diseno" value="1" /> Dise&ntilde;o </label>
  11.                     <label for="inventario"><input type="checkbox" name="inventario" id="inventario" value="1" onClick="disableOthers(this)" /> Inventario </label><br />
  12.                     <label for="comentario_adicional">Comentario adicional</label>
  13.                     <textarea name="comentario_adicional" cols="45" rows="5"></textarea>
  14.                     <div id="mostrarDiv"><a href="javascript:mostrardiv();">+ almac&eacute;n</a></div>
  15.                         <div id="flotante" style="display:none;">
  16.                         <a href="javascript:cerrar();"> - almac&eacute;n</a><br />
  17.                             <div class="izquierda">
  18.                                 <label for="existencias">Existencias</label>
  19.                                 <input type="text" name="existencias" id="existencias" size="7" /><br />
  20.                                 <label for="inventariado">Inventariado</label>
  21.                                 <input type="text" name="inventariado" id="inventariado" size="7" />
  22.                             </div>
  23.                             <div class="derecha">
  24.                                 <label for="minimo_stock">Minimo stock</label>
  25.                                 <input type="text" name="minimo_stock" id="minimo_stock" size="7" /><br />
  26.                                 <label for="estado">Estado</label>
  27.                                 <input type="text" name="estado" id="estado" size="10" />
  28.                             </div>
  29.                         </div>
  30.                     <input type="submit" name="nuevo" value="Agregar" />
  31.                     </fieldset>
  32.                     </form>

este es el archivo que crea la sesion y guarda los datos.

Código PHP:
Ver original
  1. <?php
  2. require_once '../_clases/connection.class.php';
  3. require_once '../_clases/login.class.php';
  4. require_once '../_clases/pedidos.class.php';
  5. $conn = new Connection();
  6. $login = new login($conn);
  7. $ped = new pedido($conn);
  8. $login->seguridad();
  9.  
  10. echo "<SCRIPT language='JavaScript' type='text/javascript'> document.agregar.reset();</SCRIPT>";
  11. if(isset($_GET['nuevo'])):
  12. $p = $ped->retornaPrecio($_GET['productoID'],$_GET['cantidad']);
  13.         $precio = $p->precio;
  14.            
  15.             @$pedido = $_SESSION["pedido"];
  16.             $pedido[$_GET["productoID"]] = array (
  17.             "codigo"=>$_GET["productoID"],
  18.             "cantidad"=>$_GET["cantidad"],
  19.             "servicio"=>$_GET["servicio"],
  20.             "produccion"=>$_REQUEST['produccion'],
  21.             "diseno"=>$_REQUEST['diseno'],
  22.             "inventario"=>$_REQUEST['inventario'],
  23.             "precioU"=>$precio,
  24.             "descuento"=>0
  25.             );
  26.             $_SESSION["pedido"] = $pedido;
  27. endif;            
  28. ?>
  29. <div id="detalle-gral">
  30.     <table border="1" width="100%">
  31.         <thead>
  32.             <tr>
  33.                 <td>Cantidad</td>
  34.                 <td>Producto | Servicio</td>
  35.                 <td>P</td>
  36.                 <td>D</td>
  37.                 <td>I</td>
  38.                 <td>$ Precio U.</td>
  39.                 <td>% Descuento</td>
  40.                 <td>$ Importe</td>  
  41.             </tr>
  42.         </thead>
  43.         <tbody>
  44.         <?php
  45.        
  46.         if(!isset($_SESSION['pedido']) || empty($_SESSION['pedido'])):
  47.         ?>
  48.             <tr>
  49.                 <td colspan="8">A&uacute;n no se ha agregado ningun producto al detalle.</td>
  50.             </tr>
  51.         <?php
  52.         else:
  53.        
  54.         $total = 0;
  55.         $subtotal = 0;
  56.         define("iva",.16);
  57.         $precioIva = 0;
  58.         $subtotalProducto = 0;
  59.         $descuentoGral = 0;
  60.        
  61.         foreach($_SESSION["pedido"] as $item):
  62.             $importe = $item['precioU'] * $item['cantidad'];
  63.             $subtotal += $importe;
  64.             $precio_iva = $subtotal * iva;
  65.             $total = $subtotal + $precio_iva;
  66.         ?>
  67.             <tr>
  68.                 <td><?php echo $item['cantidad']; ?></td>
  69.                 <td><?php echo $item['servicio']; ?></td>
  70.                 <td><?php echo $item['produccion'] ?></td>
  71.                 <td><?php echo $item['diseno']; ?></td>
  72.                 <td><?php echo $item['inventario']; ?></td>
  73.                 <td><?php echo $item['precioU']; ?></td>
  74.                 <td><?php echo $item['descuento']; ?></td>
  75.                 <td><?php echo "$ ".number_format($importe,2,'.',','); ?></td>
  76.             </tr>
  77.         <?php
  78.         endforeach;
  79.         endif;
  80.         ?>
  81.         </tbody>
  82.     </table>              
  83. </div>
  84. <div id="totales-pedido">
  85.     subtotal<input type="text" name="subtotal" id="subtotal" value="<?php echo $subtotal; ?>" size="5" readonly="readonly" />
  86.     impuestos<input type="text" name="iva" id="iva" value="<?php echo $precio_iva; ?>" size="5" readonly="readonly" />
  87.     total<input type="text" name="total" id="total" value="<?php echo $total; ?>" size="5" readonly="readonly" />
  88. </div>

esta es mi funcion AJAX para que no recargue la pagina.
Código Javascript:
Ver original
  1. $(function(){
  2.     $("#agregar").submit(function(){
  3.         $.ajax({
  4.             type:"GET",
  5.             url:"response_pedido.php",
  6.             dataType:"html",
  7.             data:$(this).serialize(),
  8.             beforeSend:function(){
  9.                 $("#loading").hide();
  10.             },
  11.             success:function(response){
  12.                     $("#response").html(response);
  13.                     $("#loading").hide();
  14.             }
  15.         })
  16.         return false;
  17.     })
  18. })


Espero me puedan ayudar.
__________________
Lo imposible solo cuesta un poco mas
  #2 (permalink)  
Antiguo 05/04/2013, 16:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con sesiones

Me pregunto en cual de todos tus script inicias la sesión con session_start().

Además recuerda que no puedes imprimir nada antes de asignar valores a tu sesión, cosa que estás haciendo, evidentemente.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 05/04/2013, 16:48
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema con sesiones

No tengo problema con el inicio de la sesion si no que al entrar en el archivo la sesion ya tiene un registro. Y la sesion se comienza en el que tiene el formulario.

Dime eso tiene algo que ver con mi problema.
__________________
Lo imposible solo cuesta un poco mas
  #4 (permalink)  
Antiguo 05/04/2013, 16:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con sesiones

Cita:
Iniciado por jandrogdz Ver Mensaje
No tengo problema con el inicio de la sesion si no que al entrar en el archivo la sesion ya tiene un registro. Y la sesion se comienza en el que tiene el formulario.

Dime eso tiene algo que ver con mi problema.
Bueno, esa primer parte que comentas está como muy misteriosa, no es posible que PHP te genere valores de la nada y por arte de magia.

Seguramente algo haces y no te estás dando cuenta, ¿cómo saber con precisión?

Tampoco olvides mi segundo comentario de la respuesta anterior.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 05/04/2013, 16:55
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema con sesiones

Todo estaba funcionando muy bien hasta que implemente lo de ajax para procesar los datos sin recargar la pagina. Y como te lo comente lo unico que hace el echo es borrar los datos que tiene el formulario.

Mi problema es que cuando entro a la pagina la session ya existe y tiene un registro guardado, en blanco pero lo tiene.
__________________
Lo imposible solo cuesta un poco mas
  #6 (permalink)  
Antiguo 05/04/2013, 17:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con sesiones

1. No importa si usas AJAX o no, si imprimes algo antes de asignar, iniciar o destruir la sesión no funcionará
2. Si no estás depurando ningún tipo de actividad en todos tus script, ¿cómo pretendes que adivinemos las causas?
3. La información que ofreces es poca, por no decir mínima o casi nula, es complicado entender así
4. Tu método con jQuery no está cancelando la funcionalidad por defecto del formulario, eso conduce a duplicidad de datos y/o campos en blanco
5. Si vas a limpiar el formulario, ¿por qué no lo haces después de procesar la petición AJAX? Es absurdo limpiarla con otra linea de código en la respuesta que esperas
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: formulario, html, registro, sesiones
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 03:31.