Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/02/2007, 14:55
mrgagel
Usuario no validado
 
Fecha de Ingreso: febrero-2007
Mensajes: 2
Antigüedad: 17 años, 2 meses
Puntos: 0
problemas con las variables de session en php

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