Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Problema con class carrito

Estas en el tema de Problema con class carrito en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, tengo hecho un carrito de la compra en Php + mysql usando sesiones en las cuales incorporo precio y tarifa de transporte de los ...
  #1 (permalink)  
Antiguo 14/10/2006, 08:40
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 17 años, 9 meses
Puntos: 0
Exclamación Carrito de la compra PHP

Hola, tengo hecho un carrito de la compra en Php + mysql usando sesiones en las cuales incorporo precio y tarifa de transporte de los diferentes objetos a la venta. El carrito funciona a la perfeccion en todos estos navegadores ( Firefox, netscape 6, opera 9) pero en Internet Explorer 6 tiene un pequeño fallo, y me esta desquiciando el problema porque tengo que entregarlo y no hallo con la solucion. El problema es el siguiente hay un archivo que inserta los productos, a la sesion, en todos los navegadores los inserta, pero en internet explorer aveces lo inserta correctamente, la mayoria de veces duplicados y lo que es gracioso aveces ni lo inserta. Os dejo el codigo por si me podeis ayudar, ya que lo necesito.

Código PHP:
<?
include("conf.php");
session_start();
//si no esta creado el objeto carrito en la sesion, lo creo
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;
    var 
$array_ref;

    function 
carrito () {
           
$this->num_productos=0;
            }
    
    function 
introduce_producto($id,$ref,$nombre,$precio,$tarifa){
        
$this->array_id_prod[$this->num_productos]=$id;
        
$this->array_ref[$this->num_productos]=$ref;
        
$this->array_nombre_prod[$this->num_productos]=$nombre;
        
$this->array_precio_prod[$this->num_productos]=$precio;
        
$this->array_tarifa[$this->num_productos]=$tarifa;
        
$this->num_productos++;
    
                            }
    }


if(
$anf != ''){
                            
$ref=mysql_query("SELECT * FROM anforas WHERE Referencia=\"$anf\"");
                                if(
$con mysql_fetch_array($ref)){
                                
$_SESSION["carrito"]->introduce_producto(1,$con[Referencia], $con[Descripcion],$con[Precio],$con[Tarifa_transporte]);
}}

if(
$ch2 != ''){
                            
$acc=mysql_query("SELECT * FROM accesorios WHERE Referencia=\"$ch2\"");
                                if(
$con2 mysql_fetch_array($acc)){
                                
$_SESSION["carrito"]->introduce_producto(2,$con2[Referencia], $con2[Descripcion],$con2[Precio],$con2[Tarifa_transporte]);
}}
if(
$ch3 != ''){
                            
$acc2=mysql_query("SELECT * FROM accesorios WHERE Referencia=\"$ch3\"");
                                if(
$con3 mysql_fetch_array($acc2)){
                                
$_SESSION["carrito"]->introduce_producto(3,$con3[Referencia], $con3[Descripcion],$con3[Precio],$con3[Tarifa_transporte]);
}}
if(
$ch4 != ''){
                            
$acc3=mysql_query("SELECT * FROM accesorios WHERE Referencia=\"$ch4\"");
                                if(
$con4 mysql_fetch_array($acc3)){
                                
$_SESSION["carrito"]->introduce_producto(4,$con4[Referencia], $con4[Descripcion],$con4[Precio],$con4[Tarifa_transporte]);
}}
if(
$ch5 != ''){
                            
$acc4=mysql_query("SELECT * FROM accesorios WHERE Referencia=\"$ch5\"");
                                if(
$con5 mysql_fetch_array($acc4)){
                                
$_SESSION["carrito"]->introduce_producto(5,$con5[Referencia], $con5[Descripcion],$con5[Precio],$con5[Tarifa_transporte]);
}}
if(
$ch6 != ''){
                            
$acc5=mysql_query("SELECT * FROM accesorios WHERE Referencia=\"$ch6\"");
                                if(
$con6 mysql_fetch_array($acc5)){
                                
$_SESSION["carrito"]->introduce_producto(6,$con6[Referencia], $con6[Descripcion],$con6[Precio],$con6[Tarifa_transporte]);
}}
if(
$ch7 != ''){
                            
$acc6=mysql_query("SELECT * FROM accesorios WHERE Referencia=\"$ch7\"");
                                if(
$con7 mysql_fetch_array($acc6)){
                                
$_SESSION["carrito"]->introduce_producto(7,$con7[Referencia], $con7[Descripcion],$con7[Precio],$con7[Tarifa_transporte]);
}}
if(
$ch8 != ''){
                            
$acc7=mysql_query("SELECT * FROM accesorios WHERE Referencia=\"$ch8\"");
                                if(
$con8 mysql_fetch_array($acc7)){
                                
$_SESSION["carrito"]->introduce_producto(8,$con8[Referencia], $con8[Descripcion],$con8[Precio],$con8[Tarifa_transporte]);
}}
if(
$ch9 != ''){
                            
$acc8=mysql_query("SELECT * FROM accesorios WHERE Referencia=\"$ch9\"");
                                if(
$con9 mysql_fetch_array($acc8)){
                                
$_SESSION["carrito"]->introduce_producto(9,$con9[Referencia], $con9[Descripcion],$con9[Precio],$con9[Tarifa_transporte]);
}}
if(
$ch10 != ''){
                            
$acc9=mysql_query("SELECT * FROM accesorios WHERE Referencia=\"$ch10\"");
                                if(
$con10 mysql_fetch_array($acc9)){
                                
$_SESSION["carrito"]->introduce_producto(10,$con10[Referencia], $con10[Descripcion],$con10[Precio],$con10[Tarifa_transporte]);
}}
if(
$acce != ''){
                            
$acc10=mysql_query("SELECT * FROM accesorios WHERE Referencia=\"$acce\"");
                                if(
$con11 mysql_fetch_array($acc10)){
                                
$_SESSION["carrito"]->introduce_producto(11,$con11[Referencia], $con11[Descripcion],$con11[Precio],$con11[Tarifa_transporte]);
}}
if(
$lamp != ''){
                            
$acc11=mysql_query("SELECT * FROM lamparas WHERE Referencia=\"$lamp\"");
                                if(
$con12 mysql_fetch_array($acc11)){
                                
$_SESSION["carrito"]->introduce_producto(12,$con12[Referencia], $con12[Descripcion],$con12[Precio],$con12[Tarifa_transporte]);
}}

?>
Gracias de antemano
  #2 (permalink)  
Antiguo 14/10/2006, 11:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Consejo:

Olvidate de que usas un "carrito de compra" .. tu problema principal está con las sesiones de PHP y como se gestiona la propagación del SID. (esto te lo comento para que no metas "ruido" a tu tema y te centres en lo que realmente tienes el problema: sesiones).

Según tu código ... no se observa como lo haces funcionar, es decir . .como lo llamas, sólo pusistes tu classes donde se vén como declaras y obtienes variables de sesión. Te comento que el problema debe estar sobre la propagación del SID (IDentificador Único de Sesión).

Como no vemos el código completo o parte de del mismo sobre como lo usas, he de "asumir" que propagas el SID dejando que PHP lo haga por tí según configuración de este. y .. me "atrevería" a decir que asumes que PHP lo hará en una "cookie" y no por el URL .. o bien te falla justamente en los lugares donde si no se propaga por Cookies y tu no lo propagas manualmente no se continuará el uso de la sesión en curso, esto es en sitios donde redirecciones por javascript, con header() de tipo "Location" y algunos casos más.

(Te das cuenta todas las "suposciones" que tenemos que hacer? .. indica el código completo que usas y la configuración de tu servidor sobre sesiones para ver como propagas el SID o como dejas a PHP que lo haga).

Si dices que en cierto navegador te funciona y en otros no .. tienes un 99% de probabilidades de que tengsa problemas con la creación de la cookie que PHP está intentando crear en ese nevegador para propagar el SID (dato que nos relaciona al "cliente" con los datos de su sesión exclusiva en el servidor).

Puedes ir revisando en los navegadores que no te funcionen las sesiones si aceptas cookies o los niveles de seguridad de tu navegador hacen que no acepten determinadas cookies (de sesión, no certificadas .. etc). La mayoría de veces el problema es eso.

Pero .. tendrías que conocer lo suficiente de sesiones como para -saber- como tu aplicación y/o configuración de PHP propaga el dichoso "SID" .. y así no tener "sorpresas" con diferentes configuraciones tanto de PHP (de como ahí se indica la propagación del SID) y de los "clientes" (navegadores) si aceptan o no cookies (si corresponde).

Todo esto está en la documentación de PHP sobre sesiones. En su parte de "configuración" y "teoría".

www.php.net/session

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 14/10/2006, 17:47
Avatar de omegafunky  
Fecha de Ingreso: diciembre-2003
Ubicación: Tabasco, Mexico
Mensajes: 3.534
Antigüedad: 20 años, 4 meses
Puntos: 33
Problema con class carrito

Hola amigos ando modificando un carrito de compras de desarrollo web para adaptarlo a mis necesidades, lo baje y jala al 100 weno el ejemplo a como pasa las URLs x GET pero a la hora k le pongo mis claves, nombres de producto y precio no los guarda no c en k esta el error, aunk ya sospecho k es x los tipos de campos k uso en la clave(id) y el nombre, les pongo el codigo a ver si me ayudan

<a href="mete_producto.php?id=Mon-VA503B&nombre=Monitor LCD ViewSonic VA503B de 15Pulg, Color Negro&precio=1,750.00">Comprar</a> Esto NO lo guarda

<a href="mete_producto.php?id=20&nombre=cosa&precio=33">Comprar2</a> Esto SI lo guarda

lib_carrito.php
Código PHP:
<?php
class carrito {
class 
carrito {
 
//atributos de la clase
    
var $num_productos;
    var 
$array_id_prod;
    var 
$array_nombre_prod;
    var 
$array_precio_prod;
 
//constructor. Realiza las tareas de inicializar los objetos cuando se instancian
 //inicializa el numero de productos a 0
 
function carrito () {
     
$this->num_productos=0;
 }
 
 
//Introduce un producto en el carrito. Recibe los datos del producto
 //Se encarga de introducir los datos en los arrays del objeto carrito
 //luego aumenta en 1 el numero de productos
 
function introduce_producto($id_prod,$nombre_prod,$precio_prod){
  
$this->array_id_prod[$this->num_productos]=$id_prod;
  
$this->array_nombre_prod[$this->num_productos]=$nombre_prod;
  
$this->array_precio_prod[$this->num_productos]=$precio_prod;
  
$this->num_productos++;
 }
}
 
?>
mete_producto.php
Código PHP:
<?php
include("lib_carrito.php");
$_SESSION["ocarrito"]->introduce_producto($_GET["id"], $_GET["nombre"], $_GET["precio"]);
?>
  #4 (permalink)  
Antiguo 15/10/2006, 09:49
Avatar de omegafunky  
Fecha de Ingreso: diciembre-2003
Ubicación: Tabasco, Mexico
Mensajes: 3.534
Antigüedad: 20 años, 4 meses
Puntos: 33
No saben en que consiste?
  #5 (permalink)  
Antiguo 15/10/2006, 19:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El problema no está en tu classe del "carrito" sino en el link que generas para introducir tu producto.

Fijate bien .. En el URL que generas que no te funciona NO es correcto según standard CGI .. contiene espacios y/o caracteres acentuados y otros similares (o los podría contener). Debes codificar el URL (sus datos que puedan contener esos espacios y demás) antes de pasarlos por un LINK.

No sé de donde vienen esos datos (supongo que PHP los generará?) .. Bueno .. sea como sea en PHP lo harías tipo:

Código PHP:
<a href="mete_producto.php?id=<? echo urlencode($row['id']) ?>&nombre=<? echo urlencode($row['nombre']) ?>&precio=<? echo urlencode($row['precio']) ?>">Comprar</a>
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 15/10/2006, 22:19
Avatar de omegafunky  
Fecha de Ingreso: diciembre-2003
Ubicación: Tabasco, Mexico
Mensajes: 3.534
Antigüedad: 20 años, 4 meses
Puntos: 33
Hola

k tal Cluster oye fijate k probe el codigo k me diste y en efecto sustituye los espacios por + pero aun asi no me guarda en el carrito =( k sera???
  #7 (permalink)  
Antiguo 16/10/2006, 05:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Realmente no indicas el código completo como lo usas .. así que estamos en las mismas.

Por otro lado ... si hicistes un urlencode() .. ahora tocará un urldecode() a la hora de recojer esos datos en el script de proceso.

Código PHP:
$_SESSION["ocarrito"]->introduce_producto(urldecode($_GET["id"]), $_GET["nombre"], $_GET["precio"]); 
Lo mismo con otras variables.

Analiza que tiene tus array's .. usa print_r() sobre las variables que manejas (arrays).

El objeto "carrito" maneja sólo un array (bueno, varios para cada item del producto).

No entiendo por qué la classe tiene la definición:

class carrito
class carrito

Segúro que el código del mismo es el que tienes? .. no se ven métodos para extraer lo que el carrito almacena.

Muevo tu pregunta al foro de Programación orientada a objetos por si hay más detalles, pero adjunta el código completo que uses .. tanto del objeto (classe) como de como lo usas.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 16/10/2006, 10:25
Avatar de omegafunky  
Fecha de Ingreso: diciembre-2003
Ubicación: Tabasco, Mexico
Mensajes: 3.534
Antigüedad: 20 años, 4 meses
Puntos: 33
Hola

la vdd nada sigo sin entender x k no las pasa =( bueno no puse todo el codigo del lib_carrito pero aki c los dejo, espero puedan encontrar donde esta el error ya k yo me hago bolas con eso d elos objetos epenas le estoy agarrando, el codigo esta cual lo copie de desarrolo web bueno me lo baje ya en zip, lo probe y jalaba bien, el problema es cuando kiero meterle mi id alfanumerico, el nombre dle producto largo y con espacios y el precio en formato 200.00 digo k x ahi esta el error.
ejemplo de las variables k paso
id = Mem-king1gb
nombre = memoria de 1gb maraca kingston
precio = 320.00

lib_carrito.php
Código PHP:
<?php
class carrito {
 
//atributos de la clase
    
var $num_productos;
    var 
$array_id_prod;
    var 
$array_nombre_prod;
    var 
$array_precio_prod;
 
//constructor. Realiza las tareas de inicializar los objetos cuando se instancian
 //inicializa el numero de productos a 0
 
function carrito () {
     
$this->num_productos=0;
 }
 
 
//Introduce un producto en el carrito. Recibe los datos del producto
 //Se encarga de introducir los datos en los arrays del objeto carrito
 //luego aumenta en 1 el numero de productos
 
function introduce_producto($id_prod,$nombre_prod,$precio_prod){
  
$this->array_id_prod[$this->num_productos]=$id_prod;
  
$this->array_nombre_prod[$this->num_productos]=$nombre_prod;
  
$this->array_precio_prod[$this->num_productos]=$precio_prod;
  
$this->num_productos++;
 }
 
//Muestra el contenido del carrito de la compra
 //ademas pone los enlaces para eliminar un producto del carrito
 
function imprime_carrito(){
  
$suma 0;
  echo 
'<table border=1 cellpadding="3">
     <tr>
    <td><b>Nombre producto</b></td>
    <td><b>Precio</b></td>
    <td>&nbsp;</td>
     </tr>'
;
  for (
$i=0;$i<$this->num_productos;$i++){
   if(
$this->array_id_prod[$i]!=0){
    echo 
'<tr>';
    echo 
"<td>" $this->array_nombre_prod[$i] . "</td>";
    echo 
"<td>" $this->array_precio_prod[$i] . "</td>";
    echo 
"<td><a href='eliminar_producto.php?linea=$i'>Eliminar producto</td>";
    echo 
'</tr>';
    
$suma += $this->array_precio_prod[$i];
   }
  }
  
//muestro el total
  
echo "<tr><td><b>TOTAL:</b></td><td> <b>$suma</b></td><td>&nbsp;</td></tr>";
  
//total más IVA
  
echo "<tr><td><b>IVA (16%):</b></td><td> <b>" $suma 1.16 "</b></td><td>&nbsp;</td></tr>";
  echo 
"</table>";
 }
 
 
//elimina un producto del carrito. recibe la linea del carrito que debe eliminar
 //no lo elimina realmente, simplemente pone a cero el id, para saber que esta en estado retirado
 
function elimina_producto($linea){
  
$this->array_id_prod[$linea]=0;
 }

//inicio la sesión
session_start();
//si no esta creado el objeto carrito en la sesion, lo creo
if (!isset($_SESSION["ocarrito"])){
 
$_SESSION["ocarrito"] = new carrito();
}
?>
mete_producto.php

Código PHP:
<?php
include("lib_carrito.php");
//$_SESSION["ocarrito"]->introduce_producto($_GET["id"], $_GET["nombre"], $_GET["precio"]);
$_SESSION["ocarrito"]->introduce_producto(urldecode($_GET["id"]), $_GET["nombre"], $_GET["precio"]);  
?>
<html>
<head>
 <title>Introduce Producto</title>
</head>
<body>
Producto introducido.
<br>
<br>
<a href="index.php">- Volver</a>
<br>
<br>
<a href="ver_carrito.php">- Ver carrito</a>
</body>
</html>
URL k uso para mandar productos al Carrito
Código PHP:
<a href="mete_producto.php?id=<? echo urlencode($row['id']) ?>&nombre=<? echo urlencode($row['nombre']) ?>&precio=<? echo urlencode($row['precio']) ?>">Comprar</a>
  #9 (permalink)  
Antiguo 16/10/2006, 10:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Porque no pruebas cambiar el metodo? por decir en lugar de enviar todos los datos, solo envias el ID, y en tu metodo de agregar al carrito, haces la consulta a tu base de datos y sacas el nombre y el precio y ya lo insertas...
  #10 (permalink)  
Antiguo 16/10/2006, 11:30
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 17 años, 9 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();
?>
  #11 (permalink)  
Antiguo 16/10/2006, 14:51
Avatar de omegafunky  
Fecha de Ingreso: diciembre-2003
Ubicación: Tabasco, Mexico
Mensajes: 3.534
Antigüedad: 20 años, 4 meses
Puntos: 33
Mmmmm buen punto, deja checarlo y ya lo comento =D
  #12 (permalink)  
Antiguo 17/10/2006, 06:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ok .. pues lo primero que tienes que hacer son pruebas simples con sesiones y descartar problemas con las mismas.

Crea un script con una definición de sesión y pasas a otro script para leerlo por un link o redireccionamiento como header() de tipo "Location".

Revisa tu configuración de PHP y confirma como propagas el SID. Se puede hacer en cookies o en el URL (o combinado) .. Indica tu configuración al respecto.

En el caso que propagues el SID en cookies, requieres que tu navegador acepte dichas cookies, revisa tus niveles de seguridad de tu navegador y que nada más lo bloquee (las cookies).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 17/10/2006, 07:40
Avatar de omegafunky  
Fecha de Ingreso: diciembre-2003
Ubicación: Tabasco, Mexico
Mensajes: 3.534
Antigüedad: 20 años, 4 meses
Puntos: 33
no ps nop sige sin guardarlas en el carrito y el problema es la id = Mem-king1gb me imagino x el tipo de valores que contiene, como la defino o le hago para k acepte el valor alfanumerico?
  #14 (permalink)  
Antiguo 17/10/2006, 08:11
Avatar de shinblood  
Fecha de Ingreso: diciembre-2003
Ubicación: lima
Mensajes: 214
Antigüedad: 20 años, 4 meses
Puntos: 1
consulta como y donde estas intanciado la clase carrito y ademas verifica que en el php.ini este configurado para mostrarte todos lo errores y warnings
__________________
saludos :adios:
  #15 (permalink)  
Antiguo 18/10/2006, 09:49
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 17 años, 9 meses
Puntos: 0
El id debe de ser numerico, o una variable con valor entero.
  #16 (permalink)  
Antiguo 18/10/2006, 09:54
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 17 años, 9 meses
Puntos: 0
Sigo con problemas pero voy quitando posibles problemas. Ahora en Internet explorer donde tenia fallos con el tema del SID en cookies, lo paso por URL y este punto ya esta OK.
Pero sigo con el fallo que aveces envia los productos duplicados.
He deducido y he comprovado que este problema viene del tema:

Funcion insertar producto -> id
si el valor lo voy modificando y lo voy aumentando, no hay problema, pero claro lo hago manualmente, es decir
id =1 una vez se ha insertado el producto id =2 asi... n veces.
He intentado hacer un contador $i que cuando inserta un producto se sume $i++ pero cuando vuelvo a la web para comprar algo mas esta otra vez a 1, como podria hacer esto :S

Gracias,
n3m0
  #17 (permalink)  
Antiguo 18/10/2006, 10:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Uní los temas abiertos sobre lo mismo para que todo el mundo tenga toda la información a la mano y pueda darte alguna respuesta más atinada.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #18 (permalink)  
Antiguo 18/10/2006, 10:53
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 17 años, 9 meses
Puntos: 0
Como quieras pero los dos son carritos basados en el mismo pero, són diferentes.
El mio tiene diferentes cambios del original. :S
Este usuario tiene otros problemas, diferentes a los mios creo que era mejor dejarlo como estava pero yo no soy moderador ^^ ;)
  #19 (permalink)  
Antiguo 18/10/2006, 11:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
OPsss! .. pues me equivoqué .. Ví el mismo código (o parecido) pero no me fijé en los "nicks" de los autores.

Voy a ver si puedo solventar el problema y "separar" nuevamente los temas unidos.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #20 (permalink)  
Antiguo 23/10/2006, 14:08
berseco
Invitado
 
Mensajes: n/a
Puntos:
Enviar la cesta por e-mail

Hola, estoy adadtando el mismo carrito a mi web y el problema que tento es que quiero enviar el carrito, junto con un formulario con los datos personales del cliente por e-mail con funcion mail().

lo he conse guido envia con print_r(), pero me lo manda sin ningún tipo de formato. Y yo quierio recivirlo tal y como sale en pantalla.


ver_carrito.php

Código PHP:
<?
include("lib_carrito.php");
?>

<html>
<head>
    <title>Introduce Producto</title>
</head>



<?
$_SESSION
["ocarrito"]->imprime_carrito();
$datos0;

 echo 
"<form name=\"pedido\" method=\"post\" action=\"envio.php\">
    <table width=\"100%\" border=\"0\" cellpadding=\"3\" cellspacing=\"3\">
      <tr>
        <td>Nombre</td><td><input name=\"nom\" type=\"text\" size=\"35\"></td>
        <td>Apellidos</td><td><input name=\"ape\" type=\"text\" size=\"70\"></td>
      </tr>
      <tr>
        <td>DNI / NIF </td><td><input name=\"dni\" type=\"text\" size=\"35\"></td>
        <td>Direcci&oacute;n </td><td><input name=\"dire\" type=\"text\" size=\"70\"></td>
      </tr>
      <tr>
        <td height=\"28\">CP</td><td><input name=\"cp\" type=\"text\" size=\"8\"> </td>
        <td>Poblaci&oacute;n</td><td><input name=\"pobla\" type=\"text\" size=\"70\"></td>
      </tr>
      <tr>
        <td height=\"28\">Provincia</td><td><input name=\"provin\" type=\"text\" size=\"35\"></td>
        <td>Pais</td><td><input name=\"pais\" type=\"text\" value=\"España\"></td></tr>
        <tr><td height=\"28\">Tel&eacute;fono</td><td><input type=\"text\" name=\"tele\"></td>
        <td>E-Mail</td><td><input name=\"mail\" type=\"text\" size=\"45\"></td>
      </tr>
    </table>
    <p align=\"center\"><input type=\"submit\" name=\"envio\" value=\"Enviar pedido\">
    </p>
  </form>"
;
?>
<br>
<br>
<a href="index.php">Volver</a>


</body>
</html>

envio.php

Código PHP:
<?
include("lib_carrito.php");
?>

<link href="../fondo.css" rel="stylesheet" type="text/css">
<?php
$nombre
=$_POST["nom"]; $apellido=$_POST["ape"]; $nif=$_POST["dni"]; $direccion=$_POST["dire"]; $codp=$_POST["cp"];
$poblacion=$_POST["pobla"]; $provincia=$_POST["provin"]; $pai=$_POST["pais"]; $telefono=$_POST["tele"]; $email=$_POST["mail"];
$carrito=$_POST["pedido"];

$contenido "
<html>
<head>
    <title>prueba </title>
</head>
<body>

Nombre :  $nombre
Apellidos: $apellido
<b>DNI / NIF : </b>$nif
Dirección : $direccion
CP :  $codp
Población :  $poblacion
Provincia :  $provincia
Pais :  $pai
Teléfono :  $telefono
E-Mail : $email"
.
print_r ($_SESSION["ocarrito"]);
for (
$i=0$i<count($_SESSION["ocarrito"]); $i++)
    {
          echo 
$array_id_prod[$i];
          echo 
$_SESSION["ocarrito"][$i];
          print (
$array_precio_prod[$i]);
    } .
"
</body>
</html>"
;


//$contenido .= print_r ($_SESSION["ocarrito"],true);
$headers "MIME-Version: 1.0\r\n"
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"


mail("[email protected]""Envio desde el carrito"$contenido$headers);
?>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="titulo">Gracias por</p>
<p class="titulo"> su confianza </p>

<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

</body>
</html>
Gracias de ante mano
  #21 (permalink)  
Antiguo 24/10/2006, 06:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por berseco Ver Mensaje
Hola, estoy adadtando el mismo carrito a mi web y el problema que tento es que quiero enviar el carrito, junto con un formulario con los datos personales del cliente por e-mail con funcion mail().

lo he conse guido envia con print_r(), pero me lo manda sin ningún tipo de formato. Y yo quierio recivirlo tal y como sale en pantalla.


ver_carrito.php

Código PHP:
<?
include("lib_carrito.php");
?>

<html>
<head>
    <title>Introduce Producto</title>
</head>



<?
$_SESSION
["ocarrito"]->imprime_carrito();
$datos0;

 echo 
"<form name=\"pedido\" method=\"post\" action=\"envio.php\">
    <table width=\"100%\" border=\"0\" cellpadding=\"3\" cellspacing=\"3\">
      <tr>
        <td>Nombre</td><td><input name=\"nom\" type=\"text\" size=\"35\"></td>
        <td>Apellidos</td><td><input name=\"ape\" type=\"text\" size=\"70\"></td>
      </tr>
      <tr>
        <td>DNI / NIF </td><td><input name=\"dni\" type=\"text\" size=\"35\"></td>
        <td>Direcci&oacute;n </td><td><input name=\"dire\" type=\"text\" size=\"70\"></td>
      </tr>
      <tr>
        <td height=\"28\">CP</td><td><input name=\"cp\" type=\"text\" size=\"8\"> </td>
        <td>Poblaci&oacute;n</td><td><input name=\"pobla\" type=\"text\" size=\"70\"></td>
      </tr>
      <tr>
        <td height=\"28\">Provincia</td><td><input name=\"provin\" type=\"text\" size=\"35\"></td>
        <td>Pais</td><td><input name=\"pais\" type=\"text\" value=\"España\"></td></tr>
        <tr><td height=\"28\">Tel&eacute;fono</td><td><input type=\"text\" name=\"tele\"></td>
        <td>E-Mail</td><td><input name=\"mail\" type=\"text\" size=\"45\"></td>
      </tr>
    </table>
    <p align=\"center\"><input type=\"submit\" name=\"envio\" value=\"Enviar pedido\">
    </p>
  </form>"
;
?>
<br>
<br>
<a href="index.php">Volver</a>


</body>
</html>

envio.php

Código PHP:
<?
include("lib_carrito.php");
?>

<link href="../fondo.css" rel="stylesheet" type="text/css">
<?php
$nombre
=$_POST["nom"]; $apellido=$_POST["ape"]; $nif=$_POST["dni"]; $direccion=$_POST["dire"]; $codp=$_POST["cp"];
$poblacion=$_POST["pobla"]; $provincia=$_POST["provin"]; $pai=$_POST["pais"]; $telefono=$_POST["tele"]; $email=$_POST["mail"];
$carrito=$_POST["pedido"];

$contenido "
<html>
<head>
    <title>prueba </title>
</head>
<body>

Nombre :  $nombre
Apellidos: $apellido
<b>DNI / NIF : </b>$nif
Dirección : $direccion
CP :  $codp
Población :  $poblacion
Provincia :  $provincia
Pais :  $pai
Teléfono :  $telefono
E-Mail : $email"
.
print_r ($_SESSION["ocarrito"]);
for (
$i=0$i<count($_SESSION["ocarrito"]); $i++)
    {
          echo 
$array_id_prod[$i];
          echo 
$_SESSION["ocarrito"][$i];
          print (
$array_precio_prod[$i]);
    } .
"
</body>
</html>"
;


//$contenido .= print_r ($_SESSION["ocarrito"],true);
$headers "MIME-Version: 1.0\r\n"
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"


mail("[email protected]""Envio desde el carrito"$contenido$headers);
?>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="titulo">Gracias por</p>
<p class="titulo"> su confianza </p>

<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

</body>
</html>
Gracias de ante mano
Esta adaptación ya se hizo en otro mensaje ..

http://www.forosdelweb.com/f18/ayuda-con-este-carro-350268/

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #22 (permalink)  
Antiguo 29/10/2006, 16:59
berseco
Invitado
 
Mensajes: n/a
Puntos:
Tema de session

Quisiera saber como queda el tema de la sesiones porque a mi también el segundo articulo me lo introduce por duplicado.

y de codigo session tan solo tengo esto.

Código PHP:
//inicio la sesión
session_start();
//si no esta creado el objeto carrito en la sesion, lo creo
if (!isset($_SESSION["ocarrito"])){
    
$_SESSION["ocarrito"] = new carrito(); 
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 11:17.