Uregnte- mostrar datos horizontalmente

Estimado .. Saludos..
Mi consulta es la siguiente, y me es de suma urgencia, espero que puedas ayudar..
Necesito mostrar datos horizontalmente..
obviamente los datos los obtengo de un select...
ejemplo real..
tabla: valor_diario
Campos:
Ano, mes, día, valor
Los tengo que mostrar de la siguiente manera:
DIA ENE FEB MAR ABR MAY JUN ...
01 2.3 2.2 1.8 1.5 1.9 1.3
02 2.1 2.0 1.2 4.5 2.9 1.1
. . . . . . . . .. . . . . .
. . . . . . . . .. . . . . ..
31
Todo esta Ok.. He logrado conseguir que me imprima de esa manera.. Pero el problema esta a partí de los 29, exactamente en febrero.. Cuando no hay dato.. Obviamentte no hay registro en la tabla...
lo que hago es un while (0<=31)
Luego hago el select correspondiente, filtrando por el día y por el año..
Pero como comprenderán.. A partir del 29, de los febrero no hay registro.. Entonces el while del select, solo toma 11 registros...
espero su pronta ayuda.. Pleas.e.Me es muy urgente...
Gracias.

1 Respuesta

Respuesta
1
Ok mira no tengo muy entendido lo que necesitas, pero segun me parece tu problema es febrero entonces te recomuendo que dentro de tu logica tengas esta idea
if ($mes == 'Febrero') {
$valor = 29;
} else {
$valor = 31;
}
//Aqui sigue tu loqgica normal pero cambia
while (0<=$valor) {
//tu codigo
}
Así creo que podrás determinar hasta que día avanzar, espero te sirva de algo y sino es así reformulame tu pregunta ok, nos vemos
Me agradaría saber si te sirvió en algo mi ayuda, o de no ser te pediré me reformules tu pregunta, nos vemos
Lo que tu me dices es obvio.. era lo que ya lo había pensado, pero en esta forma no sale..
Este es mi código...
echo '</tr>';
$i=1;
$tot_dias = 31;
while ($i<=$tot_dias){
$dia_i = sprintf("%02d",$i);
echo '<tr bgcolor="#EDF3FA">';
echo '<td height="23" bgcolor="#7EA9D3" bordercolor="#FFFFFF"><div align="center"><strong>'.$dia_i.'</strong></div></td>';
$query =mysql_query ("select * from tasa_legal_laboral_mn_me where flg_mn='0' and dia='$dia_i' and ano='$brow_ano' order by mes ASC,dia") or die(mysql_error());
while ($res=mysql_fetch_array($query)){
$mn_me = decimal($res[mn_me],5);
$mn_me = str_replace("0.00000","-",$mn_me);
echo '<td><div align="center">'.$mn_me.'</div></td>';
}
echo '</tr>';
$i++;
}
Ok lo que tu deseas es hacer una especie de referencias cruzadas, ok, hay un punto como no encuentras valores para el 30 de febrero, la BD te enviuara un valor nulo para lo cual antes de trabajar con el dato que te envíe pasalo así:
if (is_null($res[mn_me])){
$res[mn_me]=0;
}
Y continua con tu código, ok avisame si te sirvió mi ayuda ok, nos vemos
Estimado...
Antes que nada.. gracias por tu apoyo..
Pero el problema es este:
<STRONG>¡¡ NO EXISTE REGISTRO DEL 30 DE FEBRERO !!</STRONG>
Si existiera dicho registro(aun teniendo un valor vacío o nullo), entonces lo que me dices me sirviera...
El bucle es a 31:
while ($a<=31){
//pero en el select solo imprime 28 ò 29 dependiendo del año (hablando solo de febrero)
//ahi esta el error..
}
Ok esta bien pero justamnete allí es donde debes de poner lo que te indique al inicio, te recomiendo lo siguiente cuando ejecutes la consulta recuerda que no devolverá ningún valor, hasta allí de acuerdo netonces usa la función mysql_num_rows y esta te devolverá 0.
if (mysql_num_rows($query)==0){
echo '<td><div align="center">--</div></td>';
} else {
$mn_me = decimal($res[mn_me],5);
$mn_me = str_replace("0.00000","-",$mn_me);
echo '<td><div align="center">'.$mn_me.'</div></td>';
}
De esta manera si es 30/02 regresara 0y mostraras solamente el ese lugar --.
Oarc19 me gustaría saber si te sirvió de mi ayuda en algo, si tienes alguna pregunta solo házmela llegar, nos vemos..

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas