Foros del Web » Programando para Internet » PHP »

carrito de compras

Estas en el tema de carrito de compras en el foro de PHP en Foros del Web. Buenas tardes a todos... actualmente estoy haciendo un carro de compras con el fin de practicar PHP ya acabo de terminar un curso basico que ...
  #1 (permalink)  
Antiguo 21/07/2012, 12:54
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 11 años, 11 meses
Puntos: 8
carrito de compras

Buenas tardes a todos... actualmente estoy haciendo un carro de compras con el fin de practicar PHP ya acabo de terminar un curso basico que hice....
bueno hice mi catalogo de productos y la de cargar carro y no me dan problemas bueno ahora que estoy haciendo la parte de "ver carro" me da error :S aqui les dejo el codigo:

Código PHP:
Ver original
  1. <?php
  2. session_start();    
  3. ?><link rel="stylesheet" type="text/css" href="./estilo.css"/>
  4. <?php
  5. class carritoCompras{
  6. var $total;
  7. var $carro=array();
  8.  
  9. /* inicializo mi array carro con los datos pasado del catalogo de productows */
  10.  
  11.    function cargar_carro($precio, $cantidad,$producto,$nombre){
  12.      $this->total=$precio*$cantidad;
  13.      $this->carro[md5($producto)]=array('nombre'=>$nombre,'precio'=>$precio,
  14.          'total'=>$this->total,'cantidad'=>$cantidad);
  15.    }
  16.    
  17. /* los objetos que se an cargado al carro*/  
  18.    function ver_carro()
  19.    {
  20.      echo"<table id='table'>";
  21.           foreach($this->carro as $car)
  22.           {
  23.              {
  24.                echo"<tr><td>".$car['nombre']."total".$car['total']."cantidad".$car['cantidad']."</td></tr>";
  25.              }
  26.           }
  27.           echo"</table>";
  28.    }
  29. }  /*fin de la calse*/
  30.      if (isset($_SESSION['usuario']))
  31.      {
  32.      /*creo mi objeto carritoCompras*/
  33.         $compras = new carritoCompras;
  34.            if(isset($_REQUEST['cantidad']))
  35.               $op=1;
  36.            if(isset($_REQUEST['ver_carro']))
  37.               $op=2;
  38.              
  39.         switch ($op) {
  40.            
  41.          case 1:           
  42.                 $compras->cargar_carro($_REQUEST['cantidad'],$_REQUEST['precio'],$_REQUEST['producto'],$_REQUEST['nombre']);
  43.                 header('Location:productos.php');
  44.          case 2:       
  45.                 $compras->ver_carro;   /*aqui es donde me da el error : Aviso: Undefined property: carritoCompras :: $ ver_carro en C:*/
  46.                     }
  47.      }
  48. ?>

cuando le voy a ver carro me arroja ese error..... trate de hacerlo con session--> $_SESSION['carro'] guardando el array "$carro" y cuando le daba a ver carro solo me salia la ultima carga del carro ..... las personas que me puedan ayudar de verdad muchas gracias tengo ya casi dos semanas tratando de hacerlo y es algo frustrante que por mas que intento no me sale
  #2 (permalink)  
Antiguo 21/07/2012, 13:23
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: carrito de compras

Lo que pasa es que ver_carro es un método y tu lo estás accediendo como si fuera propiedad.
Código PHP:
// MAL
$compras->ver_carro;

// BIEN
$compras->ver_carro(); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 21/07/2012, 13:29
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 11 años, 11 meses
Puntos: 8
Respuesta: carrito de compras

Cita:
Iniciado por pateketrueke Ver Mensaje
Lo que pasa es que ver_carro es un método y tu lo estás accediendo como si fuera propiedad.
Código PHP:
// MAL
$compras->ver_carro;

// BIEN
$compras->ver_carro(); 
gracias ya lo corregi ahora tengo el siguiente problema pues no me muestra nada con el foreach es como si variable $this->carro cuando entra a el foreach esta vacia
  #4 (permalink)  
Antiguo 21/07/2012, 13:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: carrito de compras

Pues sólo hay una forma de comprobar si hay o no hay datos.
Código PHP:
print_r($this->carro); 
Eso hazlo antes del foreach, intenta depurar en varias partes para verificar si se está creando/rellenando tu objeto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 21/07/2012, 13:45
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 11 años, 11 meses
Puntos: 8
Respuesta: carrito de compras

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues sólo hay una forma de comprobar si hay o no hay datos.
Código PHP:
print_r($this->carro); 
Eso hazlo antes del foreach, intenta depurar en varias partes para verificar si se está creando/rellenando tu objeto.
lo acabo de hacer cuando entra al metodo "cargar_carro" print_r($this->carro); efectivamente me imprime el array completo es decir si carga todo al arreglo... y lo coloque antes del foreach como me indicaste y solo imprime array( )
  #6 (permalink)  
Antiguo 21/07/2012, 13:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: carrito de compras

En tu código no se muestra toda la lógica con la sesión y recuperación del carrito, a decir verdad deberías mostrar más de lo que haces.

De otra forma es complicado adivinar por donde viene el problema.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 21/07/2012, 14:16
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 11 años, 11 meses
Puntos: 8
Respuesta: carrito de compras

Cita:
Iniciado por pateketrueke Ver Mensaje
En tu código no se muestra toda la lógica con la sesión y recuperación del carrito, a decir verdad deberías mostrar más de lo que haces.

De otra forma es complicado adivinar por donde viene el problema.
Gracias por tu ayuda

este es la parte del catalogo:

Código PHP:
Ver original
  1. $query="SELECT * FROM productos";
  2. $consulta=mysql_query($query);
  3. if($consulta==true)
  4.      {
  5.        $num=mysql_num_rows($consulta);
  6.        for($i=0;$i<$num;$i++){
  7.                $valor=mysql_fetch_array($consulta);
  8.  
  9. /*aqui es donde inprime el los productos*/
  10.                 echo"
  11.                 <td> ".$valor['nombre']." </td>
  12.                 <td> ".$valor['codigo']." </td>
  13.                 <td> ".$valor['precio']." </td>
  14.                 <form action='cargar_carro.php' method='post'/>
  15.                 <input type='hidden' value='".$valor['id']."' name='producto'/>
  16.                 <td><input type='submit' value='agregar'/></form></td>  
  17.                 </tr></div>";}/*fin del for*/
  18.            }/*fin de consulta*/
  19.  
  20. /*aparte tengo un submit que es para ver el estado del carro*/
  21.  
  22.                           </table><br><br><br>
  23.                   <form action='carro.php' method='post'>
  24.                  <input type='hidden' name='ver_carro'/>
  25.                      <input type='submit' value='ver carro'/>
  26.                   </form>

Esta es la parte de cargar_carro a donde se envia el producto cuando le dan a "agregar" esta parte solo consiste en que salga el producto a el que el usuario le dio agregar y coloque la "cantidad " de articulos de ese producto

Código PHP:
Ver original
  1. if(isset($_REQUEST['producto']) and $_REQUEST['producto']!="")
  2.      {  
  3.          include('conexion.php');
  4.          $query="SELECT nombre , precio,id FROM productos WHERE id=".$_REQUEST['producto'];
  5.          $consulta=mysql_query($query);
  6.          
  7.          echo"<br><table id='table' >";
  8.            echo"<tr id='cabecera'>
  9.                <td>Nombres de Productos </td>
  10.                <td>precio</td>
  11.                <td>cantidad</td>
  12.                <tr>";
  13.          if($consulta==true)
  14.          {
  15.             $valor=mysql_fetch_array($consulta);
  16.             echo" <form action='carro.php' method='post'><tr>
  17.                    <td>".$valor['nombre']."</td>
  18.                    <td>".$valor['precio']."</td>
  19.                    <td><input type='text'       name='cantidad'style='width:50px;'/>
  20.                    <input type='hidden'value='".$valor['id']."'name='producto'/>
  21.                    <input type='hidden' value='".$valor['nombre']."' name='nombre'/>
  22.                    <input type='hidden' value='".$valor['precio']."' name='precio'/>
  23.                    <input type='submit' value='cargar'/></td>
  24.                    </table></form>";
  25.          }
  26.      }

y esta ultima es cuando el usuario ya dice la cantidad y se carga al carro:
Código PHP:
Ver original
  1. class carritoCompras{
  2. var $total;
  3. var $carro=array();
  4.  
  5. /* inicializo mi array carro con los datos pasado del catalogo de productows */
  6.  
  7.    function cargar_carro($precio, $cantidad,$producto,$nombre){
  8.      $this->total=$precio*$cantidad;
  9.      $this->carro[md5($producto)]=array('nombre'=>$nombre,'precio'=>$precio,
  10.          'total'=>$this->total,'cantidad'=>$cantidad);
  11.    }
  12.    
  13. /* los objetos que se an cargado al carro*/  
  14.    function ver_carro()
  15.    {
  16.      echo"<table id='table'>";
  17.      print_r($this->carro);  
  18.           foreach($this->carro as $car)
  19.           {
  20.              {
  21.                echo"<tr><td>".$car['nombre']."total".$car['total']."cantidad".$car['cantidad']."</td></tr>";
  22.              }
  23.           }
  24.           echo"</table>";
  25.    }
  26. }  /*fin de la calse*/
  27.      if (isset($_SESSION['usuario']))
  28.      {
  29.      /*creo mi objeto carritoCompras*/
  30.         $compras = new carritoCompras;
  31.            if(isset($_REQUEST['cantidad']))
  32.               $op=1;
  33.            if(isset($_REQUEST['ver_carro']))
  34.               $op=2;
  35.              
  36.         switch ($op) {
  37.            
  38.          case 1:           
  39.                 $compras->cargar_carro($_REQUEST['cantidad'],$_REQUEST['precio'],$_REQUEST['producto'],$_REQUEST['nombre']);
  40.          case 2:       
  41.                 $compras->ver_carro();   /*aqui es donde me da el error : Aviso: Undefined property: carritoCompras :: $ ver_carro en C:*/
  42.                     }
  43.      }
  44. ?>

Hermano de verdad gracias por tu colaboración ojala puedas ayudarme con esto
  #8 (permalink)  
Antiguo 21/07/2012, 14:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: carrito de compras

Pues si eso es todo de verdad andas perdido, ya que sigo sin ver con que linea de código es que guardas tu carrito en la sesión.

Intenta buscar en las FAQ's y Wiki del foro temas relacionados con sesiones.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 21/07/2012, 14:50
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 11 años, 11 meses
Puntos: 8
Respuesta: carrito de compras

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues si eso es todo de verdad andas perdido, ya que sigo sin ver con que linea de código es que guardas tu carrito en la sesión.

Intenta buscar en las FAQ's y Wiki del foro temas relacionados con sesiones.
esta ves no guardo el carro en $_SESSION['carro'] por que cuando trate de hacerlo asi no me en el forearch solo imprimia el ultimo articulo que se habia guardado.... gracias igual por tomarte algo de tiempo en ver mi problema

Etiquetas: carrito, compras, usuarios
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 02:06.