Foros del Web » Programando para Internet » PHP »

Carrito de compra no pasa variables

Estas en el tema de Carrito de compra no pasa variables en el foro de PHP en Foros del Web. Hola a todos! Tengo uina consulta para hacerles. No me están pasando las variables al carrito de compras. Las estoy tomando desde una consulta/bdd y ...
  #1 (permalink)  
Antiguo 18/08/2011, 04:04
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Carrito de compra no pasa variables

Hola a todos! Tengo uina consulta para hacerles. No me están pasando las variables al carrito de compras. Las estoy tomando desde una consulta/bdd y no las carga al carrito. Alguna sugerencia de que puedo estar haciendo mal? Les muestro el código que estoy usando:

Código PHP:
<a href="ver_carrito.php?id=<?php echo $fila['id_articulo']; ?>&nombre=<?php echo $fila['unidad']; ?>&precio=<?php echo $fila['precio']; ?>"><img src="imagesite/carrito.png" width="35" height="35" /></a>
ver_carrito.php
Código PHP:
<?php
include("lib_carrito.php");
session_start();
$_SESSION['ocarrito']->introduce_producto($_GET['id'], $_GET['nombre'], $_GET['precio']);
?>

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

<body>

<?php
$_SESSION
["ocarrito"]->imprime_carrito();
?>
<br>
<br>
<a href="index.php">Volver</a>


</body>
</html>
lib_carrito.php
Código PHP:
//inicio la sesión
session_start();
$id_prod=$_GET['id'];
$nombre_prod=$_GET['nombre'];
$precio_prod=$_GET['precio'];


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>";
        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();

Muchas gracias y saludos.
Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #2 (permalink)  
Antiguo 18/08/2011, 04:26
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Carrito de compra no pasa variables

Creo que has puesto justo lo que está bien, la cosa es ver si $fila['id_articulo'], $fila['unidad'] y $fila['precio'] tienen el valor que crees que tienen. En la URL te sale con valor o no.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #3 (permalink)  
Antiguo 18/08/2011, 06:06
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: Carrito de compra no pasa variables

Hola vgonga: sisi, en la url aparece el valor. Es más, si las recojo en la otra página con un simple echo, también apareren. Pero es como que no las recoge dentro del array.

Si coloco en el link directamente, por ej. ver_carrito.php?id=001&nombre=algo... de esta manera SI la toma la función del lib_carrito

Muchas gracias por tu ayuda.

Abrazo.
Marx
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #4 (permalink)  
Antiguo 18/08/2011, 06:24
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Carrito de compra no pasa variables

Creo que tienes un error de POO. En tu php lib_carrito no debería haber nada más que la clase, lo que haces al principio no tiene sentido y lo que haces al final quizás tampoco.

Creo que lo que tú quieres hacer es crear el carrito al inicio de la session, puedes ponerlo en el índice o, si tienes control de usuarios a la hora de que un usuario acceda a la aplicación. En ese punto tienes que poner este trozo de código:
Código PHP:
Ver original
  1. //inicio la sesión
  2. //si no esta creado el objeto carrito en la sesion, lo creo
  3. if (!isset($_SESSION["ocarrito"])){
  4.     $_SESSION["ocarrito"] = new carrito();
  5. }

Más adelante, cuando llames a la página ver_carrito tendrás que pasarle los parámetros por la URL y, dentro de este php rescatar sus valores y usarlos con la función de la clase ver carrito. Pero dentro de la clase no tienes que acceder a $_GET para nada.

De todas formas, para asegurarte que dentro de la variable de SESSION está bien inicializado el objeto de la clase carrito, haz un var_dump($_SESSION['ocarrito']). Te tiene que salir que es un objeto y los parámetros del mismo. También puede que el error sea por tener tantos session_start().

Espero que te ayude a dar con la clave. Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #5 (permalink)  
Antiguo 18/08/2011, 06:28
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: Carrito de compra no pasa variables

No me deja editar, así que vuelvo a escribir:
Edito: los links originales del ejemplo de donde tomé el carrito es este y de así envía las variables:

<a href="mete_producto.php?id=12&nombre=silla+modelo+ jupiter&precio=80">Silla modelo jupiter 80 euros</a>
<br>
<br>
<a href="mete_producto.php?id=16&nombre=mesa+camilla+ oferta&precio=29">Mesa camilla en oferta 29 euros</a>

Gracias.

Perdon, es que estoy en el trabajo y no me di cuenta que me habias escrito. El ejemplo del carrito lo saqué de aquí: http://www.desarrolloweb.com/articulos/1634.php
gracias.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.

Última edición por marx-pola; 18/08/2011 a las 06:33
  #6 (permalink)  
Antiguo 18/08/2011, 07:48
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: Carrito de compra no pasa variables

Otra consulta... esta línea es correcta paa que pase las variables a la función? En qué lugar se tiene que colocar, en qué página? Si tuviese más variables para pasar, como se le agregan acá y a la función?

$_SESSION["ocarrito"]->introduce_producto($_GET["id"], $_GET["nombre"], $_GET["precio"]);

Gracias nuevamente.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #7 (permalink)  
Antiguo 18/08/2011, 08:57
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Carrito de compra no pasa variables

A ver, tu aplicación es orientada a objetos, tienes una clase llamada carrito, que tiene varias funciones, entre ellas, un constructor, una función para añadir un elemento al carrito y otra para imprimir el contenido.

Lo que has hecho muy bien es poner en sesión el objeto de la clase que tienes, para así poder tener acceso a dicho objeto desde todas las páginas. Pero creo que sigues teniendo problemas con los otros conceptos. El objeto lo tienes que crear únicamente una vez por sesión, cuando la inicies. Cada vez que quieras añadir un nuevo producto tendrás que ir a la página ver_carrito.php pasándole los datos del producto por la URL.

Creo que deberías separar en dos páginas, una que sea añadir_producto.php que sea la que reciba los datos por URL y los inserte en el carrito y otra ver_carrito que sólo imprima el contenido del carrito.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #8 (permalink)  
Antiguo 19/08/2011, 06:12
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: Carrito de compra no pasa variables

hola vgonga1986: hice todo tal cual como me lo explicaste y funcionó. Ahora sí funciona todo. Pero noté un detalle... cuando el link lo armo de esta manera funciona, dejando fijo un nro en el id:

<a href="mete_producto.php?id=1&nombre=<?php echo $fila['nombre']; ?>....

Pero si al id lo coloco así, para que me traiga el de la base, ya no funciona y no carga nada en el carrito:

<a href="ver_carrito.php?id=<?php echo $fila['id_articulo']; ?>&nombre=<?php echo $fila['nombre']; ?>....

Otra consulta que quisiera hacer es ¿cómo hago para que todo lo que cargo en el carrito pueda enviarlo por email? Esto es importantísimo. Ojalá no sea complicado.

Mil gracias por tu ayuda.

Saludos. Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #9 (permalink)  
Antiguo 20/08/2011, 09:19
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: Carrito de compra no pasa variables

Alguna sugerencia?
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #10 (permalink)  
Antiguo 20/08/2011, 15:41
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: Carrito de compra no pasa variables

Consulta... ¿cómo hago para que en la parte superior de cualquiera de mis páginas me aparezca por ejemplo: Cantidad de Artículos seleccionados: XX Productos?
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #11 (permalink)  
Antiguo 22/08/2011, 01:36
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Carrito de compra no pasa variables

Buenas, perdón la tardanza, no me he conectado desde el jueves. Vamos por partes:

- El tema de la forma en que montas los links, seguramente será que no tienes bien montada la consulta a la base de datos y que en $fila['id_articulo'] no hay lo que piensas. Haz un echo para ver qué hay ahí realmente. Otra cosilla, entiendo que el script del carrito lo has sacado de otro lado, pero me parece un poco ineficiente enviar los tres datos por la url. Si envías sólo el id, en la página del carrito puedes hacer una consulta a la base de datos y sacar los otros datos, no?

- Para el mail tienes una función mail básica de PHP. Pero si tienes un rato, te recomiendo que le eches un ojo a PHPMailer, es mucho más completo y no más complejo.

- Y la última pregunta, supongo que te refieres a la cabecera de la ventana del navegador. Es con el tag title dentro de header. Imprime ahí lo que quieras y te saldrá.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?

Etiquetas: carrito, compra, html, variables
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 04:48.