PHP - Como Actualizar multiples inputs con el mismo nombre de forma independiente PHP

 
Vista:
Imágen de perfil de Lopez
Val: 395
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

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

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

V9r6O

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"]);
 
?>

XqaKC

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder