Foros del Web » Programando para Internet » PHP »

No recogo valores del radio button

Estas en el tema de No recogo valores del radio button en el foro de PHP en Foros del Web. Hola a todos Tengo un problema cuando envio el valor de un radio button en otra pagina en la pagina mostrar.php hago una consulta para ...
  #1 (permalink)  
Antiguo 22/11/2004, 08:45
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 20 años, 2 meses
Puntos: 1
No recogo valores del radio button

Hola a todos
Tengo un problema cuando envio el valor de un radio button en otra pagina
en la pagina mostrar.php hago una consulta para mostrar todos los tipos de pagos que hay y me los muestra todos y marcando(checked) el tipo que se se evalua, hasta aqui todo bien pero cuando en otro pagina (modificar.php) lo quiero recibir esta variable modificada me sale como

\"row[cli_pago]\"

y este el el valor que quiero recibir que puede ser Transferencia Bancaria, Contra reembolso y recibo bancario pero me sale el tag anterior.

mostrar.php
$codigo=$_GET["codi"];
$pago=mysql_query("SELECT distinct cli_pago FROM clientes");
$consulta=mysql_query("SELECT * FROM clientes WHERE cli_codigo='$codigo'");

$var_pag=mysql_result($consulta,0,"cli_pago");

while ($row=mysql_fetch_array($pago))
{
if ($row[cli_pago]==$var_pag)
{ echo'<span class="Estilo108"><input type="radio" checked name="btn_pago" value=\"row[cli_pago]\" >'.$row["cli_pago"].'</input></span><br>'; }
else
{ echo'<span class="Estilo108"><input type="radio" name="btn_pago" value=\"row[cli_pago]\" >'.$row["cli_pago"].'</input></span><br>'; }

esto me sale perfecto,

pero cuando lo recogo en modificar.php

$forma_pago=$_POST["btn_pago"];

echo $forma_pago;

obtengo \"row[cli_pago]\"


que podria ser en el value lo he quitado las comillas, las barras y no me muestra el valor en si que recibe.

Gracias
  #2 (permalink)  
Antiguo 22/11/2004, 08:50
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 20 años, 2 meses
Puntos: 1
perdon era

value=\"$row[cli_pago]\"

pero tampoco ontengo el valor.
  #3 (permalink)  
Antiguo 22/11/2004, 09:47
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 20 años, 2 meses
Puntos: 1
He probado de varias maneras pero realmente no se que esta pasando.. Alguien me puede ayudar.

Gracias
  #4 (permalink)  
Antiguo 22/11/2004, 12:06
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 20 años, 2 meses
Puntos: 1
Hay una alma caritativa que me pueda ayudar....

Gracias
  #5 (permalink)  
Antiguo 22/11/2004, 15:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Debes usar comillas (simples a ser posible o dobles) en todo indice de array .. En tu caso te faltó en uno de los $row y también te faltó usar el $ para indicar que eso es variable .. no "constante".

Código PHP:
echo "<span class=\"Estilo108\"><input type=\"radio\" name=\"btn_pago\" value=\"".$row['cli_pago']."\">".$row['cli_pago']."</input></span><br>"; } 
Un saludo,
  #6 (permalink)  
Antiguo 23/11/2004, 05:14
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 20 años, 2 meses
Puntos: 1
Gracias Cluster esa era la respuesta correcta pero ahora tengo otro asuntillo.

Su pongamos que cuando un cliente se de de alta pero en el formulario de alta existan por ejmplo 5 tipos de Pago:
1 Contra Reembolso
2 Efectivo
3 Transferencia bancaria
4 Recibo bancario
5 Pagares
6 Credito

y supongamos que generalmente los clientes se den de alta con el tipo 1 y 3 entonces esos tipos de pagos se grabarian en la BD. Ahora bien yo con la consulta

$pago=mysql_query("SELECT distinct cli_pago FROM clientes");

muestro solo el tipo 1 y 3 que tengo en la BD producto de las Altas y si quiero editar ese registro para modificarlo hago la siguiente rutina

while ($tipo=mysql_fetch_array($pago))
{ if ($tipo[cli_pago]==$var_pag)
{ echo "<span class=\"Estilo108\"><input type=\"radio\" name=\"tipo_pago\" value=\"".$tipo['cli_pago']."\" checked >".$tipo['cli_pago']."</input></span><br>"; }
else
{ echo "<span class=\"Estilo108\"><input type=\"radio\" name=\"tipo_pago\" value=\"".$tipo['cli_pago']."\" >".$tipo['cli_pago']."</input></span><br>"; }
}

Aca solo me muestra solo los tipos 1 y 3 PERO OJO COMO DEBERIA HACERLO PARA QUE ME APEREZCAN EL RESTOS DE TIPOS DE PAGOS QUE NO FIGURAN EN LA BD SUPONIENDO QUE LE CLIENTE SE QUIERA CAMBIAR DE PAGO "TRANSFERENCIA BANCARIA" POR "RECIBO BANCARIO" ESTE ULTIMO NO FIGURA EN LA BD PORQUE NINGUN CLIENTE SE HA DADO DE ALTA CON ESE TIPO DE PAGO.


Gracias
  #7 (permalink)  
Antiguo 23/11/2004, 07:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Lo que deberías es tener una tabla exclusiva para los "medios de pago" normalizada contra tu tabla de "clientes" ..

Es decir:

medios_pago
id_medio_pago
nombre_medio_pago

clientes
id_cliente
id_medio_pago <<<<---- clave foránea
etc_campos

Así haces tus "select" HTML para ofrecer las alternativas de pago posibles a la tabla "medios_pago" y en tu tabla clientes sólo guardas el identificador del médio de pago .. De esta forma optimizas mucho tu "modelo de datos" envitando hacer sentencias SQL "DISTINCT" que son realmente "pesadas" para su ejecución.

Las consultas SQL para mostrar la "ficha" de tu cliente con el "nombre" del médio de pago serían relacionadas (a ambas tablas) tipo:

SELECT *.clientes,nombre_medio_pago.medios_pago FROM clientes,medios_pago WHERE id_medio_pago.cliente = id_medio_pago.medios_pago AND .. otras condiciones ..

Si quieres ver más sobre "normalización" de base de datos .. te vendría bien leer este tutorial:

http://www.mysql-hispano.org/page.php?id=16

Un saludo,
  #8 (permalink)  
Antiguo 23/11/2004, 09:08
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 20 años, 2 meses
Puntos: 1
De acuerdo

Gracias Amigo estoy muy Agradecido..
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 13:01.