Foros del Web » Programando para Internet » PHP »

problema al imprimir array

Estas en el tema de problema al imprimir array en el foro de PHP en Foros del Web. Hola: tengo el siguientes codigo: Código PHP: function  traer_resultados (& $encuestas_preguntas_vec , $pagina_desde = 0 , $pagina_cant = 999 ){      $pagina_cant  =  intval ( ...
  #1 (permalink)  
Antiguo 09/08/2008, 23:10
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años
Puntos: 43
problema al imprimir array

Hola:
tengo el siguientes codigo:
Código PHP:
function traer_resultados(&$encuestas_preguntas_vec,$pagina_desde=0,$pagina_cant=999){
    
$pagina_cant intval($pagina_cant);
    
$pagina_desde intval($pagina_desde);

    
    
//consulta preguntas
    
$sql="SELECT ep.id, ep.texto
        FROM "
.BD_NAME.".encuestas_preguntas AS ep, 
        "
.BD_NAME.".encuestas_cuestionarios_respuestas AS epc, 
        "
.BD_NAME.".encuestas_cuestionarios AS ec
        WHERE ep.id = epc.pregunta_id
        AND ec.id = epc.cuestionario_id
        AND ep.tipo = '1'"
;
    if (
intval(trim($encuestas_preguntas_vec[0]['grupo_id']))!= 0) {$sql.=" and ecp.grupo_id = '" .fmt_num_sin_null($encuestas_preguntas_vec[0]['grupo_id'])."'"; }
    if (
trim($encuestas_preguntas_vec[0]['unidad'])!= 0) {$sql.=" and ec.unidad_negocio_id = '" .fmt_num_sin_null($encuestas_preguntas_vec[0]['unidad'])."'"; }
    if (
intval(trim($encuestas_preguntas_vec[0]['area']))!= 0) {$sql.=" and ec.area_funcional_id = '" .fmt_num_sin_null($encuestas_preguntas_vec[0]['area'])."'"; }
    if (
intval(trim($encuestas_preguntas_vec[0]['worklevel']))!= 0) {$sql.=" and ec.work_level_id = '" .fmt_num_sin_null($encuestas_preguntas_vec[0]['worklevel'])."'"; }
    if (
trim($encuestas_preguntas_vec[0]['pregunta'])!= 0) {$sql.=" and pregunta_id ='" .fmt_num_sin_null($encuestas_preguntas_vec[0]['pregunta'])."'"; }
    if (
intval(trim($encuestas_preguntas_vec[0]['desde']))!= 0) {$sql.=" and ec.fecha >= " .fmt_string_sin_null($encuestas_preguntas_vec[0]['desde']).""; }
    if (
intval(trim($encuestas_preguntas_vec[0]['hasta']))!= 0) {$sql.=" and ec.fecha <= " .fmt_string_sin_null($encuestas_preguntas_vec[0]['hasta']).""; }
    
$sql.='GROUP BY ep.id';
    
query_execute_mysql($rs,$sql,$rows_cant);

    
$encuestas_preguntas_vec=array();
    
    if (
$rows_cant != 0) {
        
$i=0;
        while (
$row=mysql_fetch_row($rs)) {
            
$encuestas_preguntas_vec[$i]['id_pregunta'] = trim($row [0]);
            
$encuestas_preguntas_vec[$i]['pregunta'] = trim($row [1]);
            
            
//traigo el total de respuesta de la pregunta
            
$sql="SELECT count( * )
                FROM "
.BD_NAME.".encuestas_cuestionarios_respuestas
                WHERE pregunta_id = '"
.$encuestas_preguntas_vec[$i]['id_pregunta']."'
                ORDER BY pregunta_id
          "
;

            if (
$pagina_cant != 0$sql.=" LIMIT ".$pagina_desde.",".$pagina_cant;
            
//Ejecuto la consulta
            
query_execute_mysql($rs,$sql,$rows_cant);

            
            if (
$rows_cant != 0) {
                while (
$row=mysql_fetch_row($rs)) {
                    
$encuestas_preguntas_vec[$i]['cant_res_p'] = trim($row [0]);
                    
                    
//cantidad de respuestas por preguntas                
                    
$sql="SELECT respuesta, count( * ) AS cant_res
                          FROM "
.BD_NAME.".encuestas_cuestionarios_respuestas AS ecp
                          WHERE ecp.pregunta_id='"
.$encuestas_preguntas_vec[$i]['id_pregunta']."'
                          "
;
                    
$sql.='GROUP BY respuesta';
    
                    if (
$pagina_cant != 0$sql.=" LIMIT ".$pagina_desde.",".$pagina_cant;
                    
//$encuestas_preguntas_vec[$i]['sql'] = $sql1;
                    //Ejecuto la consulta
                    
query_execute_mysql($rs,$sql,$rows_cant);
    
                    
//Recorro los campos
                    
if ($rows_cant != 0) {
                        while (
$row=mysql_fetch_row($rs)) {
                            
$encuestas_preguntas_vec[$i][$i]['respuesta'] = trim($row [0]);
                            
$encuestas_preguntas_vec[$i][$i]['cant_res'] = trim($row [1]);
                            
$i++;
        
                        } 
//del while de si trajo registros respuestas por preguntas
                    
}
                    
$i++;
                } 
//del while de si trajo registros total de respuesta de la pregunta
            
}
        
$i++;
    }
//del while de si trajo la pregunta
        //$encuestas_preguntas_vec[$i]['sql'] = $sql;
    
}//fin whiletotal de respuesta de la pregunta
   

el cual me devuelve un array asi:
Código PHP:
Array ( [0] => Array ( [id_pregunta] => [pregunta] => CAUNTOS DEDOS TIENE UN PIE ? [cant_res_p] => [0] => Array ( [respuesta] => [cant_res] => ) ) [1] => Array ( [1] => Array ( [respuesta] => [cant_res] => ) ) ) 
el problema que tengo es que quiero imprimirlo asi:
Código PHP:
// Traigo la Consulta 
           
traer_resultados($encuestas_preguntas_vec,$pagina_desde_aux,$pagina_cant);

            
// Cuento cuantos hay 
           
$cant=count($encuestas_preguntas_vec);
      if (
$cant 0) {

          
           for (
$i=0;$i<$cant;$i++) {
               
            echo 
" <tr class='tabla_deta'>
                    <td align='center' valign='top'>"
.$encuestas_preguntas_vec[$i]['pregunta']."</td>
                    <td align='center' valign='top'>
                        respuesta "
.$encuestas_preguntas_vec[$i]['respuesta'].
                        "
.number_format(($encuestas_preguntas_vec[$i]['cant_res']*100)/$encuestas_preguntas_vec[$i]['cant_res_p'])."%
                       </td>
                   </tr>
            "
;

           }
//del for 
       
}else{  
            
$error_str'No se han encontrado registros para la busqueda solicitada';
        } 
//de si tiene registros 
para que me salga:
pregunta xxx respuesta 1 xx% respuesta 2 xx% respuesta n xx%

pero no me lo muestra correctamente que estoy haciendo mal, desde ya muchas gracias
  #2 (permalink)  
Antiguo 10/08/2008, 01:11
Avatar de tatofoo  
Fecha de Ingreso: agosto-2008
Mensajes: 3
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: problema al imprimir array

Hola,

He notado dos cosas en el código que podría ser la falla, puede ser simplemente que yo no haya entendido el código pero aquí van, talvez te sirve de algo:
  1. Cuando usas la función:
    Código PHP:
    query_execute_mysql($rs,$sql,$rows_cant); 
    Estas guardando en $rs los resultados. Pero si te fijas, cada vez que usas esta función estas sobreescribiendo lo que antes tenías en $rs. Lo mejor sería usar una variable diferente para cada llamada a la función.
  2. No se si es lo que quieres, pero dentro de cada while estas incrementando la variable $i. Parece como que esta variable sirve principalmente al primer while, los otros while deberían de tener su propia variable inicializada a 0 previamente, así como $j, $k u otra variable.
  #3 (permalink)  
Antiguo 10/08/2008, 13:52
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años
Puntos: 43
Respuesta: problema al imprimir array

probe con lo que dijiste, pero igual, creo que el tema esta en esta parte del codigo:
Código PHP:
while ($row=mysql_fetch_row($rs1)) {
                    
$encuestas_preguntas_vec[$i]['cant_res_p'] = trim($row [0]);
                    
                    
//cantidad de respuestas por preguntas                
                    
$sql="SELECT respuesta, count( * ) AS cant_res
                          FROM "
.BD_NAME.".encuestas_cuestionarios_respuestas AS ecp
                          WHERE ecp.pregunta_id='"
.$encuestas_preguntas_vec[$i]['id_pregunta']."'
                          "
;
                    
$sql.='GROUP BY respuesta';
    
                    if (
$pagina_cant != 0$sql.=" LIMIT ".$pagina_desde.",".$pagina_cant;
                    
//$encuestas_preguntas_vec[$i]['sql'] = $sql1;
                    //Ejecuto la consulta
                    
query_execute_mysql($rs2,$sql,$rows_cant);
    
                    
//Recorro los campos
                    
                    
if ($rows_cant != 0) {
                        while (
$row=mysql_fetch_row($rs2)) {
                            
$encuestas_preguntas_vec[$i]['respuesta'] = trim($row [0]);
                            
$encuestas_preguntas_vec[$i]['cant_res'] = trim($row [1]);
                            
$i++;
                            
        
                        } 
//del while de si trajo registros respuestas por preguntas
                    
}
                    
$i++;
                } 
//del while de si trajo registros total de respuesta de la pregunta 
porque me graba el primer registro en el array gral pero si hay mas registros los guarda en otro elemento del array
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 21:29.