Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/08/2010, 10:00
Avatar de venom_mau
venom_mau
 
Fecha de Ingreso: julio-2009
Mensajes: 152
Antigüedad: 14 años, 9 meses
Puntos: 2
Exclamación Repetir varias veces un select

Buen día :)

Tengo una cuestión, es posible meter dentro de un ciclo un select de mysql, para obtener varios resultados?

Estoy realizando un reporte, más o menos así:


Como verán, necesito obtener el número de personas que eligieron determinada respuesta para x pregunta.

Más o menos había intentado esto:

Código PHP:
for ($i=1i<=num_preguntasi++)
{
   for (
$j=1j<=num_respuestasj++)
      { 
         
$pregunta=@mysql_query("select count(distinct idcuenta ) from evaluaciones where respuesta ='$j' and idrfc='$RP' and idasig='$RM' and no_preg='$i'");
   }

Ya que tanto el número de preguntas como de respuestas, será modificable, entonces debo obtener antes sl número de cada uno, para poder limitar los ciclos, aunque cuando quiero obtener el resultado almacenándolo en un array, no me regresa nada.

Para sacar el resultado de la imágen hice algo así:
Código PHP:
    //query para contar alumnos: 
    
    
$noal=@mysql_query("select count(distinct idcuenta) from evaluaciones where idrfc='$RP' and idasig='$RM' and idcarrera='$RC' and idgrupo='$RG'");
    
$num_alumnos=@mysql_fetch_array($noal);

    
//var para sacar porcentajes de respuestas:
    //Si el query es cero, divido entre 1, si no, divido entre el no. de alumnos
    
if($num_alumnos[0]==0)
        {
           
$al=1;
        }else{
            
$al=$num_alumnos[0];
        }

//query para sacar resultados pregunta no. 1

    
$preg_uno=@mysql_query("select count(distinct idcuenta ) from evaluaciones where respuesta ='1' and idrfc='$RP' and idasig='$RM' and no_preg='1'");
    
$resp_uno= @mysql_fetch_array($preg_uno);
    
$preg_unod=@mysql_query("select count(distinct idcuenta ) from evaluaciones where respuesta ='2' and idrfc='$RP' and idasig='$RM' and no_preg='1'");
    
$resp_unod= @mysql_fetch_array($preg_unod);
    
$preg_unot=@mysql_query("select count(distinct idcuenta ) from evaluaciones where respuesta ='3' and idrfc='$RP' and idasig='$RM' and no_preg='1'");
    
$resp_unot= @mysql_fetch_array($preg_unot);
    
$preg_unocu=@mysql_query("select count(distinct idcuenta ) from evaluaciones where respuesta ='4' and idrfc='$RP' and idasig='$RM' and no_preg='1'");
    
$resp_unocu= @mysql_fetch_array($preg_unocu);
    
$preg_unoci=@mysql_query("select count(distinct idcuenta ) from evaluaciones where respuesta ='5' and idrfc='$RP' and idasig='$RM' and no_preg='1'");
    
$resp_unoci= @mysql_fetch_array($preg_unoci);
.
.
.
//sacar los resultados y porcentaje:
        
$r1=$resp_uno[0];
        
$r2=$resp_unod[0];
        
$r3=$resp_unot[0];
        
$r4=$resp_unocu[0];
        
$r5=$resp_unoci[0];
        
        
$p1=($r1*100)/$al;
        
$p2=($r2*100)/$al;
        
$p3=($r3*100)/$al;
        
$p4=($r4*100)/$al;
        
$p5=($r5*100)/$al;

//comienzo a imprimir línea:
        
$fila='   '.$r1.'       '.round($p1,1).'%            '.$r2.'       '.round($p2,1).'%              '.$r3.'       '.round($p3,1).'%                '.$r4.'       '.round($p4,1).'%                 '.$r5.'       '.round($p5,1).'%';
            
$pdf->Cell(0,6,$fila,0,1,'L',10);

        
$pdf->SetX($x_axis); 
Como veran estoy haciendo el reporte con fpdf.
Además creo que esta no es la forma más prolija de hacer estas consultas, imagínen repetir esto según el número de preguntas (que hasta ahora son 24)


He investigado acerca de esto y creo que lo más conveniente sería usar un procedimiento almacenado (creo), aunque como verán soy novato en esto :P

Espero me puedan ayudar, aunque sea facilitandome algún enlace o una guía para retomarla y de ahí empezar.

Muchas gracias por su tiempo y respuestas. :)

Última edición por venom_mau; 27/08/2010 a las 10:07