Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/04/2004, 13:55
Avatar de drcyber
drcyber
 
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 9 meses
Puntos: 2
De acuerdo Juntando Whiles

Hola a todos!

FAVOR LEER BIEN TODO EL MENSAJE ANTES DE RESPONDER

Estoy haciendo una encuesta que tiene 52 preguntas. A dichas preguntas se les puede responder SI o NO. Luego que el usuario las responde un script PHP procesa la encuesta y genera resultados. Pero... (nunca puede faltar un pero), no es tan fácil como parece. La encuesta está organizada por grupos de preguntas; por ejemplo de la 1 a la 5 es el grupo OBSERVACION; de la 6 a la 11 es el grupo COMPARACION ... y asi varios grupos.

Los resultados se muestran en base a los SI respondidos. Pero, los SI son inclusivos jerárquicamente, esto quiere decir que en el grupo OBSERVACION no puedo responder SI a la pregunta 1 y 4 y colocar NO en la 2 y 3. Por lo tanto, si eso llegara a ocurrir, el sistema toma únicamente el primer SI. Veamos el código:

Código PHP:
$i=1;
while((
$i<=5) && ($_POST[$i] == "si")){
  
$observacion++;
  
$i++;
}
$i=6;
while((
$i<=10) && ($_POST[$i] == "si")){
  
$comparacion++;
  
$i++;
}
$i=11;
while((
$i<=16) && ($_POST[$i] == "si")){
  
$relacion++;
  
$i++;
}
$i=17;
while((
$i<=23) && ($_POST[$i] == "si")){
  
$clasificacion++;
  
$i++;
}
$i=24;
while((
$i<=28) && ($_POST[$i] == "si")){
  
$ordenamiento++;
  
$i++;
}
$i=29;
while((
$i<=33) && ($_POST[$i] == "si")){
  
$jerarquica++;
  
$i++;
}
$i=34;
while((
$i<=37) && ($_POST[$i] == "si")){
  
$analisis++;
  
$i++;
}
$i=38;
while((
$i<=41) && ($_POST[$i] == "si")){
  
$sintesis++;
  
$i++;
}
$i=42;
while((
$i<=47) && ($_POST[$i] == "si")){
  
$evaluacion++;
  
$i++;
}
$i=48;
while((
$i<=48) && ($_POST[$i] == "si")){
  
$tconciencia++;
  
$i++;
}
$i=49;
while((
$i<=52) && ($_POST[$i] == "si")){
  
$evaluacionmet++;
  
$i++;

¿Un poco largo no?. Ese código hace exactamente lo que deseo. Comienza a contar los "SI" de cada intervalo con un WHILE y cuando se encuentra con un "NO" detiene la ejecución y salta al otro intervalo para hacer el mismo procedimiento.

Luego realizaré la otra parte del script que dependiendo de la cantidad de "SI's" consecutivos que hayan por intérvalo entonces se dará una respuesta determinada.

Mi pregunta es: ¿Hay alguna forma de hacer ese código más simple y compacto?. Señores, me he dado duro en la cabeza pero no puedo compactarlo más. Si alguno tiene alguna idea, pues será bien recibida.

Muchas gracias y saludos!
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)