Foros del Web » Programando para Internet » PHP »

Problemas al pasar checkbox y textbox relacionados.

Estas en el tema de Problemas al pasar checkbox y textbox relacionados. en el foro de PHP en Foros del Web. Hola, buenas, a ver si me explico, estoy haciendo un sistema en el que el cliente escoge una serie de elementos, y la cantidad de ...
  #1 (permalink)  
Antiguo 08/06/2006, 09:15
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 12 años, 6 meses
Puntos: 7
Problemas al pasar checkbox y textbox relacionados.

Hola, buenas, a ver si me explico, estoy haciendo un sistema en el que el cliente escoge una serie de elementos, y la cantidad de estos que desea, si selecciona los primeros no hay problema, pero si se salta alguno no soy capaz de relacionarlos en el script de llegada.
tengo el siguiente codigo:

Código PHP:
foreach ($otros as $otr)
                            {
                    ?>
                      <tr>
                        <td height="20">
                        <input type="checkbox" name="check[]" value="<? echo $otr['Id'];?>">                         
                            <? echo $otr['Nombre'];?>
                        </td>
                        <td height="20"><div align="center">
                          <input name="Unidades[]" class="campop" value="1" size="2" maxlength="10" type="text">
                        </div></td>
                        <td height="20"><div align="center"><strong><font color="#ff0000"><? echo $otr['Precio'];?> €</font></strong></div></td>
                      </tr> 
                      <?
                              
};
y lo recojo con:
Código PHP:
if (isset($_GET['check'])){
                    
$c='0';
                    foreach(
$_GET['check'] as $otros
                    {         
                        
$pr=$_GET['Unidades'][$c];                        
                        
$otr $objSql->seleccionar ("Acabado""*""Id=".$otros""01);
                        
$pvp=($pr*$otr[0]['Precio']);
                        echo 
'<strong><font color="#ff0000">('.$otr[0]['Nombre'].','.$pvp.' &euro;)</font></strong><br>';
                        
$c++;
                    };
                }; 
el problema es que, si por ejemplo tengo 2 checkboxes y solo selecciono el 2º, en la llegada me recoge el valor del chekbox bien, pero el contenido del textbox que recoge es el del primero(en lugar del 2º).
¿alguien sabe como podria solucionarse esto?

Gracias.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #2 (permalink)  
Antiguo 08/06/2006, 09:51
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Yo lo que hago es generar dinamicamente nombres distintos a cada checkbox y a cada textbox. Es decir,

Código PHP:
<?php
$i
=0;
foreach (
$algo as $alg)
{
?>
     <input type="checkbox" name="check<?php echo $i;?>" value="...">
<?php    
    $i
++;
}
$_SESSION['num_check']=$i;
?>
Luego los recupero asi:

Código PHP:
<?php
for($i=0;$i<$_SESSION['num_check']);$i++)
{
    
$nombre="check$i";
    
//si no está vacio este check.
    
if(isset($_GET[$nombre]) && $_GET[$nombre]!="")
    {
    }
}
?>
  #3 (permalink)  
Antiguo 08/06/2006, 10:49
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 12 años, 6 meses
Puntos: 7
Gracias claudiovega, pero con eso recogeria bien el valor del Check, pero el problema es(al menos con ese codigo no pillo la forma de hacerlo)que si selecciono un checkbox, se pase el valor del textbox a el asignado.
A ver por ejemplo:


Check1 textbox1
Check2 textbox2


Si seleciono el Check1, en la llegada me da el valor del textbox1:

Recibo:
producto "Check1" cantidad "textbox1"

pero si selecciono el Check2(dejando el 1 sin seleccionar), lo que recibo es:

producto "Check2" cantidad "textbox1"

cuando deberia tener

producto "Check2" cantidad "textbox2"

No se si me explico, es que soy de ciencias

Saludos..adios:
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #4 (permalink)  
Antiguo 08/06/2006, 12:26
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Si, por que en cada iteracion del ciclo for se saca el valor del check X y el valor del textbox X. No ocurre lo mismo con foreach.
  #5 (permalink)  
Antiguo 12/06/2006, 03:22
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 12 años, 6 meses
Puntos: 7
Cita:
Iniciado por claudiovega
Si, por que en cada iteracion del ciclo for se saca el valor del check X y el valor del textbox X. No ocurre lo mismo con foreach.

Tienes razon, ahora solo tengo una duda, ¿como recojo el valor asignado?, es decir, los recojo con:

Código PHP:
<?
for($i=0;$i<$fin;$i++)
{
        
$nombre="check$i";
    
$nombre2="Unidades$i";
//si no está vacio este check.
        
if(isset($_GET[$nombre]) && $_GET[$nombre]!="")
        {
            echo 
$nombre;
        echo 
$nombre2;
    }
}
?>
y asi solo recojo el nombre, pero no el valor¿alguna ayudita?

Gracias.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #6 (permalink)  
Antiguo 12/06/2006, 06:11
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 12 años, 6 meses
Puntos: 7
Resuelto

Lo dicho, es como cuando te pasas 2 horas y el error es un punto y coma, en lugar de

Código PHP:
echo $nombre;
echo 
$nombre2
debo usar:
Código PHP:
echo $_GET[$nombre];
echo 
$_GET[$nombre2]; 
y listo.

Gracias a todos los que habeis leido la pregunta, especialmente a claudiovega por tu ayuda.

Gracias.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:16.