Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/07/2015, 18:11
yesod91
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 83
Antigüedad: 10 años, 3 meses
Puntos: 2
Carrito de compra

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