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:32
 
Fecha de Ingreso: noviembre-2007
Mensajes: 8
Antigüedad: 16 años, 5 meses
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.

Espero haber sido claro para poder recibir la ayuda correspondiente.

De ante mano

Gracias.

Atte.

Daniel Arenas
  #2 (permalink)  
Antiguo 29/12/2009, 12:15
Avatar de okhosting  
Fecha de Ingreso: diciembre-2009
Ubicación: México
Mensajes: 66
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Mostrar datos

Seria bueno que nos pusieras el diseño de tus tablas y columnas, y la sentencia SELECT que estas haciendo para entenderte mejor

saludos
  #3 (permalink)  
Antiguo 29/12/2009, 12:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Mostrar datos

Cita:
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.
Tu problema sería indicativo de que estás haciendo mal la consulta.
Postea la consulta completa y la estructura de las tablas (los CREATE TABLE), para ver cómo mejorar eso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 29/12/2009, 13:23
 
Fecha de Ingreso: noviembre-2007
Mensajes: 8
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Mostrar datos

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

Última edición por darenas19; 29/12/2009 a las 14:34 Razón: Datos confidenciales
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 02:08.