Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/11/2018, 11:56
Avatar de Middrel
Middrel
 
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Almacenar productos en un array

Hola, buenas tardes,

Tengo la siguiente duda, les explico.

Tengo 5 productos distintos:

Producto A, B, C, D, E.

y tengo que armar 3 paquetes con esos productos, uno con 3 productos de los anteriores mencionados, otro con 5 y otro con 10.

Hasta ahí, no tengo ningún problema, todo bien con el siguiente código:

Código Javascript:
Ver original
  1. // Añadir productos a paquete
  2. // Definir que tipo de paquete es (3, 5, 10)
  3.  
  4.     var miPaquete = new Array();
  5.     var elemento;
  6.     var pUnidad = 0;
  7.    
  8.     function customPaqs(paq, id, producto){
  9.  
  10.         if(miPaquete.length < paq){
  11.  
  12.             miPaquete.push(producto);
  13.             document.getElementById("myAdds").innerHTML = miPaquete;
  14.            
  15.         } else { alert("Máximo de artículos permitidos."); }
  16.                
  17.     }

Este botón es con el qué los agrego a la función:

Código PHP:
<input type="button" name="add" onclick="customPaqs(<?php echo $kit ", " $rowSelectProductsPaq['id_producto'] . ", '" $rowSelectProductsPaq['prod_producto'] . "'"?>);" value="Add">
Siendo,

Código PHP:
$kit El paquete que voy a armar (35 o 10)
$rowSelectProductsPaq['id_producto'] = el identificador del producto
$rowSelectProductsPaq
['prod_producto'] = el nombre del producto 
Entonce, con esto agrego 3, 5 o 10 productos dependiendo el paquete que vaya a armar.

Ahora, necesito incorporar la siguiente regla:

En el paquete 3, ningún producto puede exceder más de 2 unidades por producto, es decir,

Paquete de 3 -> - No puedo tener 3 unidades de un mismo producto en este paquete. Máximo por unidad 2

Paquete de 5 -> No puedo tener 4 unidades de un mismo producto en este paquete. Máximo por unidad 3

Paquete de 10 -> No puedo tener 4 unidades de un mismo producto en este paquete. Máximo por unidad 3

Intenté usar la siguiente función para identificar cuántas veces se repite un producto en el arreglo

elemento = miPaquete.indexOf(id);

Código Javascript:
Ver original
  1. var miPaquete = new Array();
  2.     var repetido = 0;
  3.     var pUnidad = 0;
  4.    
  5.     function customPaqs(paq, id, producto){
  6.  
  7.         miPaquete.push(producto);
  8.         document.getElementById("myAdds").innerHTML = miPaquete;
  9.  
  10.         if(paq == 3){ pUnidad = 2; }
  11.         if(paq == 5){ pUnidad = 3; }
  12.         if(paq == 10){ pUnidad = 4; }
  13.  
  14.         if(miPaquete.length < paq){
  15.  
  16.    
  17.               for(var i = 0; i < miPaquete.length; i++){
  18.  
  19.                 if( miPaquete.indexOf(producto, i) === -1){
  20.  
  21.                     repetido = 0;
  22.                    
  23.                 } else if( miPaquete.indexOf(producto, i) > -1 ) {
  24.  
  25.                     repetido++;
  26.                 }
  27.             }
  28.  
  29.             alert("El producto " + producto + " se repite " + repetido + " veces en el array");
  30.        
  31.         } else { alert("Máximo de artículos permitidos."); }
  32.                
  33.     }

Sin embargo, no realiza la función correctamente, enviándome los siguientes mensajes:

Código:
Cuando agrego el primer producto, 

El A se repite 1 veces en el array

Cuando agrego el segundo producto, 

El producto C se repite 3 veces en el array
¿Saben en dónde estoy cometiendo el error?

De antemano, agradezco por sus comentarios. Sigo verificando.

Saludos!!