Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Pasar valor por GET

Estas en el tema de Pasar valor por GET en el foro de Javascript en Foros del Web. Hola a todos intento pasar un valor que el usuario determina (cantidad) a un archivo php Tengo una consulta la cual repite los productos en ...
  #1 (permalink)  
Antiguo 09/12/2019, 16:26
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.280
Antigüedad: 8 años, 8 meses
Puntos: 10
Pasar valor por GET

Hola a todos intento pasar un valor que el usuario determina (cantidad) a un archivo php
Tengo una consulta la cual repite los productos en existencia, hice el paso del valor por javascript, pero cuando es solo un registro funciona bien, pero si tengo dos o mas siempre se muestra el ultimo valor, puedo hacer una función para que solo se envíen el input de cantidad correspondiente a la línea donde se da clic?

Es algo así
Concepto---Monto---Cobrar
Playera-------150---------( Clic en enviar formulario (parámetro 1)
Pantalón-----250---------( Clic en enviar formulario (parámetro 2)
Vestido-------350---------( Clic en enviar formulario (parámetro 3)


Código PHP:
      <form action="dos.php" method="GET" name="formulario1">
    <table class="normal" >
  <thead>
     <tr>
   <th width="300">Concepto</th>
      <th ><div align="center">Monto</div></th>
     <th ><div align="center">Cantidad</div></th>    
      <th>Cobrar</th>
</tr></thead>
  <?php do { ?>
  
    <tbody>
    
<td div align="left"><?php $num+=1;  $num;  ?><?php echo $row_productos['Concepto']; ?></div></td>

    <td 
 <?php 
echo $monto=$row_productos['Monto'];    
?>
<td align="center" bgcolor="<? echo $bgcolort;?>">
<input type=number value="1" name="cantidad[]" id="cantidad<? echo $num;?>" min="1" max="10" size="7">
</td>
    <?    
 
echo     "<td width='25' align='center' bgcolor='$bgcolort'><a href='javascript:enviar_formulario($num)'>Enviar formulario</a>";
  echo 
"</td>";?>
       </tr>
                
  <?php } while ($row_productosmysqli_fetch_assoc($productos)); ?>
   <td ></td>
        </tbody>


</table>
</form>
Código HTML:
<script>
function enviar_formulario(num){
document.formulario1.submit(num)
}
</script> 
Dos.php
Código PHP:
<?
$cantidad 
=$_GET['cantidad'];
foreach(
$cantidad as $key => $value){
 
$c=$_GET['cantidad'][$key];
}
      echo 
"cantidad ".$c;
?>
  #2 (permalink)  
Antiguo 09/12/2019, 16:50
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.004
Antigüedad: 11 años, 6 meses
Puntos: 2198
Respuesta: Pasar valor por GET

El problema que tienes actualmente es que solo estás creando un input para la cantidad, pero no estás dejando opción para enviar también ID del producto.

El método submit no admite parámetros y, como estás trabajando con enlace, lo recomendable sería crear el input con "cantidad" + idproducto:

Código PHP:
Ver original
  1. <?php // Para crear el input: ?>
  2. <input type=number value="1" name="cantidad[]" id="cantidad<? echo $row_productos['Id']; ?>" min="1" max="10" size="7">
  3.  
  4. <?php // Para crear el botón: ?>
  5. <td width="25" align="center" bgcolor="<?php echo $bgcolort; ?>"><a href="#" onclick="enviar_formulario(<?php echo $row_productos['Id']; ?>);">Enviar formulario</a>

Código Javascript:
Ver original
  1. function enviar_formulario(id_producto) {
  2.     // Obtener elemento
  3.     var item = document.getElementById('cantidad' + id_producto);
  4.     // Verificar que existe y que la cantidad es válida
  5.     if(item && item.value > 0) {
  6.         // Redireccionar
  7.         window.location.href = 'dos.php?producto=' + id_producto + '&cantidad=' + item.value;
  8.     }
  9. }
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 09/12/2019, 17:06
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.280
Antigüedad: 8 años, 8 meses
Puntos: 10
Respuesta: Pasar valor por GET

Cita:
Iniciado por Triby Ver Mensaje
El problema que tienes actualmente es que solo estás creando un input para la cantidad, pero no estás dejando opción para enviar también ID del producto.

El método submit no admite parámetros y, como estás trabajando con enlace, lo recomendable sería crear el input con "cantidad" + idproducto:

Código PHP:
Ver original
  1. <?php // Para crear el input: ?>
  2. <input type=number value="1" name="cantidad[]" id="cantidad<? echo $row_productos['Id']; ?>" min="1" max="10" size="7">
  3.  
  4. <?php // Para crear el botón: ?>
  5. <td width="25" align="center" bgcolor="<?php echo $bgcolort; ?>"><a href="#" onclick="enviar_formulario(<?php echo $row_productos['Id']; ?>);">Enviar formulario</a>

Código Javascript:
Ver original
  1. function enviar_formulario(id_producto) {
  2.     // Obtener elemento
  3.     var item = document.getElementById('cantidad' + id_producto);
  4.     // Verificar que existe y que la cantidad es válida
  5.     if(item && item.value > 0) {
  6.         // Redireccionar
  7.         window.location.href = 'dos.php?producto=' + id_producto + '&cantidad=' + item.value;
  8.     }
  9. }
Gracias Triby quedo perfecto



La zona horaria es GMT -6. Ahora son las 07:37.