Foros del Web » Programando para Internet » Javascript »

Validacion complicada de Radio y text a la vez(Javascript, php & Mssql)

Estas en el tema de Validacion complicada de Radio y text a la vez(Javascript, php & Mssql) en el foro de Javascript en Foros del Web. Aqui os dejo una duda un tanto dificil. Intentare explicarme lo mejor que pueda. Tengo un generador de encuestas. En una tabla se guardan las ...
  #1 (permalink)  
Antiguo 12/04/2005, 06:13
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años, 1 mes
Puntos: 0
Validacion complicada de Radio y text a la vez(Javascript, php & Mssql)

Aqui os dejo una duda un tanto dificil. Intentare explicarme lo mejor que pueda.

Tengo un generador de encuestas. En una tabla se guardan las preguntas y de que tipo son(si se han de responder con radio buttons o text)

el numero de respuestas puede variar (pueden ser lo mismo 2 radio buttons que 10) y al moistrarlos, un usuario respondera la encuesta y aqui viene el problema:

esto ya me funciona , pero como podria hacer para validar todos los campos (radio buttons y texts)? el NAME de cada textarea o cada grupo de radiobuttons es el numero de identidad de la pregunta (un numero del 1 al 900 que obtenemos de la tabla) no se si esto puede ayudar, el caso es que nunca sabre el numero exacto que sera en cada caso...

Alguien tiene alguna idea?

Os pego el codigo por si os ayuda:

Código PHP:

<FORM METHOD="post" ACTION="renquesta2.php"
.
.
//aqui va mas codigo que no interesa demasiado
.

$tipopreg=$row["TipusPreg"];
echo 
'<br>tipus pregunta: ',$tipopreg;
$numresp=$row["NumResp"];

if (
$tipopreg==//opcion tipo pregunta 2: si o no
    
{
    
printf ('<br><TR><TD><input type="Radio" NAME="%s" value="Si"> Si <input type="Radio" NAME="%s" value="No"> No </TR><br><br>'$idpregunta$idpregunta) ; 
    }

elseif (
$tipopreg==//opcion tipo pregunta 1: 1-10
    
{
    
printf ('<br><TR><TD><input type="Radio" NAME="%s" value="1"> 1 <input type="Radio" NAME="%s" value="2"> 2 </TR><TR><TD><input type="Radio" NAME="%s" value="3"> 3 <input type="Radio" NAME="%s" value="4"> 4 </TR><TR><TD><input type="Radio" NAME="%s" value="5"> 5 <input type="Radio" NAME="%s" value="6"> 6 </TR><TR><TD><input type="Radio" NAME="%s" value="7"> 7 <input type="Radio" NAME="%s" value="8"> 8 </TR><TR><TD><input type="Radio" NAME="%s" value="9"> 9 <input type="Radio" NAME="%s" value="10"> 10 </TR><br><br>',$idpregunta$idpregunta,$idpregunta$idpregunta,$idpregunta$idpregunta,$idpregunta$idpregunta,$idpregunta$idpregunta) ; 
    }

elseif (
$tipopreg==//opcion tipo pregunta 4: abierta
    
{
    
printf ('<br><TR><TD> <TEXTAREA NAME=%s id="mensaje" ROWS=10 COLS=45 onKeyPress="continua();"></TEXTAREA></TD></TR> <br><br>'$idpregunta$idpregunta) ; 
    }


elseif (
$tipopreg==//opcion tipo pregunta 3: opciones
    
{
        echo 
'<br>Numero de respuestas: '$numresp ,'<br><br>';
        
$respuestas=1;
        while (
$respuestas <= $numresp) {
            
printf ('<TR><TD><input id="nombre" type="Radio" NAME="%s" value="%s"> %s'$idpregunta$respuestas$respuestas);    
            
$respuestas++;    
        }
    echo 
'<br><br>';
    } 
 
}
//cierro while dadespregunta

}//cierro while dadespren

?>

<INPUT TYPE="submit" NAME="accion" VALUE="Enviar"> 
</FORM> 


Si alguien consigue averiguarcomo validar todos los radio buttons y text areas, se lo agradeceria mucho!
__________________
Share our Knowledge!
Adura Vita!

Última edición por Pazosele; 12/04/2005 a las 08:54
  #2 (permalink)  
Antiguo 12/04/2005, 08:43
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años, 1 mes
Puntos: 0
Pregunta solucion a medias

Hola!
He probado esta solucion que he visto en la faq: (copio tal cual)

124.- Controlar que se rellenan todos los campos

--------------------------------------------------------------------------------

P.- ¿Cómo indicar a un visitante de un formulario que se ha dejado campos sin rellenar?
R.- Estando delante cuando lo rellene o de esta manera:
Se pueden poner todos los campos que se quiera.


Código PHP:
<html
<
head

    <
script
    
//Script original de KarlanKas para Forosdelweb.com 


    
function comprobar(){var mal=false
    
numero=document.forms[0].elements.length
    for(
a=0;a<numero;a++){ 
    if (
document.forms[0].elements[a].value==""){document.forms[0].elements[a].style.backgroundColor="#ffffcc";mal=true;} 
    else{
document.forms[0].elements[a].style.backgroundColor="white";} 
    } 
    if(
mal){alert("Por favor, rellene las cajas coloreadas");} 
    else{
document.forms[0].submit()} 
    } 
     
    
</script> 
</head> 

<body> 
<form action="javascript:alert('enviando')" 
      method="post" 
      name="formulario" 
      id="formulario" 
      style="font:normal 10px/10px verdana;border:solid 1px black;text-align:right;width:300px;" 
      > 
      Nombre: <input type="text" 
             name="cosa" 
             id="cosa"><br> 
      Apellidos: <input type="text" 
             name="cosa" 
             id="cosa"><br> 
      Dirección: <input type="text" 
             name="cosa" 
             id="cosa"><br> 
      Nombre del perro: <input type="text" 
             name="cosa" 
             id="cosa"><br> 
      Pais: <input type="text" 
             name="cosa" 
             id="cosa"><br> 
      Conocidos con perro: <input type="text" 
             name="cosa" 
             id="cosa"><br> 
             <input onclick="comprobar()" 
                     type="button" 
                    name="enviar" 
                    value="Enviar!"> 

el caso es que me detecta tanto los texty box como los radio button vacios, pero el problema es que, me da el mensaje de error, de que faltan campos por rellenar; pero despues, al aceptar, lo envia igualmente..

Como puedo hacer para que vuelva al formulario, en lugar de irse a la pagina siguiente al submit???
__________________
Share our Knowledge!
Adura Vita!

Última edición por Pazosele; 12/04/2005 a las 08:56
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 19:40.