Foros del Web » Programando para Internet » PHP »

duda con reporte

Estas en el tema de duda con reporte en el foro de PHP en Foros del Web. hola gente, esta es mi duda: tengo un formulario donde extraigo datos y los muestro en un reporte, tiene como limite mostrar hasta 224 alumnos...que ...
  #1 (permalink)  
Antiguo 05/11/2007, 08:33
 
Fecha de Ingreso: mayo-2007
Mensajes: 413
Antigüedad: 17 años
Puntos: 0
Pregunta duda con reporte

hola gente, esta es mi duda:

tengo un formulario donde extraigo datos y los muestro en un reporte, tiene como limite mostrar hasta 224 alumnos...que son los que estan seleccionados y estan ordenados de acuerdo a sus puntajes, la duda se presenta cuando los quiero ordenar de acuerdo a su apellido paterno,no los muestra a todos, muestra a alumnos que no estan seleccionados para participar y no muestra a otros qe si estan seleccionados, y ay tengo la duda

les dejo el codigo:

Código PHP:
<?php
include "link.php";
$dblink=MYSQL_CONNECT($MySqlHostname$MySqlUsername$MySqlPassword);
@
mysql_select_db("$MySqlDatabase");

$sql "SELECT FTS_N_SELECC, FTS_N_ESPERA FROM FACTORES_TS";
$query = @mysql_query($sql$dblink);
while (
$row mysql_fetch_array($query))
{
$FTS_N_SELECC $row['FTS_N_SELECC'];
$FTS_N_ESPERA $row['FTS_N_ESPERA'];
}
$Limit_Post=(($FTS_N_SELECC));
?>

 <?
$sql1
="SELECT * FROM FACTORES_TS";
$query1=@mysql_query($sql1$dblink);
while (
$row mysql_fetch_array($query1))
{
$FTS_TRES $row['FTS_TRES'];
$FTS_TRMA $row['FTS_TRMA'];
$FTS_TRVE $row['FTS_TRVE'];
$FTS_TRME $row['FTS_TRME'];
$FTS_CONPATRO $row['FTS_CONPATRO'];
$FTS_SINPATRO $row['FTS_SINPATRO'];
$FTS_N_SELECC $row['FTS_N_SELECC'];
//$FTS_N_ESPERA = $row['FTS_N_ESPERA'];
$FTS_PONDERACION_TP $row['FTS_PONDERACION_TP'];
$FTS_PONDERACION_TS $row['FTS_PONDERACION_TS'];
//printf("<OPTION value=\"$FTS_TRES\", \"$FTS_TRMA\", \"$FTS_TRVE\", \"$FTS_TRME\", \"$FTS_CONPATRO\"> $FTS_TRES - $FTS_TRMA - $FTS_TRVE - $FTS_TRME - $FTS_CONPATRO </option>");
}
?>

<?

$sql2
="SELECT TS.TS_ID, TS.TS_IDENTPOST, TP.TP_PPS, TS.TS_PTS FROM TEST_PRESELECCION22 AS TP, TEST_SELECCION AS TS WHERE (TP.TP_IDENPOST=TS.TS_IDENTPOST)";
$query2=@mysql_query($sql2$dblink);
while (
$row mysql_fetch_array($query2))
{
$TS_IDENTPOST $row['TS_IDENTPOST'];
$almacena_ID $row['TS_IDENTPOST'];
$TS_ID $row['TS_ID'];
$TP_PPS $row['TP_PPS'];
$TS_PTS $row['TS_PTS'];


$par1=($TP_PPS $FTS_PONDERACION_TP);
$par2=($TS_PTS $FTS_PONDERACION_TS);
$suma_pares=bcadd($par1$par24);
//echo "TS_IDENTPOST: $almacena_ID";
//echo "**";
//echo "TS_ID: $TS_ID";
//echo "**";
//echo "suma_pares: $suma_pares <br>\n";

$sql22="INSERT INTO TEST_SELECCION VALUES ('$suma_pares') WHERE (TS.TS_IDENTPOST='$almacena_ID')";
$sql22="UPDATE TEST_SELECCION SET TS_ALM='$suma_pares' WHERE (TS_IDENTPOST='$almacena_ID')";
$query22=@mysql_query($sql22$dblink);

 }


?>


 <?
//****Aquí calculo la DesvEstandar con TS_ALM - todos los Postulantes
$sumatoria=0;
$cont=0;
$ConRaiz=0;

$sql20="SELECT TS_ALM FROM TEST_SELECCION";
$query20=@mysql_query($sql20$dblink);
while (
$row mysql_fetch_array($query20))
{
$TS_ALM $row['TS_ALM'];


$sumatoria=(($sumatoria) + ($TS_ALM));
$cont=($cont+1);
 }
if ((
$sumatoria!="") AND ($cont!="")) {
$Promedio=bcdiv($sumatoria$cont4);
}
?>


<?
$sql3
="SELECT TS_ALM FROM TEST_SELECCION";
  
$query3=@mysql_query($sql3$dblink);
  while (
$row mysql_fetch_array($query3))
  {
    
$TS_ALM $row['TS_ALM'];

    
$ALM_menos_PromFun=bcsub($TS_ALM$Promedio4);
    
//printf("ES_menos_PromFun = ");
    //printf($ES_menos_PromFun);

    
$ALM_al_Cuad=bcpow($ALM_menos_PromFun24);
    
//printf("ES_al_Cuad = ");
    //printf($ES_al_Cuad);


    
$ConRaiz=(($ConRaiz) + ($ALM_al_Cuad));
    }


$cont_menos_uno=($cont 1);
if (
$cont_menos_uno!='0') {
$ConRaiz_div=bcdiv($ConRaiz$cont_menos_uno4);

$DESV_EST=bcsqrt($ConRaiz_div4);
//echo "DESV: $DESV_EST <br>";
}
?>

<?

$sql4 
"SELECT DISTINCT TS.TS_PTS, PO.PATERNO, PO.MATERNO, PO.NOMBRES, PO.RUT, PO.DV, PO.TIENEPATROCINIO, TP.TP_PPS, TS.TS_ID, TS.TS_TRES, TS.TS_TRMA, TS.TS_TRVE, TS.TS_TRME, TS.TS_N, TS.TS_ALM FROM POSTULANTE AS PO, TEST_PRESELECCION22 AS TP, TEST_SELECCION AS TS WHERE ((TP.TP_IDENPOST=TS.TS_IDENTPOST) AND (PO.RUT=TP.TP_IDENPOST))";

$query4 = @mysql_query($sql4$dblink);
while (
$row mysql_fetch_array($query4))
{
$TS_ID $row['TS_ID'];
$almacenaID $row['TS_ID'];
$PATERNOZ $row['PATERNO'];
$MATERNOZ $row['MATERNO'];
$NOMBRESZ $row['NOMBRES'];
$RUTZ $row['RUT'];
$DVZ $row['DV'];
$TP_PPSZ $row['TP_PPS'];
$TIENEPATROCINIOZ $row['TIENEPATROCINIO'];
$TS_TRES $row['TS_TRES'];
$TS_TRMA $row['TS_TRMA'];
$TS_TRVE $row['TS_TRVE'];
$TS_TRME $row['TS_TRME'];
$TS_N $row['TS_N'];
$TS_ALM $row['TS_ALM'];
$TS_PTS $row['TS_PTS'];

//echo "TS_ID:$TS_ID";
//echo "**";
//echo "Tiene:$TIENEPATROCINIOZ";
//echo "**";
if ($TIENEPATROCINIOZ=='0') {
      
$EMP=$FTS_SINPATRO;
      }


   elseif (
$TIENEPATROCINIOZ=='1') {
       
$EMP=$FTS_CONPATRO;
        }
//echo "EMP:$EMP";
//echo "**";

$PROD_UNO=($TP_PPSZ*$FTS_PONDERACION_TP);
//echo "PROD_UNO:$PROD_UNO";
$PROD_DOSa=(($TS_TRES*$FTS_TRES)+($TS_TRMA*$FTS_TRMA)+($TS_TRVE*$FTS_TRVE)+($TS_TRME*$FTS_TRME));
$PROD_DOS=bcadd($PROD_DOSa03);
//echo "PROD_DOS: $PROD_DOS";

$PROD_DOS_POR_FACTOR_S=($PROD_DOS*$FTS_PONDERACION_TS);
//echo "PROD_DOS_POR_FACTOR_S**: $PROD_DOS_POR_FACTOR_S";
$PROD_DOS_POR_EMP=($PROD_DOS_POR_FACTOR_S*$EMP);
//echo "PROD_DOS_POR_EMP: $PROD_DOS_POR_EMP";
//echo "TS_N:$TS_N";
$PTJE_FINAL_TSa=($PROD_UNO)+($PROD_DOS_POR_EMP)+($TS_N $DESV_EST);
$PTJE_FINAL_TS=bcadd($PTJE_FINAL_TSa03);
//echo "**";
//echo "PTJE_FINAL_TS: $PTJE_FINAL_TS <br>\n";

$sql5 "UPDATE TEST_SELECCION SET TS_DESV='$DESV_EST', TS_PS='$PTJE_FINAL_TS' WHERE (TS_ID='$almacenaID')";
$query5 = @mysql_query($sql5$dblink);


}
?>

<?
include "link.php";
$dblink=MYSQL_CONNECT($MySqlHostname$MySqlUsername$MySqlPassword);

$sql6 "SELECT DISTINCT PO.NOMBRES, PO.PATERNO, PO.TIENEPATROCINIO, PO.RUT, PO.DV, PO.MATERNO, TP.TP_IDENPOST , TP.TP_PTPS, TP.TP_PPS, TS.TS_IDENTPOST , TS.TS_TRES, TS.TS_TRMA, TS.TS_TRVE, TS.TS_TRME, TS.TS_N, TS.TS_PTS, TS.TS_PS FROM TEST_PRESELECCION22 AS TP, POSTULANTE AS PO, TEST_SELECCION AS TS WHERE ((TP.TP_IDENPOST=PO.RUT) AND (TS.TS_IDENTPOST=PO.RUT)) ORDER BY  PO.PATERNO, PO.MATERNO  DESC LIMIT $Limit_Post";
$query6 = @mysql_query($sql6$dblink);

$shtml="<table>";
$shtml=$shtml."<td>Correlativo</td><td>A. Paterno</td><td>A. Materno</td><td>Nombres</td><td>RUT</td><td>DV</td>";
$shtml=$shtml."<tr>"

//echo "PATERNO MATERNO NOMBRES | PTPS | PPS | TRES | TRMA | TRVE | TRME | TPers | PTS | PS ";

while ($row mysql_fetch_array($query6))
{

$num=$num+1;

$TP_PTPS number_format($row['TP_PTPS'], 2);
$TP_PPS number_format($row['TP_PPS'], 3);
$NOMBRES $row['NOMBRES'];
$RUT $row['RUT'];
$DV $row['DV'];
$PATERNO $row['PATERNO'];
$MATERNO $row['MATERNO'];
$TIENEPATROCINIO $row['TIENEPATROCINIO'];
$TS_TRES number_format($row['TS_TRES'], 2);
$TS_TRMA number_format($row['TS_TRMA'], 2);
$TS_TRVE number_format($row['TS_TRVE'], 2);
$TS_TRME number_format($row['TS_TRME'], 2);
$TS_N $row['TS_N'];
$TS_PTS number_format($row['TS_PTS'], 3);
$TS_PS number_format($row['TS_PS'], 3);

$TP_IDENPOST=$row['TP_IDENPOS'];
$TS_IDENTPOST=$row['TS_IDENTPOST'];

if ( 
$num <= 224 )  


echo 
'<td bgcolor="#c0c0c0"><div align="center"><font face="Tahoma" size="1" color="#000000">'.$num.'</font></div></td>'


if ( 
$num 224 )  

echo 
'<td><div align="center"><font face="Tahoma" size="1" color="#000000">'.$num.'</font></div></td>'


echo 
'<td><div align="left"><font face="Tahoma" size="1" color="#000000">'.$PATERNO.'</font></div></td>';
echo 
'<td><div align="left"><font face="Tahoma" size="1" color="#000000">'.$MATERNO.'</font></div></td>';
echo 
'<td><div align="left"><font face="Tahoma" size="1" color="#000000">'.$NOMBRES.'</font></div></td>';

if (
$DV =='10')
        {
        
$DV 'k';
        echo 
'<td><div align="center"><font face="Tahoma" size="1" color="#000000">'.$RUT.' - '.$DV.'</font></div></td></tr>';
        }
else
if (
$DV !='10')
        {
        echo 
'<td><div align="center"><font face="Tahoma" size="1" color="#000000">'.$RUT.' - '.$DV.'</font></div></td></tr>';
        }


$shtml=$shtml."<tr>";
$shtml=$shtml."<td>$num</td><td>$PATERNO</td><td>$MATERNO</td><td>$NOMBRES</td><td>$RUT</td><td>$DV</td>";

$shtml=$shtml."</tr>";
//$shtml=$shtml."<tr>"; salto de una fila entre cada nuevo registro

}

$shtml=$shtml."</table>";
$scarpeta="Carpeta"//carpeta donde guardar el archivo.
//debe tener permisos 775 por lo menos
$sfile=$scarpeta."/AceptadosEsperaPS.xls"//ruta del archivo a generar
$fp=fopen($sfile,"w");
fwrite($fp,$shtml);
fclose($fp);
echo 
'</tr></table></div>';

//echo "<a href='".$sfile."'>Generar Reporte en Excel</a>";
__________________
Los que Saben....no Saben lo que Saben
  #2 (permalink)  
Antiguo 05/11/2007, 10:03
 
Fecha de Ingreso: mayo-2007
Mensajes: 413
Antigüedad: 17 años
Puntos: 0
Re: duda con reporte

algien que me pueda ayudar??
__________________
Los que Saben....no Saben lo que Saben
  #3 (permalink)  
Antiguo 05/11/2007, 10:53
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 17 años
Puntos: 6
Re: duda con reporte

Hola, en que parte de tu codigo haces esa consulta?
__________________
"Eres grande por que caminas entre gigantes"
  #4 (permalink)  
Antiguo 05/11/2007, 11:22
 
Fecha de Ingreso: mayo-2007
Mensajes: 413
Antigüedad: 17 años
Puntos: 0
Re: duda con reporte

hola ferbux ..tanto tiempo....mira


aca hao la consulta

Código PHP:
<? 
include "link.php"
$dblink=MYSQL_CONNECT($MySqlHostname$MySqlUsername$MySqlPassword); 

$sql6 "SELECT DISTINCT PO.NOMBRES, PO.PATERNO, PO.TIENEPATROCINIO, PO.RUT, PO.DV, PO.MATERNO, TP.TP_IDENPOST , TP.TP_PTPS, TP.TP_PPS, TS.TS_IDENTPOST , TS.TS_TRES, TS.TS_TRMA, TS.TS_TRVE, TS.TS_TRME, TS.TS_N, TS.TS_PTS, TS.TS_PS FROM TEST_PRESELECCION22 AS TP, POSTULANTE AS PO, TEST_SELECCION AS TS WHERE ((TP.TP_IDENPOST=PO.RUT) AND (TS.TS_IDENTPOST=PO.RUT)) ORDER BY  PO.PATERNO, PO.MATERNO  DESC LIMIT $Limit_Post"
$query6 = @mysql_query($sql6$dblink); 

$shtml="<table>"
$shtml=$shtml."<td>Correlativo</td><td>A. Paterno</td><td>A. Materno</td><td>Nombres</td><td>RUT</td><td>DV</td>"
$shtml=$shtml."<tr>";  

//echo "PATERNO MATERNO NOMBRES | PTPS | PPS | TRES | TRMA | TRVE | TRME | TPers | PTS | PS "; 

while ($row mysql_fetch_array($query6)) 


$num=$num+1

$TP_PTPS number_format($row['TP_PTPS'], 2); 
$TP_PPS number_format($row['TP_PPS'], 3); 
$NOMBRES $row['NOMBRES']; 
$RUT $row['RUT']; 
$DV $row['DV']; 
$PATERNO $row['PATERNO']; 
$MATERNO $row['MATERNO']; 
$TIENEPATROCINIO $row['TIENEPATROCINIO']; 
$TS_TRES number_format($row['TS_TRES'], 2); 
$TS_TRMA number_format($row['TS_TRMA'], 2); 
$TS_TRVE number_format($row['TS_TRVE'], 2); 
$TS_TRME number_format($row['TS_TRME'], 2); 
$TS_N $row['TS_N']; 
$TS_PTS number_format($row['TS_PTS'], 3); 
$TS_PS number_format($row['TS_PS'], 3); 

$TP_IDENPOST=$row['TP_IDENPOS']; 
$TS_IDENTPOST=$row['TS_IDENTPOST']; 

if ( 
$num <= 224 )   
{  

echo 
'<td bgcolor="#c0c0c0"><div align="center"><font face="Tahoma" size="1" color="#000000">'.$num.'</font></div></td>';  
}  

if ( 
$num 224 )   
{  
echo 
'<td><div align="center"><font face="Tahoma" size="1" color="#000000">'.$num.'</font></div></td>';  
}  

echo 
'<td><div align="left"><font face="Tahoma" size="1" color="#000000">'.$PATERNO.'</font></div></td>'
echo 
'<td><div align="left"><font face="Tahoma" size="1" color="#000000">'.$MATERNO.'</font></div></td>'
echo 
'<td><div align="left"><font face="Tahoma" size="1" color="#000000">'.$NOMBRES.'</font></div></td>'

if (
$DV =='10'
        { 
        
$DV 'k'
        echo 
'<td><div align="center"><font face="Tahoma" size="1" color="#000000">'.$RUT.' - '.$DV.'</font></div></td></tr>'
        } 
else 
if (
$DV !='10'
        { 
        echo 
'<td><div align="center"><font face="Tahoma" size="1" color="#000000">'.$RUT.' - '.$DV.'</font></div></td></tr>'
        } 


$shtml=$shtml."<tr>"
$shtml=$shtml."<td>$num</td><td>$PATERNO</td><td>$MATERNO</td><td>$NOMBRES</td><td>$RUT</td><td>$DV</td>"

$shtml=$shtml."</tr>";
pero entiendes lo que no me resulta?...gracias....por tu ayuda
__________________
Los que Saben....no Saben lo que Saben
  #5 (permalink)  
Antiguo 05/11/2007, 11:40
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 17 años
Puntos: 6
Re: duda con reporte

Pues sí, lo ke no te resulta es al momento de ordenar por apellido te muestra los registrso equivocados, como mencionas ke kieres ke te muestre los registros de los alumnos ke vayan a participar y te muestra los ke no van a participar, es algo así verdad?
__________________
"Eres grande por que caminas entre gigantes"
  #6 (permalink)  
Antiguo 05/11/2007, 11:48
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 17 años
Puntos: 6
Re: duda con reporte

Prueba imprimir tu consulta para ver ke es lo ke esta obteniendo al momento de ejecutarse. pon algo asi:
...........
$sql6 = "SELECT DISTINCT PO.NOMBRES, PO.PATERNO, PO.TIENEPATROCINIO, PO.RUT, PO.DV, PO.MATERNO, TP.TP_IDENPOST , TP.TP_PTPS, TP.TP_PPS, TS.TS_IDENTPOST , TS.TS_TRES, TS.TS_TRMA, TS.TS_TRVE, TS.TS_TRME, TS.TS_N, TS.TS_PTS, TS.TS_PS FROM TEST_PRESELECCION22 AS TP, POSTULANTE AS PO, TEST_SELECCION AS TS WHERE ((TP.TP_IDENPOST=PO.RUT) AND (TS.TS_IDENTPOST=PO.RUT)) ORDER BY PO.PATERNO, PO.MATERNO DESC LIMIT $Limit_Post";
$query6 = @mysql_query($sql6, $dblink);
echo $query6;
.............
__________________
"Eres grande por que caminas entre gigantes"
  #7 (permalink)  
Antiguo 05/11/2007, 12:06
 
Fecha de Ingreso: mayo-2007
Mensajes: 413
Antigüedad: 17 años
Puntos: 0
Re: duda con reporte

siiii es eso....se mesclan ay entre los que van a `participar y los que no.....estaba tratando de ponder in where asi


where (TS.TS_PS >= '4.132')) entonces cuand llege a ese puntaje mustra solo los que van a participar....que serian 224 pero muestra 223....claro q esta forma no seria efectiv para los futuros puntajes que no sera nsiempre iguales....

como podrias ayudarme graciass??
__________________
Los que Saben....no Saben lo que Saben
  #8 (permalink)  
Antiguo 05/11/2007, 12:42
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 17 años
Puntos: 6
Re: duda con reporte

pues la forma en la ke pienso podrias solucionar eso seria ke tuvieras en tu tabla en la base de datos un campo ke fuera algo asi como un bandera a fin de ke en ese campo pudieras definir tal vez si el campo tiene un 1 es por ke participa si tiene un 0 es ke no participa, y en base a ese campo puedas hacer tu consulta.
__________________
"Eres grande por que caminas entre gigantes"
  #9 (permalink)  
Antiguo 05/11/2007, 13:22
 
Fecha de Ingreso: mayo-2007
Mensajes: 413
Antigüedad: 17 años
Puntos: 0
Re: duda con reporte

gracias ...de verdad pero no entendi mucho....

encontre esta solucion mira

a la consulta l puse esto where (TS.TS_PS >= '4.132')) entonces si el puntaje es mayor a '4.132' muestra solo los seleccionados para participar...el problema con esto es que solo muestra los 223 y falta uno porque son 224 ,..queda uno afuera....

talves este mal la consulta o el signo....gracias por tu ayuda .....podras ayudarem algo aca
__________________
Los que Saben....no Saben lo que Saben
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 12:34.