Saludos a todos
Después de todo el fin de semana dándole vueltas a PHP necesito que me echeiss una mano seguro que a alguien le ha sucedido esto:
estoy haciendo un proyecto en PHP de una librería virtual y a mí me ha tocado elaborar El carrito y tengo el siguiente problema:
1.- una lista con los datos de los libros según la selección que me interesa.
2.- El código ISBN (que es la clave del libro en la base de datos la paso a otra página de base de datos para Incluirlo en un array de session si es que no en la misma , ó sumar una unidad más si es que éste ya existe en el array.
os adjunto el código:
------------------------------------------------------
<?
session_start();
include('base_datos_libro.php');
if($_GET['codigo'])
{
$codigo=$_GET['codigo'];
if(!session_is_registered('carrito'))
{
$_SESSION['carrito']=array();
$_SESSION["importe"]=0;
session_register('carrito','importe');
}
if(!$_SESSION["carrito[$codigo]"])
$_SESSION["carrito[$codigo]"]=1;
else
$_SESSION["carrito[$codigo]"]++;
?>
Hasta aquí todo es más ó menos normal, he intentado ver algún valor de la tabla para ver si Es que existe y de momento se guardan.
El problema que tengo es que cuando quiero calcular el importe total de la compra ó quiero saber el Número total de unidades de la tabla e incluso ver todos los registros de la tabla mediante un bucle Tipo foreach ó while me es totalmente imposible.
Lo quiero hacer mediante funciones, es decir coger la variable de session del carrito y Pasarlo a una función de php como parámetro:
$_SESSION["unidades"]=calcular_unidades($_SESSION["carrito"]);
$_SESSION["importe"]=calcular_compra($_SESSION["carrito"]);
Y no tengo forma de que me devuelva ningún valor a continuación os detallo las funciones:
------------------------------------------------------
<?php
session_start();
include('conexion.php');
function buscar_precio_libro($isbn)
{
$con=conectarse();
$query="select PRECIO from libros where ISBN=$isbn";
$result=@mysql_query($query);
if(!$result)
return false;
else
return $result;
}
function calcular_compra($carrito)
{
$precio=0;
if(is_array($carrito))
{
$con=conectarse();
foreach($carrito as $isbn => $cantidad)
{
$query="select PRECIO from libros where ISBN=$isbn";
$result=mysql_query($query);
if($result)
{
$parcial=mysql_result($result,0,"PRECIO");
$compra+=$parcial*$cantidad;
echo $compra;
}
}
}
return $compra;
}
function calcular_unidades($carrito)
{
$unidades=0;
if(is_array($carrito))
{
while($elementos=each($carrito))
{
echo $elementos["key"];
$unidades+=$elementos;
}
}
return $cantidad;
}
?>
------------------------------------------------------
Me he fijado que dentro de las funciones el programa no llega a entrar ni en los bucles while ni foreach
Por lo que me temo que el array está mal pasado como valor a las funciones, le he llegado a cambiar También la variable register_globals = On de el fichero de configuración de PHP, y estoy seguro de que cuando Veais esto lo tendréis perfectamente superado.
Muchas gracias
Un saludo