PHP - Duda codigo

   
Vista:

Duda codigo

Publicado por Facundo (6 intervenciones) el 26/04/2014 19:38:08
Buenas. Tengo un problema en el codigo. Es un carrito que el usuario va ingresando un producto y su respectiva cantidad. I si ingresa un mismo producto que ya habia ingresado solo habria que aumetar la cantidad. Lo he intentado pero no me aparece como tiene que ser :/ Alguien me da un mano? Desde ya gracias

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
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Punto 3</title>
</head>
<body>
<?php
	session_start();
	if(isset($_REQUEST["btnEnviar"])){
		$bandera = false;
		$producto = $_REQUEST["txtProducto"];
		$cantidad = $_REQUEST["txtCantidad"];
		if($bandera == false){
			$_SESSION['Producto'][] = $producto;
			$_SESSION['Cantidad'][] = $cantidad;
			for($i=0; $i < count($_SESSION['Producto']); $i++){
				echo 'Articulo: '.$_SESSION['Producto'][$i].'Cantidad: '.$_SESSION['Cantidad'][$i].'</br>';
			}
			$bandera = true;
		}else{
			for($i=0; $i < count($_SESSION['Producto']); $i++){
				if($_SESSION['Producto'][$i] != $producto){
					$_SESSION['Producto'][] = $producto;
					$_SESSION['Cantidad'][] = $cantidad;
					echo 'Articulo: '.$_SESSION['Producto'][$i].'Cantidad: '.$_SESSION['Cantidad'][$i].'</br>';
				}else{
					$cantidadMostrar = $_SESSION['Cantidad'][$i];
					$cantidadMostrar = $cantidadMostrar + $cantidad;
					echo 'Articulo: '.$_SESSION['Producto'][$i].'Cantidad: '.$cantidadMostrar.'</br>';
				}
			}
		}
	}
?>
	<table>
		<form>
			<tr>
				<th>Producto</th>
				<td><input type="text" name="txtProducto" id="txtProducto"/></td>
			</tr>
			<tr>
				<th>Cantidad</th>
				<td><input type="text" name="txtCantidad" id="txtCantidad"/></td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" value="Añadir al Carrito" name="btnEnviar" id="btnEnviar"/></td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" value="Mostrar Productos" name="btnMostrar" id="btnMostrar"/></td>
			</tr>
		</form>
	</table>
</body>
</html>
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

Duda codigo

Publicado por xve (5519 intervenciones) el 27/04/2014 10:25:54
Hola Facundo, no entiendo muy bien tu código...

Que es $bandera? Según esta variable, siempre añades el nuevo registro, ya que su valor siempre es true.

Para saber si un valor esta dentro de un array, utiliza la función in_array() en vez del bucle... de la manera que tienes el bucle, añadirás el producto al listado tantas veces como productos diferentes haya en el array $_SESSION['Producto']

Coméntanos, ok?
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

Duda codigo

Publicado por Facundo (6 intervenciones) el 27/04/2014 18:45:43
Me fije algunos errores i modifique el codigo. Ahora me sale la suma de cantidad del primer producto. Pero a la hora de sumar la cantidad de otro producto no me sale :/
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
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Punto 3</title>
</head>
<body>
<?php
	session_start();
?>
	<table>
		<form>
			<tr>
				<th>Producto</th>
				<td><input type="text" name="txtProducto" id="txtProducto"/></td>
			</tr>
			<tr>
				<th>Cantidad</th>
				<td><input type="text" name="txtCantidad" id="txtCantidad"/></td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" value="Añadir al Carrito" name="btnEnviar" id="btnEnviar"/></td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" value="Eliminar Sesion" name="btnEliminar" id="btnEliminar"/></td>
			</tr>
		</form>
	</table>
<?php
	if(isset($_REQUEST["btnEnviar"])){
		$producto = $_REQUEST["txtProducto"];
		$cantidad = $_REQUEST["txtCantidad"];
		$_SESSION['Contador'][] = $producto;
		if(count($_SESSION['Contador']) == 1){
			$_SESSION['Producto'][] = $producto;
			$_SESSION['Cantidad'][] = $cantidad;
		}else{
			for($i=0; $i < count($_SESSION['Producto']); $i++){
				if($_SESSION['Producto'][$i] == $producto){
					$_SESSION['Cantidad'][$i] = $_SESSION['Cantidad'][$i] + $cantidad;
					break;
				}else{
					$_SESSION['Producto'][] = $producto;
					$_SESSION['Cantidad'][] = $cantidad;
					break;
				}
			}
		}
		for($i=0; $i < count($_SESSION['Producto']); $i++){
			echo 'Producto: '.$_SESSION['Producto'][$i].' Cantidad: '.$_SESSION['Cantidad'][$i].'</br>';
		}
	}
	if(isset($_REQUEST['btnEliminar'])){
		session_destroy();
	}
?>
</body>
</html>

Producto: A Cantidad: 11
Producto: B Cantidad: 3
Producto: B Cantidad: 4
Producto: B Cantidad: 7

Este es el resultado de mi codigo. Con el producto A me suma las cantidades y fue el primer producto que meti. En cambio con B no suma, lo muestra asi no mas :/ . 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
Imágen de perfil de xve

Duda codigo

Publicado por xve (5519 intervenciones) el 27/04/2014 19:17:02
el problema, creo que te lo tienes en el bucle for()

Porque haces ese bucle?? porque no utilizas in_array()?

Cada vez que pasas por el bucle, por ejemplo, el primer valor del array, si no coincide, ya lo añades nuevamente... por eso solo te funciona con el primero.
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

Duda codigo

Publicado por Facundo (6 intervenciones) el 27/04/2014 19:36:04
Gracias , con el "in_Array" me salio! muchas gracias ! dejo el codigo para la gente

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
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Punto 3</title>
</head>
<body>
<?php
	session_start();
?>
	<table>
		<form>
			<tr>
				<th>Producto</th>
				<td><input type="text" name="txtProducto" id="txtProducto"/></td>
			</tr>
			<tr>
				<th>Cantidad</th>
				<td><input type="text" name="txtCantidad" id="txtCantidad"/></td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" value="Añadir al Carrito" name="btnEnviar" id="btnEnviar"/></td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" value="Eliminar Sesion" name="btnEliminar" id="btnEliminar"/></td>
			</tr>
		</form>
	</table>
<?php
	if(isset($_REQUEST["btnEnviar"])){
		$producto = $_REQUEST["txtProducto"];
		$cantidad = $_REQUEST["txtCantidad"];
		$_SESSION['Contador'][] = $producto;
		if(count($_SESSION['Contador']) == 1){
			$_SESSION['Producto'][] = $producto;
			$_SESSION['Cantidad'][] = $cantidad;
		}else{
			if(in_array($producto,$_SESSION['Producto'])){
				for($i=0; $i < count($_SESSION['Producto']); $i++){
					if($_SESSION['Producto'][$i] == $producto){
						$_SESSION['Cantidad'][$i] = $_SESSION['Cantidad'][$i] + $cantidad;
						break;
					}
				}
			}else{
				$_SESSION['Producto'][] = $producto;
				$_SESSION['Cantidad'][] = $cantidad;
			}
		}
		for($i=0; $i < count($_SESSION['Producto']); $i++){
			echo 'Producto: '.$_SESSION['Producto'][$i].' Cantidad: '.$_SESSION['Cantidad'][$i].'</br>';
		}
	}
	if(isset($_REQUEST['btnEliminar'])){
		session_destroy();
	}
?>
</body>
</html>
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
Imágen de perfil de xve

Duda codigo

Publicado por xve (5519 intervenciones) el 27/04/2014 19:46:40
Gracias por compartirlo Facundo!!
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