Foros del Web » Programando para Internet » Javascript »

Ayuda con mensaje

Estas en el tema de Ayuda con mensaje en el foro de Javascript en Foros del Web. Este el codigo que manejo un listado de productos, incluye radio botones conforme se genere estos productos. pedidoNoatendido.php <?php include('conec.php'); conectarse(); $qry=mysql_query("select * from factura ...

  #61 (permalink)  
Antiguo 05/11/2008, 08:24
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Ayuda con mensaje

Este el codigo que manejo un listado de productos, incluye radio botones conforme se genere estos productos.
pedidoNoatendido.php
<?php
include('conec.php');
conectarse();
$qry=mysql_query("select * from factura where estatus='pendiente' order by idFactura desc");
?>
<html>
<head>
<title>Administrador de Pedidos Pendientes</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form name="" method="post" action="accion.php">
<table>
<tr>
<td align="center" width="4%"><strong>Id</strong></td>
<td align="center" width="21%"><strong>Destinatario</strong></td>
<td align="center" width="5%"><strong>Acci&oacute;n</strong></td>
</tr>
<?php
while($row=mysql_fetch_array($qry)){
?>
<tr>
<td align="center"><?php echo $row['idFactura'] ?></td>
<td><?php echo $row['destinatario'] ?></td>
<td align="center"><input type="radio" name="un_nombre" value="<?php echo $row['idFactura'] ?>"></td>
</tr>
<?php } ?>
<tr valign="middle">
<td align="center"><input type="submit" name="mismo_nombre" value="Consultar Pedido"></td>
<td align="center"><input type="submit" name="mismo_nombre" value="Cambiar a Pedido Atendido"></td>
</tr>
</table>
</form>
</body>
</html>

bien ahora quisiera que codigo js se debe colocar para que detecte que al dar click en el submit el usuario primero tiene que haber dado click en uno de los radio botones...esto actualmente no esta implementado debido que al no dar click en el radio boton y pasar el submit a otra pagina no me carga absolutamente ningun dato.

Por favor solicito me ayudaran con esto...gracias
  #62 (permalink)  
Antiguo 05/11/2008, 08:27
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda con mensaje

En el mensaje número 2 de este tema había colocado un enlace a un tema donde había un código que permite saber cuál de los radio está seleccionado, y de paso, saber si ninguno está seleccionado, puedes revisarlo y adaptarlo a lo que necesitas.

P.S.: La comprobación hazla en el evento onsubmit.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #63 (permalink)  
Antiguo 05/11/2008, 08:47
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Ayuda con mensaje

Gracias David el Grande, buen dia...
a ver esto es lo que avanze, capto la idea pero me falta un poquito xq no funciona

<script type="text/javascript">
function checked(radio) {
for (i=0; i<radio.length; i++) {
if (!radio[i].checked) {
alert("tienes que seleccionar un radio boton");
}
}
}
</script>
...
<form name="" method="post" action="accion.php" onsubmit="return checked();">
  #64 (permalink)  
Antiguo 05/11/2008, 08:51
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda con mensaje

No, eso está incorrecto, ya que al encontrar cualquier radio (que lógicamente habrá) que no esté seleccionado lanzará ese mensaje, debes recorrer todos los radios primero, si encuentras uno seleccionado, haces el return true para que la función devuelva verdadero, si no se encuentra ninguno (finaliza el for) devuelve false.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #65 (permalink)  
Antiguo 05/11/2008, 09:05
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Ayuda con mensaje

Comprendido,
a ver esto avanze:
debes recorrer todos los radios primerofor (i=0; i<radio.length; i++) {
si encuentras uno seleccionado if (radio[i].checked) {
haces el return true para que la función devuelva verdadero
return true;
si no se encuentra ninguno (finaliza el for) devuelve false
else{
alert("falta seleccionar un boton");
return false;

codigo completo:
function checked(radio) {
for (i=0; i<radio.length; i++) {
if (radio[i].checked) {
return true;

}
else{
alert("falta seleccionar un boton");
return false;
}
}
}

<form name="" method="post" action="accion.php" onsubmit="return checked();">
  #66 (permalink)  
Antiguo 05/11/2008, 09:12
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda con mensaje

No, el return false debes colocar después de terminado el for. De la forma como estás haciendo pasa la misma cosa que en el primer caso, al encontrar un radio no seleccionado ya devolverá false.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #67 (permalink)  
Antiguo 05/11/2008, 09:18
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Ayuda con mensaje

Bien segun lo sugerido,
function checked(radio) {
for (i=0; i<radio.length; i++) {
if (radio[i].checked) {
return true;
}
}
alert("falta seleccionar un boton");
return false;
}
<form name="" method="post" action="accion.php" onsubmit="return checked();">

pero me permite ir a la otra pagina pero sin haber dado click en uno de los radio botones????
  #68 (permalink)  
Antiguo 05/11/2008, 09:23
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda con mensaje

Es que la función checked requiere un parámetro (el grupo de radios), mientras que tú no le estás pasando ningún parámetro. La llamada debería ser:
Código javascript:
Ver original
  1. return checked(this.un_nombre)
En este caso this se refiere al formulario, ya que estamos haciendo la llamada desde el onsubmit, y this es el formulario en sí.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #69 (permalink)  
Antiguo 05/11/2008, 09:28
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Ayuda con mensaje

Muchisimas gracias David el Grande...

dejo el codigo por si alguien lo necesite:
function checked(radio) {
for (i=0; i<radio.length; i++) {
if (radio[i].checked) {
return true;
}
}
alert("falta seleccionar un boton");
return false;
}
<form name="" method="post" action="accion.php" onsubmit="return checked(this.un_nombre);">
  #70 (permalink)  
Antiguo 05/11/2008, 16:59
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Pregunta Respuesta: Ayuda con mensaje

Hola amigos, de nuevo por aqui y trayendo unos cuantos problemitas que tengo en esto:

consultarPedido.php idem al anterior
<?php
session_start();
include('conec.php');
conectarse();
$ids=$_POST['un_nombre']; //recibo del name del radio boton seleccionado
echo "Esto me llega en id= " .$ids; //oka
$qry=mysql_query("select * from factura left join usuario on factura.idUsername=usuario.username where idFactura='$id_boton_seleccionado'") or die("Error en consulta:" .mysql_error() ); //cambie la consulta debido a que tendo 2 tablas
if($row=mysql_fetch_array($qry))
{
$_SESSION['carritodesserializado']=unserialize($row['compra_serializada']); //desserializo la compra efectuada
$carro=$_SESSION['carritodesserializado'];
}
?>
...
//visualizo la lista de los productos comprados por el usuario
<?php
$suma=0;
foreach($carro as $k => $v){
$subto=$v['cantidad']*$v['precio'];
$suma=$suma+$subto;
$contador++;
?>
<form name="a<?php echo $v['identificador'] ?>" method="post" action="agregacarrito2.php?<?php echo SID ?>" id="a<?php echo $v['identificador'] ?>">
<td align="center"><a href="borracarrito2.php?<?php echo SID ?>&id=<?php echo $v['id'] ?>">eliminar</a></td> //aqui intento borrar un item
<td><?php echo $v['medicamento'] ?></td> //por ejemplo
<td align="center"><?php echo $v['cantidad'] ?></td>

el problema que tengo es que el archivo borracarrito2.php
<?php
session_start();
extract($_GET);
$carro=$_SESSION['carro'];
unset($carro[md5($id)]);
$_SESSION['carro']=$carro;
header("Location:atenderNoatendido.php?".SID);
?>
y regresar al archivo atenderNoatendido.php me regresa sin los datos de las tablas: factura y usuario //esto entiendo debido a que este inicialmente recibia del radio boton seleccionado ($ids=$_POST['un_nombre']; )

como solucionar este incoveniente??????
  #71 (permalink)  
Antiguo 05/11/2008, 17:07
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda con mensaje

Puedes pasarle por GET el id del radio seleccionado a atenderNoatendido.php, de la misma forma como estás propagando la sesión.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #72 (permalink)  
Antiguo 05/11/2008, 17:13
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Ayuda con mensaje

Hola David el Grande,
efectivamente en el archivo atenderNoatendido.php estoy pasandole por post el id del radio:
$id_boton_seleccionado=$_POST['radioboton'];
echo "es recibo ".$id_boton_seleccionado;
????a esto te refieres
  #73 (permalink)  
Antiguo 05/11/2008, 17:56
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda con mensaje

A lo que me refiero es al momento de pasar de borracarrito2.php a atenderNoatendido.php que es donde dijiste que tienes el problema de perder los valores, entonces, lo que podrías hacer es pasarle desde borracarrito2.php por GET el dato, o hasta usar variables de sesión.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #74 (permalink)  
Antiguo 05/11/2008, 17:59
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Ayuda con mensaje

Disculpa por la ignorancia , si me podrias dar una manito por favor que no la capto muy bien...
podrías hacer es pasarle desde borracarrito2.php por GET el dato, o hasta usar variables de sesión
este es borracarrito2.php
<?php
session_start();
extract($_GET);
$carro=$_SESSION['carro'];
unset($carro[md5($id)]);
$_SESSION['carro']=$carro;
header("Location:atenderNoatendido.php?".SID);
?>
y este es consultarPedido.php
<?php
session_start();
include('conec.php');
conectarse();
$ids=$_POST['un_nombre']; //recibo del name del radio boton seleccionado
  #75 (permalink)  
Antiguo 17/11/2008, 10:36
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Ayuda con mensaje

Del 05-11-2008 7:28 horas:

Muchisimas gracias David el Grande...
dejo el codigo por si alguien lo necesite:
function checked(radio) {
for (i=0; i<radio.length; i++) {
if (radio[i].checked) {
return true;
}
}
alert("falta seleccionar un boton");
return false;
}
<form name="" method="post" action="accion.php" onsubmit="return checked(this.un_nombre);">

...
Según la última prueba realizada todo andaba bien, hasta que ocurrió esto:
en el listado se me presento que tenia un solo item, y al seleccionar el radioboton y dar click en el input submit me daba el msje de alerta: "falta seleccionar un boton", pero que paso??? anda bien cuando en el listado encuentra mas o = que 2, pero con un item en lista NO debe dar este msje...
gracias por la respuesta que me puedan ofrecer
  #76 (permalink)  
Antiguo 17/11/2008, 10:54
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda con mensaje

Puedes comprobar si hay un solo elemento por el valor de .length:
Código javascript:
Ver original
  1. if (!radio.length) return true; /* Esto hace que al tener un único elemento salga de la función y devuelva verdadero */
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #77 (permalink)  
Antiguo 17/11/2008, 11:06
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Ayuda con mensaje

Fantastico David, otra vez gracias...
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 18:58.