Como Actualizar multiples inputs con el mismo nombre de forma independiente PHP
Publicado por Lopez (128 intervenciones) el 07/12/2016 16:41:51
Estimados Amigos,
Estoy dandome unos cabezazos de novato tremendos! con esta funcionalidado "Agregar al carro".
El problema que estoy enfrentando es que no puedo actualizar el valor CANTIDAD de multiples INPUTS de forma independiente, ya que sólo se termina por aumentar el valor en la ULTIMA CASILLA..
Desde ya,
Muchisimas gracias ;)
Esto es lo que tengo hasta ahora:
FORM
La logica de esto es que Busco por NOMBRE o ID Del producto. Encontrado, lleno la caja de texto CANTIDAD (name = "q") y finalizo presionando AGREGAR (submit button).

addtocart.php

Esta es la parte donde estoy teniendo el problema al actualizar el INPUT CANTIDAD (name = "q"), porque sólo incrementa el VALOR del ULTIMO INPUT.
Si se preguntan dónde está el ID del producto, este se oculta en una caja de texto (type = "hidden" name = "product_id".)
Estoy dandome unos cabezazos de novato tremendos! con esta funcionalidado "Agregar al carro".
El problema que estoy enfrentando es que no puedo actualizar el valor CANTIDAD de multiples INPUTS de forma independiente, ya que sólo se termina por aumentar el valor en la ULTIMA CASILLA..
Desde ya,
Muchisimas gracias ;)
Esto es lo que tengo hasta ahora:
FORM
1
2
3
4
5
6
7
8
9
10
11
<?php foreach($_SESSION["cart"] as $p):
$product = ProductData::getById($p["product_id"]);
?>
<form method="post" class="x" action="index.php?view=addtocart">
<input type="hidden" name="product_id" value="<?php echo $product->id; ?>">
<div class="input-group">
<input type="text" class="form-control" value="<?php echo $p["q"]; ?>" required id="q2" name="q" >
<span class="input-group-btn">
<button type="submit" class="btn btn-primary"><i class="glyphicon glyphicon-plus-sign"></i></button>
</span> </form>
</div>
La logica de esto es que Busco por NOMBRE o ID Del producto. Encontrado, lleno la caja de texto CANTIDAD (name = "q") y finalizo presionando AGREGAR (submit button).

addtocart.php
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
if(isset($_POST["q"]) && !is_numeric($_POST["q"])){
Core::alert("Valor invalido!");
Core::redir("./?view=sell");
}
if(!isset($_SESSION["cart"])){
$product = array("product_id"=>$_POST["product_id"],"q"=>$_POST["q"]);
$_SESSION["cart"] = array($product);
$cart = $_SESSION["cart"];
///////////////////////////////////////////////////////////////////
$num_succ = 0;
$process=false;
$errors = array();
foreach($cart as $c){
///
$q = OperationData::getQByStock($c["product_id"],StockData::getPrincipal()->id);
// echo ">>".$q;
if($c["q"]<=$q){
$num_succ++;
}else{
$error = array("product_id"=>$c["product_id"],"message"=>"No hay suficiente cantidad de producto en inventario.");
$errors[count($errors)] = $error;
}
}
///////////////////////////////////////////////////////////////////
//echo $num_succ;
if($num_succ==count($cart)){
$process = true;
}
if($process==false){
unset($_SESSION["cart"]);
$_SESSION["errors"] = $errors;
?>
<script>
window.location="index.php?view=sell";
</script>
<?php
}
}else {
$found = false;
$cart = $_SESSION["cart"];
$index=0;
$q = OperationData::getQByStock($_POST["product_id"],StockData::getPrincipal()->id);
$can = true;
if($_POST["q"]<=$q){
}else{
$error = array("product_id"=>$_POST["product_id"],"message"=>"No hay suficiente cantidad de producto en inventario.");
$errors[count($errors)] = $error;
$can=false;
}
if($can==false){
$_SESSION["errors"] = $errors;
?>
<script>
window.location="index.php?view=sell";
</script>
<?php
}
?>
<?php
if($can==true){ //CARGA +1 AL CARRO
foreach($cart as $c){
if($c["product_id"]==$_POST["product_id"]){
//echo "found"; //MENSAJE DE EXITO
$found=true;
break;
}
$index++;
// print_r($c);
// print "<br>";
}
if($found==true){
$q1 = $cart[$index]["q"];
$q2 = $_POST["q"];
$cart[$index]["q"]=$q1+$q2;
$_SESSION["cart"] = $cart;
}
if($found==false){
$nc = count($cart);
$product = array("product_id"=>$_POST["product_id"],"q"=>$_POST["q"]);
$cart[$nc] = $product;
// print_r($cart);
$_SESSION["cart"] = $cart;
}
}
}?>
<script>window.location='index.php?view=<?php if(Core::$user->kind==3){ ?>pdv<? } else {?>sell<? } ?>';</script>
<? // unset($_SESSION["cart"]);
?>

Esta es la parte donde estoy teniendo el problema al actualizar el INPUT CANTIDAD (name = "q"), porque sólo incrementa el VALOR del ULTIMO INPUT.
Si se preguntan dónde está el ID del producto, este se oculta en una caja de texto (type = "hidden" name = "product_id".)
Valora esta pregunta


0