> Faqs > No se visualizan variables de arreglo inicializadas en el constructor de la clase Carrito.

No se visualizan variables de arreglo inicializadas en el constructor de la clase Carrito.

Hola Amigos,...mi consulta es en relación a la invisibilidad de las variables de arreglo inicializadas en el Constructor da la clase carrito.( es una adaptación del ejemplo del carrito de compras de dEsarrolloweb)

Puedo visualizar la cantidad de cada ítem, los que se van agregando por unidad en cada selección.

En teoría el problema es la visualización de un arreglo ,..pero con la esturcutra de clases , No funciona....

aqui expongo el código....

<?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>

ENTONCES eliges un link e insertas un ítem...

y los datos Get se procesan en este código...

<?php
class carrito {
	//atributos de la clase
   	var $num_productos;
   	public $array_id_prod;
   	public $array_nombre_prod;
   	public $array_precio_prod;
        public $array_cant_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;
              
                                           $this->array_cant_prod[0]=0;
                                           $this->array_cant_prod[1]=0;
                                           $this->array_cant_prod[2]=0;
                                           $this->array_cant_prod[3]=0;
                                            
                                           $this->array_nombre_prod = Array();
                                           $this->array_precio_prod = Array();
                                           $this->array_id_prod = Array();

                                           
                                           $this->array_nombre_prod[0]= "silla+modelo+jupiter ";
                                           $this->array_nombre_prod[1]= "mesa+camilla+oferta ";
                                           $this->array_nombre_prod[2]= "Silla+oficina ";
                                           $this->array_nombre_prod[3]= "Aparador+cocina+blanco ";
                                           $this->array_precio_prod[0]=80;
                                           $this->array_precio_prod[1]=29;
                                           $this->array_precio_prod[2]=102;
                                           $this->array_precio_prod[3]=200;
                                           $this->array_id_prod[0]=12;
                                           $this->array_id_prod[1]=16;
                                           $this->array_id_prod[2]=18;
                                           $this->array_id_prod[3]=98;
                                    
                                           
	}
	
	//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;
		
                                    if($id_prod == 12){ 
                                       $this->array_cant_prod[0]++;
                                       echo  $this->array_cant_prod[0];
                                       }
                                       
                                        elseif($id_prod == 16){
                                            $this->array_cant_prod[1]++;
                                            echo  $this->array_cant_prod[1];}
                                        elseif($id_prod == 18){
                                            $this->array_cant_prod[2]++;
                                            echo  $this->array_cant_prod[2];}
                                        elseif($id_prod == 98){
                                            $this->array_cant_prod[3]++;
                                            echo  $this->array_cant_prod[3];} 

                    $this->num_productos++;                
                              
	}
     
        
        function imprime_carrito(){
		echo "<b> hola mundo </b>";

               echo '<table border=1 cellpadding="3">
			  <tr>
			  	<td><b>nombre</b></td>
				<td><b>Cantidad</b></td>
				<td><b>Precio</b></td>
			  </tr>';
              
                        for($i=0;$i<4;$i++){
			echo '<tr>';
			echo "<td>" . array_nombre_prod[$i] . "</td>";
			echo "<td>" . $this->array_cant_prod[$i] . "</td>";
			echo "<td>" . array_precio_prod[$i] . "</td>";
			echo '</tr>';
		        }
                  
               }	

}
 
//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();
       
        
}

Y este es el error que expone el Sistema.

 hola mundo
Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\carrito\lib_carrito.php on line 89

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\carrito\lib_carrito.php on line 91

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\carrito\lib_carrito.php on line 89

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\carrito\lib_carrito.php on line 91

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\carrito\lib_carrito.php on line 89

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\carrito\lib_carrito.php on line 91

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\carrito\lib_carrito.php on line 89

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\carrito\lib_carrito.php on line 91
28
Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\carrito\lib_carrito.php on line 100


Volver
nombre 	Cantidad 	Precio
	7 	
	4 	
	6 	
	11 	
Agradezco Vuestra Respuesta y Comentarios al Respecto.

Respuestas

Hola!

Disculpa no contestar antes... es que pensaba tomarme el tiempo de repasar todo ese código publicado, pero la verdad va a ser difícil que lo consiga por cuestión de tiempo.

El problema según veo en tu código es que el constructor de la clase carrito no se ejecuta, ya que en PHP 5 en adelante los constructores se declaran con __construct() y no con el nombre de la clase.

function __construct() {
    // código
}

Mira los constructores de PHP 5.

Supongo que será eso.

Miguel Angel
3425 151 219 17