Buenas noches, llevo con este proyecto personal un tiempo y me ha surgido este "fallo". La primera que le das a un producto no actúa bien y no se el motivo, el resto de los productos que añadas si lo hace bien.
Adjunto aqui la foto:
Aqui adjunto el código que tengo, si me lo pueden corregir en cuanto a fallos y explicarme el porque lo agradecería:
Código PHP:
<?php
$id=$_GET['id'];
$ruta=$_GET['ruta'];
//isset — Determina si una variable está definida y no es NULL
//Inicio sesión a la base de datos incluyendo el archivo de conexión.php
session_start();
include './conexion.php';
//Si hay sesión establecida con la base de datos...
if(isset($_SESSION['carrito'])){
//Compruebo si hemos recogido por método $_GET el id del objeto
if(isset($_GET['id'])){
//Paso la estancia de sesión a la variable $arreglo para poder trabajar con una local
$arreglo=$_SESSION['carrito'];
//Inicio encontró a false porque por ahora no ha encontrado objeto ni hay búsqueda de objetos
$encontro=false;
//Inicio la variable en 0 para que se puedan añadir las cantidad de cada objeto
$numero=0;
//Con este for recorremos todos los elementos de la sesión "Carrito"
for($i=0;$i<count($arreglo);$i++){
//Si el id obtenido por $_GET es igual al obtenido en el for, entonces lo guardamos
if($arreglo[$i]['Id']==$_GET['id']){
//Si encuentro el objeto por el ID cambio $encontro a true
$encontro=true;
//Metemos el ID en número para después unirlo a la cantidad de ese elemento
$numero=$i;
}
}
if($encontro==true){
//Después de enconrar el elemento por ID, añadimos +1 a la cantidad que haya.
$arreglo[$numero]['Cantidad']++;
//Introducimos la cantidad junto al ID en la variable de sesión.
$_SESSION['carrito']=$arreglo;
}else{//Si no encuentra el objeto...establezco las variables principales del objeto en null
$nombre="";
$precio=0;
$imagen="";
//Desde aqui, proceso a buscar toda la información de los objetos a través de sus ID
$re=mysql_query("select * from ".$ruta." where id='".$id."'")or die(mysql_error());
while ($f=mysql_fetch_array($re)) {
//Mientras encuentre el objeto en cuestión voy añadiendo la información restante del objeto.
$id=$f['id'];
$precio=$f['precio'];
$foto=$f['foto'];
$nombre=$f['texto'];
}
//Establezco un array para ir "uniendo" lo recogido a su nombre de uso en el array
$datosNuevos=array('Id'=>$_GET['id'],
'id'=>$id,
'Precio'=>$precio,
'foto'=>$foto,
'nombre'=>$nombre,
'Cantidad'=>1);
//array_push — Inserta uno o más elementos al final de un array
//Añado todo lo recogido en el array variable local '$arreglo' establecida para la conexión
array_push($arreglo, $datosNuevos);
//Meto todo lo añadido en $arreglo a la sesión de la bd global
$_SESSION['carrito']=$arreglo;
}
}
//En el caso de no haber encontrado sesión establecida...
}else{
//Compruebo si hay algun tipo de ID recogido por método $_GET
if(isset($_GET['id'])){//Establezco todas las variables en NULL del objeto en cuestión
$id=$f['id'];
$precio=$f['precio'];
$foto=$f['foto'];
$nombre=$f['texto'];
//Hago una búsqueda de todo lo relacionado con ese objeto a través de su ID
$re=mysql_query("select * from ".$ruta." where id='".$id."'")or die(mysql_error());
while ($f=mysql_fetch_array($re)) {
//Mientras encuentre resultados en la búsqueda los voy añadiendo en sus respectivas variables
$id=$f['id'];
$precio=$f['precio'];
$foto=$f['foto'];
$nombre=$f['texto'];
}
//Establezco el nombre local a la variable que tiene los datos para poder acceder a ellos desde el array
$arreglo[]=array('Id'=>$_GET['id'],
'id'=>$id,
'Precio'=>$precio,
'foto'=>$foto,
'nombre'=>$nombre,
'Cantidad'=>1);
//Añado toda la información del array $arreglo en la sesión establecida a la bd
$_SESSION['carrito']=$arreglo;
}
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8"/>
<title>Carrito de Compras</title>
<link rel="stylesheet" type="text/css" href="./css/estilos.css">
<script type="text/javascript" src="../../../xampp/htdocs/php/jquery.js"></script>
<script type="text/javascript" src="./js/scripts.js"></script>
</head>
<body>
<header>
<img src="./imagenes/logo.png" id="logo">
<a href="./carritodecompras.php" title="ver carrito de compras">
<img src="./imagenes/carrito.png">
</a>
</header>
<section>
<?php
//Establezco la cantidad de objetos a null
$total=0;
//Compruebo que haya conexión a la bd y la guardo en "$datos" para poder trabajar con una variable local
if(isset($_SESSION['carrito']))
{
$datos=$_SESSION['carrito'];
$total=0;
//Recorro todos los objetos añadidos con anterioridad para imprimirlos con un estilo determinado en pantalla
//Al tenerlos añadidos con un nombre en el array anteriomente y al haberlo añadido al igual en la bd
//Recorro cada objeto con su nombre para sacar la información determinada en cada momento
//$datos[$i]['nombre-en-el-array']
for($i=0;$i<count($datos);$i++)
{
?>
<div class="producto">
<center>
<img src="<?php echo $datos[$i]['foto'];?>"><br>
<span ><?php echo $datos[$i]['nombre'];?></span><br>
<span>Precio: <?php echo $datos[$i]['Precio'];?></span><br>
<span>Cantidad:
<input type="text" value="<?php echo $datos[$i]['Cantidad'];?>"
data-precio="<?php echo $datos[$i]['Precio'];?>"
data-id="<?php echo $datos[$i]['Id'];?>"
class="cantidad">
</span><br>
<span class="subtotal">Subtotal:<?php echo $datos[$i]['Cantidad']*$datos[$i]['Precio'];?></span><br>
<a href="#" class="eliminar" data-id="<?php echo $datos[$i]['Id']?>">Eliminar</a>
</center>
</div>
<?php
//En esta ocasión voy haciendo los cálculos de la cantidad final
$total=($datos[$i]['Cantidad']*$datos[$i]['Precio'])+$total;
}
}else
{
echo '<center><h2>No has añadido ningun producto</h2></center>';
}
echo '<center><h2 id="total">Total: '.$total.'</h2></center>';
//Compruebo que la cantidad TOTAL sea superior a 0 para proceder al pago por paypal
if($total>0)
{
?>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="formulario">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="[email protected]">
<input type="hidden" name="currency_code" value="MXN">
<?php
//Hago un bucle para dejar todos los datos en una tabla en el pago a paypal
for($i=0;$i<count($datos);$i++)
{
?>
<input type="hidden" name="item_name_<?php echo $i+1;?>" value="<?php echo $datos[$i]['nombre'];?>">
<input type="hidden" name="amount_<?php echo $i+1;?>" value="<?php echo $datos[$i]['Precio'];?>">
<input type="hidden" name="quantity_<?php echo $i+1;?>" value="<?php echo $datos[$i]['Cantidad'];?>">
<?php
}
?>
<center><input type="submit" value="comprar" class="aceptar" style="width:200px"></center>
</form>
<?php
}
?>
<center><a href="./">Ver catalogo</a></center>
</section>
</body>
</html>
El botón de eliminar por el momento no funciona.
Gracias por su ayuda :)