![]() |
Carrito de Compra no almacena valores hola buenas estoy haciendo una página web sobre libros y tengo un problema con mi carrito de la compra :'( les pongo mi codigo y les explico cual es my problema: tengo un fichero lib_carro donde me declaro un objeto carrito class carrito { //atributos de la clase var $num_productos; var $array_isbn; var $array_nombre_prod; //var $array_precio_prod; var $array_imagen_prod; // constructor de la clase carrito function carrito () { $this->num_productos=0; } // introduce los valores en la variable session carrito function introduce_producto($isbn,$non,$ima){ $this->array_isbn[$this->num_productos]=$isbn; $this->array_nombre_prod[$this->num_productos]=$non; $this->array_imagen_prod[$this->num_productos]=$ima; $this->num_productos++; echo $this->num_productos; } } if (!isset($_SESSION["ocarrito"])){ $_SESSION["ocarrito"] = new carrito(); $carritos=new carrito; } $carritos=new carrito; luego tengo un archivo donde si toco el carrito de la compra me remite a otra página para introducir los datos en la variable session, hasta aqui todo bien este es el código que hace esto <form action=index.php?modulo=catalogo&aux=1 method=POST> <td><input type=image src=modulos/catalogo/imagen/car.png></td> <input type=hidden name=nombre value=\"$nombre\"> <input type=hidden name=isbn value=\"$isbn\"> <input type=hidden name=precio value=$precio> <input type=hidden name=imagen value=$imagen> </form> finalmente quiero ver lo he introducido y hago lo siguiente include("lib_carro.php"); if($aux==1){ $aux=0; $isbn=$_POST['isbn']; $non=$_POST['nombre']; $ima=$_POST['imagen']; $carritos->introduce_producto($isbn,$non,$ima); $_SESSION['ocarrito']=$carritos; $carritos->imprime_carrito(); Mi proble es que creo que siempre me esta creando una variable sesión nueva porque el contador nunca que lo incrementa, no me acumuka nada!!!!!!!! espero que puedan ayudarme y siento que sea tan largo |
Re: ayuda please Sin ver todo el flujo de tu programa parece que en cada pagina creas un objeto carrito, almacenas los datos y luego lo almacenas en la sesion. Esto es un error, ya que siempre se quedara en 0s, necesitas primeramente recuperar el objeto de la sesion y luego introducirlo o de plano usar la variable de sesion. Algo asi: Código PHP: PD. Por favor usa títulos mas descriptivos en tus mensajes. |
Re: Carrito de Compra no almacena valores gracias por tu respues GatorV, ya lo probe pero nada yo no se si estoy entendiendo bien esto o no? mi index de la web comienza asi require("alta.php") ; echo $session; $aux=$_GET['aux']; include("lib_carro.php"); en el alta .php tengo la conexin con la base de datos y el session_start(), asi que como siempre vuelvo a index tendre la la session estar activada y las variables session iran pasando sin problema, luego incluyo el lib_carro.php el final de este fichero es lo siguiente session_start(); //si no esta creado el objeto carrito en la sesion, lo creo if (!isset($_SESSION["ocarrito"])){ $_SESSION["ocarrito"] = new carrito(); $carrito=new carrito; } $carrito=new carrito; si no tengo creado el ocarrito me lo crea y tedria el $carrito del tipo carrito si el ocarrito ya esta creado no crea nada nuevo y usa el que tiene segun esto al cerrar el if $carrito=new carrito; no tendria que estar, pero si lo quito me da este error Fatal error: Call to a member function introduce_producto() on a non-object in C:\wamp\www\libro1\index.php on line 12 por eso lo dejo y por eso creo que cada vez que entro aqui me habre un carrito nuevo. es cierto lo que pienso o lo estoy viendo mal????? tienes alguna idea de que esta fallando. |
Re: Carrito de Compra no almacena valores Con isset checas si una variable existe, si tu usas !isset le estas diciendo al if, si una variable no existe, por lo que si ya existe en la sesión entonces creas una variable, para que tu if funcione correctamente debería de estar así: Código PHP: |
Re: Carrito de Compra no almacena valores hola Gator V perdona que no te contestara antes pero es que tuve que hacer otras cosas en fin de semana. probé tu solución y nada, me da el siguiente fallo. Fatal error: main() [<a href='function.main'>function.main</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "carrito" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in C:\wamp\www\libro1\index.php on line 12 no encuentra el objeto carrito a menos que lo ponga en el index y siempre me crea una nuevo:'( esto esfrustante |
Re: Carrito de Compra no almacena valores El problema es que debes de incluir lib_carrito antes de usar session_start para que pueda ser des-serializado y creado para que lo puedas usar. Te recomiendo mover tu include( "lib_carro.php" ) a un lugar donde este ANTES de usar session_start();. Saludos. |
Re: Carrito de Compra no almacena valores eres un crack:si:, eres el mejor!!!!!!!!!!!!!!!!! funciono:arriba:!!!!!!! ya casi no podia ni dormir comiendome la cabeza con esto muchas muchas gracias |
Re: Carrito de Compra no almacena valores Hola gatorV como session pero me he dado cuenta de que cuando habro dos sesiones distintas de distintos usuarios si deslogeo uno me deslogea los dos y cuando compro cosas con uno la compra tambien me la mete en el otro. No deberia ser una session ocarrito por usuario y si me logeo dos veces con distintos usuarios no deberia crearme dos sesiones distintas. mi fichero de alta es este <?php session_start(); include "conexion.php";//conexión con la base de datos if($_POST['logout']){//comprobamos si se ha realizado un logout session_destroy();//Cierra la sesión y destruye los datos de una sesión session_start();//Iniciar sesión sin un nombre concreto header("Location: index.php");//recargamos la pagina }else{ if(isset($_POST['login'])){//comprobamos si se ha realizado un login $usuario=$_POST['usuario'];//la funcion isset significa, si tiene valor $password=($_POST['pass']);// el password //comprobamos que el usuario y el password sean correctos. //Tambien comprobamos el nivel que por defecto es 1 $sql = "SELECT * FROM users WHERE ((usuario='".$usuario."') && (pass1='".$password."'));"; $result = mysql_query($sql) or die('Could not look up user data; ' . mysql_error()); //muestra mensaje de error y deja de ejecutar la página $row = mysql_fetch_array($result); //Extrae la fila de resultado como una matriz asociativa if (mysql_num_rows($result)!= 0){//comprobamos que la respuesta no sea nula $_SESSION['usuario']=$usuario; $_SESSION['password']=$password; $_SESSION['level']=$row['level']; }else{//no esta en la base de datos(usuario anonimo) $_SESSION['usuario']="anonimo"; $_SESSION['level']=0; if($_POST['login'])//y si se ha realizado login, indicamos que existe un error modificando la cabecera del web header("Location: index.php?fallo=true");//los valores a partir del signo ? son valores de formulario } //que se pueden leer como $_GET['fallo'] }} ?> aqui tiene un session start al principio y cuando vuelve al index tiene otro, por eso continua con la session anterior, puede ser este el fallo??? |
Re: Carrito de Compra no almacena valores que tiene este post de OOP?, apenas el carrito... |
Re: Carrito de Compra no almacena valores Las sesiones son iguales por dominio y explorador, si tu usas el mismo explorador para ver las dos sesiones veras los datos reflejados en ambos. Saludos. |
Re: Carrito de Compra no almacena valores ok entiendo lo que dices pero no deberia crearme sesiones distintas si son usuarios distintos??????? Porque sino como distingo uno de otro. |
Re: Carrito de Compra no almacena valores Como te digo, son sesiones por instancia de explorador, ya que ese es el comportamiento natural de las sesiones. Si tu quieres realmente tener usuarios y sesiones así de independientes vas a tener que usar otro sistema en lugar de las sesiones como una base de datos y tu implementar tu propio código de rastreo. Saludos. |
| La zona horaria es GMT -6. Ahora son las 08:22. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.