Ver Mensaje Individual
  #10 (permalink)  
Antiguo 16/10/2006, 11:30
n3m0
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 17 años, 10 meses
Puntos: 0
Asi es Cluster, ya sabia que el fallo era de las sesiones, ya que un carrito se basa en eso. Me he revisado el articulo que se hace en php.net sobre las mismas pero no acabo de entender como reparar mi fallo.

te explico lo que hace mi codigo, el cliente entra en una pagina ve un producto selecciona un checkbox y envia el formulario, al enviarlo llega a la pagina de envio la que esta arriba, esta crea la sesion con la clase carrito y demas e introduce los productos, entonces, el cliente puede seguir comprando, o ir a facturar donde le sale una lista con lo que ha comprado, y esto se envia por mail.
El problema era que al introducirlo lo hace una, varias o ninguna vez, si un experto como tu dice que puede ser por el tema del SID, pues es lo que tengo que mirar. en ningun momento le indico nada del SID, por lo tanto supongo muchas cosas como tu bien dices.

Que debo hacer? pasarlo por url?
os pongo el codigo donde saco la informacion guardada en la sesion.

Código PHP:
<?
session_start
();
if (!isset(
$_SESSION["carrito"])){
    
$_SESSION["carrito"] = new carrito();
}

class 
carrito {

       var 
$num_productos;
       var 
$array_id_prod;
       var 
$array_nombre_prod;
       var 
$array_precio_prod;
    var 
$array_tarifa;
    function 
carrito () {
           
$this->num_productos=0;
                        
                        }
                        
    function 
imprime_carrito(){
        
    
$suma 0;
        
$cadena"<table width='582' border='1' bordercolor='#000000' cellspacing='0' cellpadding='2' class='txt'>
              <tr>
                <td align='center' class='txt'><b> Referencia </b></td>
                <td align='center' class='txt'><b> Descripcion </b></td>
                <td align='center' class='txt'><b> Precio </b></td>
                <td align='center' class='txt'><b> Tarifa transporte </b></td>
                <td align='center' class='txt'> &nbsp; </td>
              </tr>"
;
        for (
$i=0;$i<$this->num_productos;$i++){
            if(
$this->array_id_prod[$i]!=0){
                
$cadena.="<tr>
                <td class='txt' align=\"center\">" 
$this->array_ref[$i] . "</td>
                <td class='txt'>" 
$this->array_nombre_prod[$i] . "</td>
                <td class='txt' align=\"right\">" 
$this->array_precio_prod[$i] . " €</td>
                <td class='txt' align=\"right\">"
.$this->array_tarifa[$i]." €</td>
                <td class='txt' align=\"center\"><a class=\"txt\" href='del_prod.php?linea=$i'>Eliminar</a></td>
                </tr>"
;
                
$suma += $this->array_precio_prod[$i];
                
$suma2 += $this->array_tarifa[$i];
                
$subtotal number_format("$suma+$suma2",2,".","");
                
//$subtotal1 = round("$suma+$suma2",2);
                
$iva1$subtotal 0.16;
                
$iva2 round("$iva1",2);
                
$iva=number_format("$iva2",2,".","");
                
$total1=$subtotal $iva;
                
$total2 round("$total1",2);
    
                
$total=number_format("$total2",2,".","");
                
            }
        }
        
$cadena.="<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>";
        
//muestro el total
        
$cadena.="<tr><td>&nbsp;</td><td>&nbsp;</td> <td>&nbsp;</td><td  class=\"txt\" align=\"right\"><b>Subtotal:</b></td><td class=\"txt\" align=\"right\"> <b> $subtotal € </b></td></tr>";
        
//IVA
        
$cadena.="<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td class=\"txt\" align=\"right\"><b>IVA (16%):</b></td><td class=\"txt\" align=\"right\"> <b> " $iva " € </b></td></tr>";
        
$cadena.="<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td class=\"txt\" align=\"right\"><b>Total:</b></td><td class=\"txt\" align=\"right\"> <b> " $total " € </b></td></tr>";
        
$cadena.="</table>";
echo 
$cadena;
return 
$cadena;
    }}
//en otro archivo llamo a la funcion imprime carrito
$_SESSION["carrito"]->imprime_carrito();
?>