Radiobuttons

Como dijo el dermatólogo, vamos al grano.
Mi problema es el siguiente, tengo una página con varias pestañas, en cada una un formulario, en uno de los forms tengo una tabla generada desde MySQL y una opción de chequeo con un radiobutton en cada registro encontrado y entre los elementos que recupera está la opción del precio que se pone en un text que está sujeto a cambio, ¿cómo los recupero el id y el precio para actualizar la BD?
Esto es parte del código:
                <?php do {
         //aqui recupero los datos de la BD
         $fac_id = $row_pagador['id_cliente'];
         $fac_nombre =$row_pagador['nombre'];
         $fac_paterno =$row_pagador['paterno'];
         $fac_materno = $row_pagador['materno'];
         $fac_ing = $row_pagador['fecha_ing'];
         $fac_sale = $row_pagador['fecha_sale'];
         $fac_pza = $row_pagador['num_pieza'];
         $fac_precio = $row_pagador['precio_cama'];
         $restar = $restar_fechas -> restaFechas($fac_ing,$fac_sale);
         if ($restar==0) { $restar=1; }
        ?>
<tr>
<td align="center" ><span style="font-weight:bold"><?php echo $fac_pza; ?></span></td>
<td><?php echo $fac_nombre," ",$fac_paterno," ",$fac_materno ?>
                        <input name="control" type="hidden" id="control" value="1" />
                        <input name="id_cli" type="hidden" id="id_cliente" value="<?php echo $fac_id; ?>" />
                    </td>
<td align="right"><?php $deuda = $restar*$fac_precio; ?>
                    <input name="pagador[]" type="text" class="form_textder" id="$pagador" value="<?php echo number_format($deuda,2)?>" size="6" maxlength="7" />bs.-</td>
<td align="center">
                    <?php
          if (!empty($_POST['radio'])) {
           $activado = $_POST['radio'];
           $_SESSION['pestania']=2;
          } else { $activado = ''; } //`{$_POST['radio']}`
          ?>
                    <label for="paganini"></label>
                    <?php
          if ($activado==$fac_id) {
          ?>
                    <input name="radio" type="radio" id="paganini" onclick="this.form.submit()" value=<?php echo $fac_id; ?> checked="checked" />
                    <?php } else { ?>
                    <input name="radio" type="radio" id="paganini" onclick="this.form.submit()" value=<?php echo $fac_id; ?> />
                    <?php }?>
                    </td>
</tr>
                  <?php } while ($row_pagador = mysql_fetch_assoc($pagador)); ?>

1 respuesta

Respuesta
1
Recarga la página cada vez que hagas click en el radiobutton con el parámetro adecuado y que se recarguen las pestañas con los valores que necesites.
En cada click del radio se recarga el form, pero a cada radio va asociado un campo de texto que es un dato recuperado de una tabla y que se puede modificar, y yo necesito esa dupla para actualizar la B.D.
Cuando recarga recupera el valor del radio que es el id_cliente pero no así el valor del campo de texto asociado, estoy haciendo la prueba con índices pero siempre mem sale el correspondiente valor del radio y el último valor del campo de texto, probé con algo de java, pero mis escasos conocimientos no pudieron adaptar la función.
Agradezco tu atención, y espero se entienda la aclaración
Cuando recargas el formulario, actualiza la BD y cuando se vuelva a cargar, en los valores  value=<?php echo $fac_id; ?> te saldrásn los ultimos valores actualizados, no?
No se puede actualizar la BD cualquier rato, lo que te mostré es parte del código de la página, ésta tiene 3 formularios más, que igualmente se recargan y actualizan, en este form muestro de inicio un par de tablas con los clientes registrados activos (pagador y beneficiarios), al principio las dos tablas son iguales, al hacer click en la radio selecciono a un cliente pagador de la primer tabla y en la segunda tabla me aparecen los clientes activos que pueden ser beneficiarios menos el elegido pagador, yo necesito de la primer lista, en la que se selecciona al cliente "pagador" me mande a otra página o recargue pero que me permita recuperar los datos del radio más los del campo de texto modificado, recupero bien el valor del radio asociado al id del cliente más no puedo recuperar el campo de texto que le corresponde.
¿Cómo puedo hacerlo? O quieres que te mande todo el código, es algo largo.
De antemano muchas gracias
El tema es que en el valor del radiobutton, solo puedes recuperar el valor del "value", no tiene nada que ver con el texcto que le pongas al lado, pues esto solo cuenta como etiqueta o texto HTML.
Utiliza el valor del radiobutton para poner los datos que te interese, separados por guiones por ejemplo, si necesitas más de uno, por ejemplo: value="22-112-Felipe".
De esta forma, con un pequelño algoritmo, puedes recuperar los valores internos, no se si te he entendido bien, pero creo que los tiros van por ahí, ¿no?
Si, por ahí vamos, en el formulario, primero selecciono el cliente con el radio y luego puedo modificar su correspondiente precio:
        <form id="facturar" name="facturar" method="post" action="">
<table width="100%" border="1" cellpadding="1" cellspacing="0" align="center" bordercolor="#8888CC">
<tr>
<td width="10%" align="center" bgcolor="#EAD2A2">Pza</td>
<td width="60%" bgcolor="#EAD2A2">Cliente</td>
<td width="23%" align="center" bgcolor="#EAD2A2">Deuda</td>
<td width="7%" align="center" bgcolor="#EAD2A2">Sel</td>
</tr>
<tr>
<td colspan="4" bgcolor="#FF6600"><img src="../Imagenes/mm_spacer.gif" width="1" height="1" /></td>
</tr>
                <?php do { // aqui recupero los datos del cliente
         $fac_id = $row_pagador['id_cliente'];
         $fac_nombre =$row_pagador['nombre'];
         $fac_paterno =$row_pagador['paterno'];
         $fac_materno = $row_pagador['materno'];
         $fac_ing = $row_pagador['fecha_ing'];
         $fac_sale = $row_pagador['fecha_sale'];
         $fac_pza = $row_pagador['num_pieza'];
         $fac_precio = $row_pagador['precio_cama'];
         $restar = $restar_fechas -> restaFechas($fac_ing,$fac_sale);
         if ($restar==0) { $restar=1; }
        ?>
<tr>
// aquí empieza la fila del registro
<td align="center" ><span style="font-weight:bold"><?php echo $fac_pza; ?></span></td>
<td><?php echo $fac_nombre," ",$fac_paterno," ",$fac_materno ?> </td>
<td align="right"><?php $deuda = $restar*$fac_precio; ?>
                    <input name="pagador" type="text" class="form_textder" value="<?php echo number_format($deuda,2)?>" size="6" maxlength="7" />bs.-</td>
//este el el valor que quiero recuperar
<td align="center">
                    <?php
          if (!empty($_POST['radio'])) {
           $activado = $_POST['radio'];
           $_SESSION['pestania']=2;
          } else { $activado = ''; } //`{$_POST['radio']}`
          ?>
                    <label for="paganini"></label>
                    <?php
          if ($activado==$fac_id) {
          ?>
         //estos son los radios que me recarganl la página y me habilitan a otra consulta
         <input name="radio" type="radio" id="paganini" onclick="this.form.submit()" value=<?php echo $fac_id; ?> checked="checked" />
                    <?php } else { ?>
                    <input name="radio" type="radio" id="paganini" onclick="this.form.submit()" value=<?php echo $fac_id; ?> />
                    <?php }?>
                    </td>
</tr>
<?php } while ($row_pagador = mysql_fetch_assoc($pagador)); ?>
El campo de texto y el radio están en la misma fila, si voy a concatenar valores, de igual manera ¿cómo recupero el valor del text?
En esta linea:
<input name="radio" type="radio" id="paganini" onclick="this.form.submit()" value=<?php echo $fac_id; ?> />
¿Dónde está el texto, el label del radiobutton?. A ver si me puedes explicar mejor, porque no acabo de entenderte.
Si se trata de recuperar el valor del label, lo debes de tener en la BD, y simplemente lo deberás colocar detrás de donde corresponda, después del INPUT.
Como verás tengo dos
<input name="radio" type="radio" id="paganini" onclick="this.form.submit()" value=<?php echo $fac_id; ?> />;
son lo mismo salvo que el primero está "checked", esto me permite recargar la página sin perder el valor del radio que es el id del cliente, la lista que se genera es un bucle que recupera los datos de una respectiva BD.
Según la consulta se generan "n" registros, con los datos del cliente y a cada fila se le asocia un radio que es el que se muestra arriba. "ESE" radio con índice "n" está ligado a un campo de texto igualmente de índice "n", cuando presiono el submit es cuando mando a realizar la consulta final con los datos del texto modificado, ¿cómo recupero la tupla "n"? Puedo recuperar el valor del radio pero el valor del texto siempre me sale el último de la tabla.
Insisto, después del input, no sacas ningún valor, ¿no?, es ahí donde debes de poner los valores:
<input name="radio" type="radio" id="paganini" onclick="this.form.submit()" value=<?php echo $fac_id; ?> /> AQUI EL VALOR QUE LEES DE LA BD DE ESE CAMPO;
¿? ¿?
El input me indica cuál es el juego de registros que se ha elegido de la tabla generada dinámicamente, el valor que se recupera en el text es un precio que se puede modificar.
Si lo pongo luego del input ¿cómo lo modifico? Moviendo el campo al fin de la tabla recupero el valor del input que es el id del cliente pero el precio modificado del text que puedo recuperar es siempre el último de la tabla.
Estoy viendo algo de javascript para recuperar datos de form pero el drama está en recuperar el índice del input y del text, que no llegan por pareja.
Puedes utilizar el vampo del check para poner más de un valor, por ejemplo, separado por un "-" y luego separarlo mediante explode(), para operar con el:
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas