Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Mostrar datos

Estas en el tema de Mostrar datos en el foro de Bases de Datos General en Foros del Web. Buenas tardes a todos. Antes que nada felicitar a toda la comunidad por la excelente labor que se viene realizando. El motivo de este post ...
  #1 (permalink)  
Antiguo 29/12/2009, 11:31
 
Fecha de Ingreso: noviembre-2007
Mensajes: 8
Antigüedad: 17 años
Puntos: 0
Mensaje Mostrar datos

Buenas tardes a todos.
Antes que nada felicitar a toda la comunidad por la excelente labor que se viene realizando.

El motivo de este post es para solicitar ayuda con lo siguiente:

Yo tengo un formulario [URL="http://rrhh.makro.com.pe/insertar.html"]Formulario[/URL] en el cual recibo los datos de todos los postulantes (1 por cada uno) pero cada uno de estos puede ingresar/eliminar tantos datos de estudios y laborales como desee. (Me basé en el innerhtml)
Obviamente los datos son guardados en una BD en mi servidor mediante PHP.

Hasta ahí todo funciona perfecto.
El tema va por vizualizar los resultados.
Tengo scripts en PHP para generar archivos excel, pero por ejemplo si yo ingreso 3 estudios y 2 experiencias laborales, por más que hago inner join y todo me resultan 5 filas como resultado lo que no me conviene, ya que esto servirá para descartar a personas, entonces imaginense, postulan 300 personas al día, por mínimo 5 registros cado uno, son 1500 registros a revisar lo que no es muy idoneo.

Lo que quisiera es es que todo salga a continuación del otro, es decir.

Datos postulante, estudio 1, estudio 2, estudio x, laboral 1, laboral 2, laboral x.
y no asi
Datos postulante, estudio 1,
Datos postulante,estudio 2,
Datos postulante,estudio x,
Datos postulante,laboral 1,
Datos postulante,laboral 2,
Datos postulante,laboral x.

Otra solución sería mostrarlo en Web, pero igual me muestra 5 registros al final, en vez de en una sola línea

Espero haber sido claro para poder recibir la ayuda correspondiente.

De ante mano

Gracias.

Atte.

Daniel Arenas
  #2 (permalink)  
Antiguo 30/12/2009, 10:18
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Mostrar datos

hola
bueno, imagino que tienes todo en una sola consulta, pues has la fácil
"divide y vencerás"

primero haz la consulta de la persona con sus datos personales,
y luego haces la consulta de los estudios y cosas laborales

igual imagino que estan en tablas distintas pero en todos los casos
se diferencia por el id de la persona, así que no te será dificil, aún si
tienes todo en una tabla, pues igual, parte la consulta, es decir, haces dos
o las consultas que necesites a la bd, espero te sirva
saludos
  #3 (permalink)  
Antiguo 04/01/2010, 14:34
 
Fecha de Ingreso: noviembre-2007
Mensajes: 8
Antigüedad: 17 años
Puntos: 0
Respuesta: Mostrar datos

Si no te entiendo mal, al hacer eso que sucede si la persona con ID 3 tiene 5 estudios ingresados y 4 de experiencia laboral?
Al preguntar por esos registros serian varias filas y de igual manera que lo que me viene saliendo..
Lo que quisiera, se que complicado, es que toda la info salga en una sola linea.

Les dejo mis tablas, script php para ingresar los datos y el query para extraer los mismos.


Crear tablas, campos y relaciones.
Código:
CREATE TABLE Postulante (
  COD_Postulante INTEGER UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
  DSC_Nombre VARCHAR(255) NULL,
  NUM_DNI INTEGER UNSIGNED NULL,
  DSC_Nacimiento DATE NULL,
  DSC_Estado_Civil VARCHAR(255) NULL,
  NUM_Telefono VARCHAR(255) NULL,
  NUM_Celular VARCHAR(255) NULL,
  DSC_Direccion VARCHAR(255) NULL,
  DSC_Distrito VARCHAR(255) NULL,
  DSC_Email VARCHAR(255) NULL,
  DSC_LabAntMakro VARCHAR(255) NULL,
  DSC_Pretenciones VARCHAR(255) NULL,
  FCH_Postulacion DATE NULL,
  PRIMARY KEY(COD_Postulante)
);

CREATE TABLE Trabajo (
  COD_Trabajo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  Postulante_COD_Postulante INTEGER UNSIGNED ZEROFILL NOT NULL,
  DSC_Empresa VARCHAR(255) NULL,
  DSC_Rubro VARCHAR(255) NULL,
  DSC_Puesto VARCHAR(255) NULL,
  DSC_FchInicio VARCHAR(255) NULL,
  DSC_FchFin VARCHAR(255) NULL,
  DSC_Remun VARCHAR(255) NULL,
  PRIMARY KEY(COD_Trabajo, Postulante_COD_Postulante),
  INDEX Trabajo_FKIndex1(Postulante_COD_Postulante),
  FOREIGN KEY(Postulante_COD_Postulante)
    REFERENCES Postulante(COD_Postulante)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

CREATE TABLE Estudio (
  COD_Estudio INTEGER UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
  Postulante_COD_Postulante INTEGER UNSIGNED ZEROFILL NOT NULL,
  DSC_Estudio VARCHAR(255) NULL,
  DSC_IniEstudio VARCHAR(255) NULL,
  DSC_FinEstudio VARCHAR(255) NULL,
  PRIMARY KEY(COD_Estudio, Postulante_COD_Postulante),
  INDEX Estudio_FKIndex1(Postulante_COD_Postulante),
  FOREIGN KEY(Postulante_COD_Postulante)
    REFERENCES Postulante(COD_Postulante)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);
Script para insertar los datos a la BD
Código PHP:
<?php

mysql_connect
('xxxxxxxxxxx','xxxxxxxx','xxxxxxxxxxx') or die("Could not connect to mysql server: " mysql_error());
mysql_select_db('makro_rrhh');

//Variables Postulante
//--------------------
$strNome $_POST['strNome'];
$strDNI $_POST['strDNI'];

$strDiaNac $_POST['cboDiaNac'];
$strMesNac $_POST['cboMesNac'];
$strAnioNac $_POST['cboAnioNac'];
$strFechNac $strDiaNac."/".$strMesNac."/".$strAnioNac;

$strEstadoCivil $_POST['cboEstCivil'];
$strTelefonos $_POST['strTelefonos'];
$strCelular $_POST['strCelular'];
$strDireccion $_POST['strDireccion'];
$strDistrito $_POST['strDistrito'];
$strEmail $_POST['strEmail'];
$strTipoLaboradoMakro $_POST['strTipoLaboradoMakro'];
$strTipoMonedaPr $_POST['cboTipoMonedaPr'];
$strPretensiones $strTipoMonedaPr." ".$_POST['strPretensiones'];
$strFechaPost $_POST['strFechaPost'];

$sqlP="INSERT INTO Postulante (DSC_Nombre,NUM_DNI,DSC_Nacimiento,DSC_Estado_Civil,NUM_Telefono,NUM_Celular,DSC_Direccion,DSC_Distrito,DSC_Email,DSC_LabAntMakro,DSC_Pretenciones,FCH_Postulacion) VALUES ('$strNome','$strDNI','$strFechNac','$strEstadoCivil','$strTelefonos','$strCelular','$strDireccion','$strDistrito','$strEmail','$strTipoLaboradoMakro','$strPretensiones','$strFechaPost')";
mysql_query($sqlP) or die("Cannot execute query: " mysql_error());

// obtenemos el valor id
$idPostulante mysql_insert_id();


//Variables Estudio
//-----------------

foreach ($_POST as $Campo => $Valor)
{
    if (
strpos($Campo,"strEstudio") === 0)
    {
        
$Index substr($Campo,11);
        
$strTipoEstudio $_POST['cboTipoEstudio_'.$Index];
        
$strEstudio $_POST['strEstudio_'.$Index];
        
$strIniMesEst $_POST['cboIniMesEst_'.$Index];
        
$strIniAnioEst $_POST['cboIniAnioEst_'.$Index];
        
$strFinMesEst $_POST['cboFinMesEst_'.$Index];
        
$strFinAnioEst $_POST['cboFinAnioEst_'.$Index];
        
$strIniEstudio $strIniMesEst."/".$strIniAnioEst;
        
$strFinEstudio $strFinMesEst."/".$strFinAnioEst;

        
$sqlE="INSERT INTO Estudio (Postulante_COD_Postulante,DSC_T_Estudio,DSC_Estudio,DSC_IniEstudio,DSC_FinEstudio) VALUES ('$idPostulante','$strTipoEstudio','$strEstudio','$strIniEstudio','$strFinEstudio')";
        
mysql_query($sqlE);
    }
    elseif (
strpos($Campo,"strNomeEmpresa") === 0)
    {
        
$Index substr($Campo,15);
        
$strNomeEmpresa $_POST['strNomeEmpresa_'.$Index];
        
$strRubro $_POST['strRubro_'.$Index];
        
$strArea $_POST['strArea_'.$Index];
        
$strPuestoDesempenado $_POST['strPuestoDesempenado_'.$Index];
        
$strIniMesTrab $_POST['cboIniMesTrab_'.$Index];
        
$strFinMesTrab $_POST['cboFinMesTrab_'.$Index];
        
$strIniAnioTrab $_POST['cboIniAnioTrab_'.$Index];
        
$strFinAnioTrab $_POST['cboFinAnioTrab_'.$Index];
        
$strTipoMoneda $_POST['cboTipoMoneda_'.$Index];
        
$strRemuneracion $strTipoMoneda." ".$_POST['strRemuneracion_'.$Index];
        
$strIniTrabajo $strIniMesTrab."/".$strIniAnioTrab;
        
$strFinTrabajo $strFinMesTrab."/".$strFinAnioTrab;

        
$sqlT="INSERT INTO Trabajo (Postulante_COD_Postulante,DSC_Empresa,DSC_Rubro,DSC_Area,DSC_Puesto,DSC_FchInicio,DSC_FchFin,DSC_Remun) VALUES ('$idPostulante','$strNomeEmpresa','$strRubro','$strArea','$strPuestoDesempenado','$strIniTrabajo','$strFinTrabajo','$strRemuneracion')";
        
mysql_query($sqlT);
    }
}


echo 
"Los datos han sido introducidos satisfactoriamente.<br/>";
echo 
$strNome." Gracias por portular a Makro Supermayorista S.A.<br/>";
echo 
"Pronto nos pondremos en contácto con Ud.";

mysql_close();

?>

Y mi consulta para seleccionar seria..(seguro no se llega a apreciar bien, pero funciona correctamente, si hay espacios o algo es por tema visual)

Código:
SELECT COD_Postulante 'Código Postulante', DSC_Nombre 'Nombre',
NUM_DNI 'DNI', DSC_Nacimiento 'Fecha De Nacimiento', DSC_Estado_Civil 'Estado
Civil', NUM_Telefono 'Teléfono', NUM_Celular 'Celular', DSC_Direccion 'Dirección',
DSC_Distrito 'Distrito', DSC_Email 'Email', DSC_LabAntMakro 'Laborado Antes Makro',
DSC_Pretenciones 'Pretensiones', FCH_Postulacion 'Fecha Postulación',
DSC_T_Estudio 'Tipo De Estudio', DSC_Estudio 'Centro De Estudio',
DSC_IniEstudio 'Inicio De Estudio', DSC_Empresa 'Nombre Empresa',
DSC_Rubro 'Rubro De Empresa', DSC_Area 'Area', DSC_Puesto 'Puesto',
DSC_FchInicio 'Inicio De Trabajo', DSC_FchFin 'Fin De Trabajo',
DSC_Remun 'Remuneración' FROM Postulante AS P INNER JOIN Estudio AS E ON
P.`COD_Postulante` = E.`Postulante_COD_Postulante` INNER JOIN Trabajo T ON
P.`COD_Postulante` = T.`Postulante_COD_Postulante` ";

Si necesitan de algo más para poder ayudarme estaré al pendiente
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 15:36.