PHP - Ayuda con "carrito de compra"

 
Vista:
sin imagen de perfil

Ayuda con "carrito de compra"

Publicado por Kacho (2 intervenciones) el 27/10/2014 10:37:58
Saludos, tengo un problema, estoy haciendo un carrito de compra (muy rustico) en php que esta "semi funcional" (crea archivos con el nombre del usuario de la sesion con el pedido).

El problema es que cuando clickeo 2 (o mas) veces en UN articulo (del listado) en el carrito.php en lugar de incrementar la cantidad de dicho articulo, lo que hace es ponerlo 2 veces (dentro de una tabla html)... tengo el codigo pero no se como solucionar ese error.

Les dejo el codigo php que tengo, por ahi me pueden ayudar:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?Php
if ($_POST['cambio'] == "Modificar")
{
    $p     = 0;
    $g     = 0;
    $ver   = file($_SESSION['cliente']);
    $m     = count($ver);
    $c     = $_POST['cantidad'];
    $valor = $_POST['n'];
    while ($p < $m)
    {
        $sep = explode(";", $ver[$p]);
        if ($c[$p] <> 0)
        {
            $pedido[$g] = $sep[0] . ";" . $sep[1] . ";" . $sep[2] . ";" . $sep[3] . ";" . $sep[4] . ";" . $c[$p];
            $g          = $g + 1;
        }
        $p = $p + 1;
    }
 
    $h = 0;
    unlink($_SESSION['cliente']);
    $fp = fopen($_SESSION['cliente'], "a");
    while ($h < $g)
    {
        fputs($fp, $pedido[$h]);
        fputs($fp, chr(13) . chr(10));
        $h = $h + 1;
    }
    fclose($fp);
}
 
 
$servidor    = "localhost";
$usuario_bd  = "root";
$password_bd = "admin";
$basedatos   = "carrete";
 
$conexion = mysql_connect($servidor, $usuario_bd, $password_bd);
if (!$conexion)
{
    echo "Error conectando a la base de datos.";
    exit();
}
 
$resultado = mysql_select_db($basedatos, $conexion);
if (!$resultado)
{
    echo "Error seleccionando la base de datos.";
    exit();
}
$dato = $_POST['nro'];
if ($dato[0] <> "")
{
    $sql     = "select * from libros where Nro_catalogo='$dato[0]'";
    $res     = mysql_query($sql);
    $archivo = $_SESSION['cliente'];
    $fp      = fopen($archivo, "a");
    while ($row = mysql_fetch_array($res))
    {
        $nro      = $row['Nro_catalogo'];
        $titulo   = $row['Titulo'];
        $autor    = $row['Autor'];
        $genero   = $row['Genero'];
        $precio   = $row['Precio'];
        $cantidad = 1;
    }
 
    $pedido = $nro . ";" . $titulo . ";" . $autor . ";" . $genero . ";" . $precio . ";" . $cantidad;
    if ($_SESSION['cliente']<>"")
	{
		fputs($fp, $pedido);
    	fputs($fp, chr(13) . chr(10));
    	fclose($fp);
	}
}
 
if (file_exists($_SESSION['cliente']))
{
    $ver     = file($_SESSION['cliente']);
    $totales = 0;
    $j       = 0;
    $m       = count($ver);
 
    while ($j < $m)
    {
        $sep      = explode(";", $ver[$j]);
        $nr[$j]   = $sep[0];
        $tit[$j]  = $sep[1];
        $aut[$j]  = $sep[2];
        $gen[$j]  = $sep[3];
        $prec[$j] = $sep[4];
        $can[$j]  = $sep[5];
        $totales  = $totales + $prec[$j] * $can[$j];
        $j        = $j + 1;
 
    }
}
 
?>

Ese es el codigo php del carrito (sin el session_start), si necesitan la pagina completa puedo subirla!

Muchisimas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Ayuda con "carrito de compra"

Publicado por xve (6935 intervenciones) el 27/10/2014 13:35:19
Hola Kacho, me cuesta un poco seguir tu código... entiendo que guardas el carrito en la variable pedido $pedido?

En el código que nos muestras, no se ver de donde viene, pero creo que es así, no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con "carrito de compra"

Publicado por Kacho (2 intervenciones) el 28/10/2014 03:36:26
En la variable $pedido guardo informacion de texto (sacada de una pagina llamada pedido.php, la cual contiene una tabla con todos los articulos que tengo a la venta con un formulario) de todos los articulos que meto en ese pedido.

Es decir, la variable $pedido se guarda en un archivo (cuyo nombre es el nombre del usuario que este logeado en ese momento) una linea de texto por cada articulo, con el siguiente formato (sin las comillas): "01;Cien años de soledad;Garcia Marquez;Ficcion;200;1", y si pongo mas articulos en el pedido se ponen en el renglon de abajo.

Ahora te pego el codido de la pagina pedido.php (que es donde esta la tabla):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<form action="carrito.php" method="post">
 
<?php
 while($row = mysql_fetch_array($resultado)){
 
?>
          </form>
          <form action="carrito.php" method="post">
            <tr>
              <td height="102"><input name="image" type=image src="<?php echo $row['Foto'];?>" width="70" height="100" border="0">
                  <input type="hidden" name="nro[]" value="<?php echo $row['Nro_catalogo'];?>"></td>
              <td><div align="center"><strong><?php echo $row['Titulo'];?></strong></div></td>
              <td><div align="center"><strong><?php echo $row['Autor'];?></strong></div></td>
              <td><div align="center"><strong><?php echo $row['Precio'];?></strong></div></td>
            </tr>
 
          </form>
<?Php
}
?>

Ese es el codigo del formulario (de pedido.php) que conduce a carrito.php (el codigo que puse al principio.

Lo que hace este pedido es poner cada articulo en carrito.php, pero si pongo el mismo articulo dos veces desde pedido.php se agrega dos veces en carrito.php (con cantidad 1) en lugar de solamente incrementar la cantidad.

Probe de varias maneras pero no logro que funcione correctamente...

Agradeceria cualquier ayuda!!!

GRACIAS!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar