Foros del Web » Programando para Internet » PHP »

Ayuda al plantear doble ciclo do while

Estas en el tema de Ayuda al plantear doble ciclo do while en el foro de PHP en Foros del Web. Buenas a todos, haber si me echan una manito o me dicen como puedo plantear el siguiente ciclo, quiero ver los resultados de una consulta ...
  #1 (permalink)  
Antiguo 07/02/2011, 08:59
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Ayuda al plantear doble ciclo do while

Buenas a todos, haber si me echan una manito o me dicen como puedo plantear el siguiente ciclo, quiero ver los resultados de una consulta de la siguiente forma:



Por ahora solo he podido mostrar bien los resultados hasta la parte de trayctoria laboral, es decir me muestra las distintas empresas en las que ha trabajado una persona, pero no he podido mostrar los distintos programas
Aca mis tablas:

egresado:

Código SQL:
Ver original
  1. CREATE TABLE `egresado` (
  2.   `NUM_CED_EGR` INT(11) NOT NULL,
  3.    `NOM_EGR` CHAR(25) DEFAULT NULL,
  4.   `APE_EGR` CHAR(25) DEFAULT NULL,
  5.   `FEC_NAC_EGR` DATE DEFAULT NULL,
  6.    PRIMARY KEY  (`NUM_CED_EGR`)
  7.  
  8. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

programa:

Código SQL:
Ver original
  1. CREATE TABLE `programa` (
  2.   `COD_PRO` INT(11) NOT NULL,
  3.    `NOM_PRO` CHAR(50) DEFAULT NULL,
  4.   PRIMARY KEY  (`COD_PRO`)
  5. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

programas_egresado:

Código SQL:
Ver original
  1. CREATE TABLE `programas_egresado` (
  2.   `NUM_CED_EGR` INT(11) NOT NULL,
  3.   `COD_PRO` INT(11) NOT NULL,
  4.     PRIMARY KEY  (`NUM_CED_EGR`,`COD_PRO`),
  5.   KEY `FK_PROGRAMAS_EGRESADO2` (`COD_PRO`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Y este mi codigo PHP:

Código PHP:
Ver original
  1. <?
  2. $cedula=$_POST['cedula'];
  3. $bd = mysql_connect ("localhost", "root", "root");
  4. if ( !$bd )
  5. die ("Error en la conexion con el DBMS");
  6. $base_datos = "egresados";
  7. if ( !mysql_select_db ($base_datos, $bd) )
  8. die ("Error seleccionando la base de datos");
  9. $qry = //ACA HAGO LA CONSULTA
  10. $resultado = mysql_query ($qry, $bd);  
  11. if ( !$resultado )
  12. die ("Error ejecutando la consulta");
  13. $num_filas = mysql_num_rows($resultado);
  14. if ($num_filas == 0){
  15. echo 'Falta informacion para poder generar';
  16. }
  17. if ($num_filas > 0){       
  18. $fila = mysql_fetch_array($resultado);
  19. ?>
  20.  
  21. //Y ahora muestro los resultados como en la imagen (omito codigo HTML):
  22.  
  23. Cedula:
  24. <input type="text" name="cedula" id="cedula"  readonly="readonly" value="<?php echo $fila["NUM_CED_EGR"]?>"/>
  25.  
  26. Nombres y apellidos:
  27.  
  28.  <input type="text" name="nombres_completos" id="nombres_completos" readonly="readonly" value="<?php echo $fila["NOM_EGR"]." ".$fila["APE_EGR"]?>"/>  
  29.  
  30. //AHORA EN LA INFORMACION LABORAL HAGO UN CICLO DO WHILE
  31.  
  32.  <tr>
  33. <th colspan="2"><center>TRAYECTORIA LABORAL</center></th>
  34.                                  
  35.    </tr>
  36.                                  
  37.        <?php
  38.     $c = 1;
  39.    do {
  40. ?>
  41.            <tr>
  42.                                        
  43.                                  
  44.      <td><div align="center"><strong>Empresa - Cargo No - <?php echo  $c ?></strong></div></td>
  45.      <td>  <div align="center">
  46.                                
  47.                                
  48.                              
  49.  <input type="text" name="nombre_empresa" id="nombre_empresa" readonly="readonly"  value="<?php echo $fila["RAZ_SOC_EMP"]?>"/>      <input type="text" name="cargo" id="cargo" readonly="readonly"  value="<?php echo $fila["NOM_CAR"]?>"/>
  50.                                    
  51.  
  52.   </div></td>
  53.                                
  54.                                      
  55.                  
  56.      <?php
  57.     $c++;
  58.    }while($fila = mysql_fetch_array($resultado));
  59. }
  60. ?>

Hasta aca todo bien, pero ahora al intentar mostrar los programas del egresado y utilizando tambien un ciclo do while es donde no me salen resultados, cierro el if a lo ultimo y tampoco, donde esta mi error?

aca el codigo donde tengo los dos ciclos:
Código PHP:
Ver original
  1. <tr>
  2.  <th colspan="2"><center>TRAYECTORIA LABORAL</center></th>
  3.                                  
  4.  </tr>
  5.                                  
  6. <?php
  7. $c = 1;
  8.    do {
  9. ?>
  10. <tr>
  11.                                        
  12.  <td><div align="center"><strong>Empresa - Cargo No - <?php echo  $c ?></strong></div></td>
  13. <td>  <div align="center">
  14.  
  15. <input type="text" name="nombre_empresa" id="nombre_empresa" readonly="readonly"  value="<?php echo $fila["RAZ_SOC_EMP"]?>"/>      <input type="text" name="cargo" id="cargo" readonly="readonly"  value="<?php echo $fila["NOM_CAR"]?>"/>
  16.                                    
  17.  </div></td>
  18.  
  19.                                
  20.  <?php
  21.  $c++;
  22.    }while($fila = mysql_fetch_array($resultado));
  23.  
  24. ?>                
  25. <tr>    
  26.  
  27.   <th colspan="2"><center>INFORMACION ACADEMICA</center></th>
  28.                                  
  29.   </tr>
  30.  
  31. //ACA DE NUEVO EL CICLO PARA LISTAR LOS PROGRAMAS
  32.                                  
  33.    <?php
  34. $c = 1;
  35.    do {
  36. ?>
  37.   <tr>
  38.    <td><div align="center"><strong>Programa N - <?php echo  $c ?></strong></div></td>
  39.    <td>  <div align="center">
  40.  <input type="text" name="cargo" id="cargo" readonly="readonly"  value="<?php echo $fila["NOM_PRO"]?>"/>
  41.   </div></td>
  42. <?php
  43. $c++;
  44.    }while($fila = mysql_fetch_array($resultado));
  45. }
  46. ?>

Ejecutando el codigo de esta forma, me repite dos veces los resultados de la inforamcion laboral, y no me muestra los resultados de la informacion academica

Porque?...Como podria plantear entonces un ciclo par ver los resultados correctamente?

Agradezco la colaboracion...
  #2 (permalink)  
Antiguo 09/02/2011, 13:19
Avatar de atoBeto  
Fecha de Ingreso: abril-2008
Ubicación: B.C.S., México
Mensajes: 35
Antigüedad: 16 años
Puntos: 2
Respuesta: Ayuda al plantear doble ciclo do while

Lo que pasa es que la extracción de los datos del resultado de una consulta se hace en una sola pasada, es decir, mysql_fetch_array extrae un registro consultado, y mueve el apuntador al siguiente registro automáticamente, no tiene vuelta atrás. Te sugiero que extraigas los datos de los programas en el primer ciclo y los almacenes dentro de un arreglo, para desplegar este arreglo después en un nuevo ciclo.

Etiquetas: doble, ciclos
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 13:36.