Foros del Web » Programando para Internet » PHP »

resultado de una consulta en campos de texto...

Estas en el tema de resultado de una consulta en campos de texto... en el foro de PHP en Foros del Web. Hola foreros, estoy tratando de mostrar los resultados de una consulta a mi base de datos pero tengo un inconveniente y es como mostrar esos ...
  #1 (permalink)  
Antiguo 04/02/2011, 12:38
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
resultado de una consulta en campos de texto...

Hola foreros, estoy tratando de mostrar los resultados de una consulta a mi base de datos pero tengo un inconveniente y es como mostrar esos resultados de una misma persona varias veces
Me explico mejor:

tengo la siguiente tabla:

Código SQL:
Ver original
  1. CREATE TABLE `empresas_trabajo_egresado` (
  2.   `NUM_CED_EGR` INT(11) NOT NULL,
  3.   `NIT_EMP` INT(11) NOT NULL,
  4.   `COD_CAR` INT(11) NOT NULL,
  5.   `DES_CAR` VARCHAR(100) DEFAULT NULL,
  6.   `FEC_INI` DATE DEFAULT NULL,
  7.   `FEC_FIN` DATE DEFAULT NULL,
  8.   PRIMARY KEY  (`NUM_CED_EGR`,`NIT_EMP`,`COD_CAR`),
  9.   KEY `FK_EMPRESAS_TRABAJO_EGRESADO2` (`NIT_EMP`),
  10.   KEY `FK_REFERENCE_TRABAJO_EGRESADO3` (`COD_CAR`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Por POST recibo la llave primaria y hago la consulta sql

Código PHP:
Ver original
  1. <?
  2.  
  3. $cedula=$_POST['cedula'];
  4.  
  5.  
  6. $bd = mysql_connect ("localhost", "root", "root");
  7.     if ( !$bd )
  8.         die ("Error en la conexion con el DBMS");
  9.    
  10.     $base_datos = "egresados";
  11.     if ( !mysql_select_db ($base_datos, $bd) )
  12.         die ("Error seleccionando la base de datos");
  13.    
  14.     $qry = "select e.NUM_CED_EGR, e.NOM_EGR, e.APE_EGR, e.FEC_NAC_EGR, e.NUM_LIB_MIL, e.DIR_EGR, e.TEL_FIJ_EGR, e.TEL_MOV_EGR, e.EMA_EGR, em.RAZ_SOC_EMP, c.NOM_CAR from egresado e, empresa em, cargos_laborales c, empresas_trabajo_egresado ete  where  ete.NIT_EMP=em.NIT_EMP and e.NUM_CED_EGR=ete.NUM_CED_EGR    and c.COD_CAR=ete.COD_CAR and  e.NUM_CED_EGR='$cedula'";
  15.     $resultado = mysql_query ($qry, $bd);
  16.    
  17.     if ( !$resultado )
  18.         die ("Error ejecutando la consulta");
  19.    
  20.     $num_filas = mysql_num_rows($resultado);
  21.    
  22.     if ($num_filas > 0){       
  23.         $fila = mysql_fetch_array($resultado);
  24.         }
  25.         ?>
  26.  
  27. Los resultados los muestro en cajas de textol:
  28.  
  29. Cedula:  
  30.  <input type="text" name="cedula" id="cedula"  readonly="readonly" value="<?php echo $fila["NUM_CED_EGR"]?>"/>
  31.  
  32. Nombres:
  33.  
  34.    <input type="text" name="nombres" id="nombres" readonly="readonly" value="<?php echo $fila["NOM_EGR"]?>"/>
  35.  
  36. Apellidos
  37.    <input type="text" name="nombres" id="nombres" readonly="readonly" value="<?php echo $fila["APE_EGR"]?>"/>
  38.  
  39. Empresa:
  40. <input type="text" name="empresa" id="empresa" readonly="readonly"  value="<?php echo $fila["RAZ_SOC_EMP"]?>"/>

Hasta aca bien, pero ahora viene mi pregunta, como hago para mostrar dos empresas distintas en las cuales a trabajado la misma persona?

Con la consulta anterior, solo me muestra la ultima empresa registrada con la persona.
Por ejemplo la persona con cedula:14, a trabajado en dos empresas: empresa 1 y empresa 2.

Como hago para mostrar las dos empresas en dos cajas de texto diferentes??

Agradezco la colaboracion
  #2 (permalink)  
Antiguo 04/02/2011, 12:54
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: resultado de una consulta en campos de texto...

prueba con un While
Código PHP:
<?php

  
if ($num_filas 0){       

       while(
$fila mysql_fetch_array($resultado)){

        

        
?>
Los resultados los muestro en cajas de textol:

Cedula:  
 <input type="text" name="cedula" id="cedula"  readonly="readonly" value="<?php echo $fila["NUM_CED_EGR"]?>"/>
Nombres:
   <input type="text" name="nombres" id="nombres" readonly="readonly" value="<?php echo $fila["NOM_EGR"]?>"/>
Apellidoo
   <input type="text" name="nombres" id="nombres" readonly="readonly" value="<?php echo $fila["APE_EGR"]?>"/>
Empresa:
<input type="text" name="empresa" id="empresa" readonly="readonly"  value="<?php echo $fila["RAZ_SOC_EMP"]?>"/>
}//fin while
}//fin if
?>
  #3 (permalink)  
Antiguo 04/02/2011, 13:06
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: resultado de una consulta en campos de texto...

Supongo que la tabla que contiene los datos de todas las empresas de tu base de datos es empresa (osea que es un catálogo de empresas), y está relacionada con empresas_trabajo_egresado por la llave foránea NIT_EMP. Así que esta consulta que haces ya te está arrojando todas las empresas en las que ha laborado la persona con esa cédula, solo que es un resultado que viene en varias filas, así que tu $resultado(del que ahora solo extraes una fila) solo lo deberías meter a un ciclo while para extraer el resto de las filas.

Edit: es por eso que el código que pone arriba Death_Empire debería funcionar, solo tiene el defecto de que repetiría en pantalla los datos de la cédula, nombre y apellido, al ser los mismos datos del empleado.
  #4 (permalink)  
Antiguo 04/02/2011, 13:15
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: resultado de una consulta en campos de texto...

Pero ahi me surge un problema y es que al cerrar php ?> en esa ultima parte, el no lo asume, pues acojeria el ?> del primer input type text

De la siguiente forma y utilizando el ciclo for lo pude hacer, pero como muestro los resultados o mejor como el resultado en una caja de texto en php?


Código PHP:
Ver original
  1. <?
  2.  
  3. $cedula=$_POST['cedula'];
  4.  
  5. @ $db = new mysqli('localhost', 'root', 'root', 'egresados');
  6.  
  7.  {
  8.      echo ' Error: No se pudo conectar a la base de datos, consulte a su administrador.  Por favor intente de nuevo!!.';
  9.      exit;
  10.  }
  11.    
  12.     $query = "select e.NUM_CED_EGR, e.NOM_EGR, e.APE_EGR, e.FEC_NAC_EGR, e.NUM_LIB_MIL, e.DIR_EGR, e.TEL_FIJ_EGR, e.TEL_MOV_EGR, e.EMA_EGR, em.RAZ_SOC_EMP, c.NOM_CAR from egresado e, empresa em, cargos_laborales c, empresas_trabajo_egresado ete  where  ete.NIT_EMP=em.NIT_EMP and e.NUM_CED_EGR=ete.NUM_CED_EGR    and c.COD_CAR=ete.COD_CAR and  e.NUM_CED_EGR='$cedula'";
  13.     $result = $db->query($query);
  14. $num_results = $result->num_rows;
  15.  
  16. if($num_results==0){
  17.    
  18.     echo '<h2>No se encontraron resultados de busqueda</h2>';
  19.    
  20.    
  21.     exit;
  22.     }
  23.  
  24.  
  25. echo '<p><br>';
  26.  
  27. for ($i=0; $i <$num_results; $i++)
  28.   {
  29.      $row = $result->fetch_assoc();
  30.      
  31.      echo ' <center> <table width=100% border=2>';
  32.      echo '<tr>
  33.           <td align = "center">';
  34.      echo  '<b>Cedula';
  35.      echo '    
  36.           </td>';
  37.      echo '<td align = "center">';
  38.      echo $row['NUM_CED_EGR'];
  39.      echo '    
  40.           </td>';
  41.      echo ' </tr>';
  42.      echo '<tr>
  43.           <td align = "center">';
  44.      echo '<b>Egresado';
  45.      echo '    
  46.           </td>';
  47.      echo '<td align = "center">';
  48.      echo $row['NOM_EGR'];
  49.      echo '    
  50.           </td>';
  51.      echo ' </tr>';
  52.      echo '<tr>
  53.           <td align = "center">';
  54.      echo '<b>Empresa';
  55.      echo '    
  56.           </td>';
  57.      echo '<td align = "center">';
  58.      echo $row['RAZ_SOC_EMP'];
  59.      
  60.       echo '       
  61.            </center></td>';
  62.      echo ' </tr>';
  63.  
  64.      
  65.   }
  66.  
  67. echo '</table>';
  68.  
  69.    
  70. $db->close();
  71.  
  72. ?>


en vez de echo $row['NUM_CED_EGR'];

Como muestro lo anterior en una caja de texto?

Gracias por la ayuda
  #5 (permalink)  
Antiguo 04/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: resultado de una consulta en campos de texto...

Yo cambiaría un poco la solución de Death por un do{ ... }while:

Código PHP:
<?php
if ($num_filas 0) {
    
$fila mysql_fetch_array($resultado);
 
?>

Cedula:  
 <input type="text" name="cedula" id="cedula"  readonly="readonly" value="<?php echo $fila["NUM_CED_EGR"]?>"/>
Nombres:
   <input type="text" name="nombres" id="nombres" readonly="readonly" value="<?php echo $fila["NOM_EGR"]?>"/>
Apellidoo
   <input type="text" name="nombres" id="nombres" readonly="readonly" value="<?php echo $fila["APE_EGR"]?>"/>
<?php
   
do { 
?>
Empresa:
<input type="text" name="empresa" id="empresa" readonly="readonly"  value="<?php echo $fila["RAZ_SOC_EMP"]?>"/>
<?php 
   
}while($fila mysql_fetch_array($resultado)); 
}
?>
  #6 (permalink)  
Antiguo 04/02/2011, 13:58
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: resultado de una consulta en campos de texto...

Exactamente, veo que con ambos ciclos funciona, muchas gracias por la ayuda...
  #7 (permalink)  
Antiguo 04/02/2011, 14:01
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: resultado de una consulta en campos de texto...

una ultima pregunta, saben ustedes si la funcion GROUP_CONCAT de Mysql funciona con php?

esa seria una alternativa para realizar el query...
  #8 (permalink)  
Antiguo 04/02/2011, 14:10
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: resultado de una consulta en campos de texto...

foreros como puedo tener un contador o algo que me controle los resultados de la consulta
es decir, que me salga:
empresa 1, empresa 2, empresa 3 , .....??

gracias
  #9 (permalink)  
Antiguo 04/02/2011, 14:15
Avatar de bullarobert  
Fecha de Ingreso: enero-2011
Mensajes: 31
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: resultado de una consulta en campos de texto...

no entendi muy bien tu pregunta podrias explicar un poco mejor porfa! quieres saber cuanto es la cantidad de datos q te entrega una consulta???
  #10 (permalink)  
Antiguo 04/02/2011, 14: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: resultado de una consulta en campos de texto...

GROUP_CONCAT es una instrucción del lenguaje SQL, y MySQL la soporta así que debes poder usarla, solo inclúyela en tus consultas, se usa en conjunto con GROUP BY, checa el dato de como armar querys con ella:

http://dev.mysql.com/doc/refman/4.1/en/group-by-functions.html#function_group-concat

Te ponen un ejemplo:

Código SQL:
Ver original
  1. SELECT student_name,
  2.             GROUP_CONCAT(DISTINCT test_score ORDER BY test_score DESC SEPARATOR ' ')
  3.              FROM student
  4.              GROUP BY student_name;

Donde están obteniendo como resultado los nombres de todos los estudiantes en una sola línea, separados con un espacio en blanco y ordenados por su calificación (test_score).
  #11 (permalink)  
Antiguo 04/02/2011, 14:21
Avatar de bullarobert  
Fecha de Ingreso: enero-2011
Mensajes: 31
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: resultado de una consulta en campos de texto...

si quieres saber cuantos son los registros que devuelve una consulta puedes usar un count, asi seria:

Código PHP:
Ver original
  1. $sql = "SELECT COUNT(*) As total FROM tabla where la condicion que quieras";
  #12 (permalink)  
Antiguo 04/02/2011, 14:23
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: resultado de una consulta en campos de texto...

Cita:
Iniciado por oscarbt Ver Mensaje
foreros como puedo tener un contador o algo que me controle los resultados de la consulta
es decir, que me salga:
empresa 1, empresa 2, empresa 3 , .....??

gracias
Bueno, eso sería solo incluir un contador en el código que pegué.

Código PHP:
<?php
if ($num_filas 0) {
    
$fila mysql_fetch_array($resultado);
 
?>

Cedula:  
 <input type="text" name="cedula" id="cedula"  readonly="readonly" value="<?php echo $fila["NUM_CED_EGR"]?>"/>
Nombres:
   <input type="text" name="nombres" id="nombres" readonly="readonly" value="<?php echo $fila["NOM_EGR"]?>"/>
Apellidoo
   <input type="text" name="nombres" id="nombres" readonly="readonly" value="<?php echo $fila["APE_EGR"]?>"/>
<?php
   $c 
1;
   do { 
?>
Empresa <?php echo $c ?>:
<input type="text" name="empresa" id="empresa" readonly="readonly"  value="<?php echo $fila["RAZ_SOC_EMP"]?>"/>
<?php 
     $c
++;
   }while(
$fila mysql_fetch_array($resultado)); 
}
?>
  #13 (permalink)  
Antiguo 04/02/2011, 14:28
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: resultado de una consulta en campos de texto...

Cita:
Iniciado por atoBeto Ver Mensaje
GROUP_CONCAT es una instrucción del lenguaje SQL, y MySQL la soporta así que debes poder usarla, solo inclúyela en tus consultas, se usa en conjunto con GROUP BY, checa el dato de como armar querys con ella:

http://dev.mysql.com/doc/refman/4.1/en/group-by-functions.html#function_group-concat

Te ponen un ejemplo:

Código SQL:
Ver original
  1. SELECT student_name,
  2.             GROUP_CONCAT(DISTINCT test_score ORDER BY test_score DESC SEPARATOR ' ')
  3.              FROM student
  4.              GROUP BY student_name;

Donde están obteniendo como resultado los nombres de todos los estudiantes en una sola línea, separados con un espacio en blanco y ordenados por su calificación (test_score).
Me corrijo, la consulta obtendría el nombre del estudiante, acompañado de todas sus calificaciones concatenadas con el separador espacio en blanco y ordenadas de mayor a menor.
  #14 (permalink)  
Antiguo 04/02/2011, 16:29
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: resultado de una consulta en campos de texto...

si, gracias por sus aportes....

Etiquetas: campos, resultados
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 09:18.