Foros del Web » Programando para Internet » PHP »

Carrito php

Estas en el tema de Carrito php en el foro de PHP en Foros del Web. Hola buenas noches... estoy trabajando en un carro de compras muy sencillo, sucede que ahora estoy con php5 cuando quiero agregar un producto al carro ...
  #1 (permalink)  
Antiguo 08/02/2016, 19:02
 
Fecha de Ingreso: junio-2015
Mensajes: 5
Antigüedad: 8 años, 10 meses
Puntos: 0
Carrito php

Hola buenas noches... estoy trabajando en un carro de compras muy sencillo, sucede que ahora estoy con php5 cuando quiero agregar un producto al carro me da un error que no puedo darme cuenta a que se debe, les dejo el codigo a ver si me pueden ayudar.

/lib_carrito.php
Código PHP:
<?PHP

//variable de session
if (!isset($_SESSION["ocarrito"])){ 
       
$_SESSION["ocarrito"] = new carrito();
}

class 
carrito 
       
//atributos de la clase 
   
var  $num_productos
   var  
$array_id_prod
   var  
$array_nombre_prod
   var  
$array_precio_prod
}
///////// INTRODUCIR PRODUCTO FUCNCION////////////////
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++; 
}
////////////////////////////////////
/////////BORRAR PRODUCTO FUNCION////////////////
function elimina_producto ($linea){ 
    
$this ->array_id_prod[$linea]=0;
    }
///////////////////////////////////////////////
///////////mostrar todos los productos del carrito/////////
function imprime_carrito(){ 
       
$suma 0//guarda importe del prod
       
echo '<table border=1 cellpadding="3"> 
       <tr> 
       <td><b>Nombre producto</b></td> 
       <td><b>Precio</b></td> 
       <td> </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> </td></tr>"
function 
imprime_carrito(){ 
       
$suma 0
       echo 
'<table border=1 cellpadding="3"> 
       <tr> 
       <td><b>Nombre producto</b></td> 
       <td><b>Precio</b></td> 
       <td> </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> </td></tr>";
}
}
?>
index.php
Código PHP:
<?PHP 
include("lib_carrito.php"); 
?> 

<html> 
<head> 
       <title>Trabajando con el carrito</title> 
</head> 

<body> 


<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> 
<br> 
<br> 
<a href="mete_producto.php?id=18&nombre=Silla+oficina&precio=102">Silla oficina 102 euros</a> 
<br> 
<br> 
<a href="mete_producto.php?id=98&nombre=Aparador+cocina+blanco&precio=200">Aparador cocina blanco 200 euros</a> 
<br> 
<br> 
<br> 
- <a href="ver_carrito.php">Ver carrito</a> 
</body> 
</html>
mete_producto.php
Código PHP:
<?PHP
include("lib_carrito.php"); 
$_SESSION["ocarrito"]-> introduce_producto($_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>
el error es el siguiente:
Fatal error: Call to undefined method carrito::introduce_producto() in D:\appserver\AppServ\www\tvirtual2\mete_producto.p hp on line 3
  #2 (permalink)  
Antiguo 08/02/2016, 19:50
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Respuesta: Carrito php

Intenta en mete_producto.php colocar esto, cambié get por post..
Código PHP:
<?PHP
include("lib_carrito.php"); 
$_SESSION["ocarrito"]-> introduce_producto($_post["id"], $_post["nombre"], $_post["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>
Saludos..
  #3 (permalink)  
Antiguo 08/02/2016, 19:59
 
Fecha de Ingreso: junio-2015
Mensajes: 5
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Carrito php

Gracias lo habia intentado y tampoco funciono.
en el index mando todos los valores y en la url de mete_producto aparecen perfectamente.
ejemplo:
..../mete_producto.php?id=16&nombre=mesa+camilla+oferta &precio=29
  #4 (permalink)  
Antiguo 08/02/2016, 20:05
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Respuesta: Carrito php

Código PHP:
<body>  


<
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>  
<
br>  
<
br>  
<
a href="mete_producto.php?id=18&nombre=Silla+oficina&precio=102">Silla oficina 102 euros</a>  
<
br>  
<
br>  
<
a href="mete_producto.php?id=98&nombre=Aparador+cocina+blanco&precio=200">Aparador cocina blanco 200 euros</a>  
<
br>  
<
br>  
<
br>  
- <
a href="ver_carrito.php">Ver carrito</a
intentaste acá colocarle en el href de acá method="post"? o get?
  #5 (permalink)  
Antiguo 08/02/2016, 20:18
 
Fecha de Ingreso: junio-2015
Mensajes: 5
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Carrito php

Si probe inclusive insertandole un form con method get y tampoco.
Es raro, gracias por la ayuda!
  #6 (permalink)  
Antiguo 09/02/2016, 00:14
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Carrito php

Hola rodrigoznr,

Así a primera vista, sin profundizar demasiado en el código, lo que veo es que te falta instanciar la clase en la que tienes el método "introduce_producto()", que es el error que te está dando.

Espero que te sirva.
  #7 (permalink)  
Antiguo 09/02/2016, 02:43
 
Fecha de Ingreso: mayo-2013
Mensajes: 169
Antigüedad: 10 años, 10 meses
Puntos: 25
Respuesta: Carrito php

Por lo que veo es necesario serializar los objetos, ya que al pasar un objeto a a variable de sesión pierden sus metodos (el error que te da):
http://php.net/manual/es/oop4.serialization.php
http://www.forosdelweb.com/f18/guard...ession-182113/

Sin embargo, viendo en un blog, no sería necesario, bastaría con incluirlo en el código donde pides la variable con un require o un include. Fuente:
http://phpsenior.blogspot.com.es/201...or-sesion.html

Según leo en los comentarios para que se recree las clases de los objetos, hay que llamar a session_start(), despues del include.

Prueba con esto de llamar al session_start() despues del include, a ver si te sirve.

Un saludo.
  #8 (permalink)  
Antiguo 09/02/2016, 18:42
 
Fecha de Ingreso: junio-2015
Mensajes: 5
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Carrito php

Tengo que admitir que me ilucione con el session_start(); era completamente logico.... pero no, me dio el mismo error. Hasta probe ejecutarlo antes del include me dio otro error:

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 &quot;carrito&quot; 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 ....\tvirtual2\mete_producto.php on line 4
  #9 (permalink)  
Antiguo 10/02/2016, 16:12
 
Fecha de Ingreso: mayo-2013
Mensajes: 169
Antigüedad: 10 años, 10 meses
Puntos: 25
Respuesta: Carrito php

Cita:
Iniciado por rodrigoznr Ver Mensaje
Tengo que admitir que me ilucione con el session_start(); era completamente logico.... pero no, me dio el mismo error. Hasta probe ejecutarlo antes del include me dio otro error:

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 &quot;carrito&quot; 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 ....\tvirtual2\mete_producto.php on line 4
¿Cómo tienes el codigo ahora?

Etiquetas: carrito, html, variable
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 20:34.