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 :)