Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/03/2005, 04:57
Manu_Leon
 
Fecha de Ingreso: marzo-2005
Ubicación: Sevilla
Mensajes: 277
Antigüedad: 19 años, 1 mes
Puntos: 2
tengo un archivo llamado lib_carrito.php donde almacena toda la "configuracion" del carrito:
<html>
<head>
<title>carrito</title>
</head>
<body>
<?
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_p rod){
$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> </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>";
//total más IVA
echo "<tr><td><b>IVA (16%):</b></td><td> <b>" . $suma * 1.16 . "</b></td><td> </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;
}
}
?>

</body>
</html>

aquí termina el lib_carrito.php. tengo el index.php (princpal) y el lib_carrito.php metido en n directorio llamado comercios, y en de los aptrocinadores en otro directorio con el nombre del patrocinador, es decir: comercios/running/runningsport.php; comercios/lib_carrito.php; index.php (sin ningun directorio)

bien, al cargarse la pagina pricipal (index.php) se comienza cargandose así:
<?
include("comercios/lib_carrito.php");
if (!isset($_SESSION["ocarrito"])){
$_SESSION["ocarrito"] = new carrito();
}
?>

en esta pagina no se hace ninguna referencia directa al carrito. se hace a uno de los patrocinadores... runningsport.php;

runningsport.php tambien comienza así:
<?
include("../lib_carrito.php");
if (!isset($_SESSION["ocarrito"])){
$_SESSION["ocarrito"] = new carrito();
}
?>
<html>
.....

<body>
<a href="../mete_producto.php?id=2&nombre=cyberflash&precio=16 7">Añadir al carrito</a>
</body>

esta sería al estructura principal de los enlaces, van dirigidos a mete_producto.php (en mismo directorio que lib_carrito.php). Bien, pues aquí está el fallo... La página mete_producto.php no se carga, sino en vez de eso sale este error:

Fatal error: Call to a member function on a non-object in /home/www/monroy.freeownhost.com/pruebaportal/comercios/mete_producto.php on line 3

el codigo de esta pagina es el siguiente:
<?
include("lib_carrito.php");
$_SESSION["ocarrito"]->introduce_producto($_GET["id"], $_GET["nombre"], $_GET["precio"]);
?>
<html>
...
<body>
<p>Producto añadido al carrito</p>
<p><a href="../index.php">- Volver</a></p>
<p><a href="ver_carrito.php">- Ver carrito</a></p>
</body>
....

segun el error supongo que ni si quiera consigue llamar a la función... He leído en los comentarios de este tutorial que a la gente le funcionaba, así que supongo que será un fallo mio. Por favor, diganme dond esta, porque no lo veo por ninguna parte...