Comunidad de diseño web y desarrollo en internet online

Colorear celda segun datos de bd

Citar            
MensajeEscrito el 07 Dic 2008 02:04 pm
Buenas a todos soy nuevo en esto foro .. soy JAKUMA... y necesito su ayuda... paso a explicarles detalladamente lo que necesito hacer...
Necesito colorear celdas segun dos campos fecha de una tabla fecha1 y fecha2 en ese rango y segun el mes se debe colorear .. yo he logrado realizar esto de forma estatica sin usar la base de datos +... el problema es como hago para utilizar (extraer) todos los registro de la base y volvarlo en la misma tabla... me explico.. estuve pobrando con while y estrae todos pero no me funciono o no se ubicar el while.. en otro foro me sugirieron un arreglo y una funcion pero tampoco pude realizarlo.. necesito su ayuda .. por favor

a continuacion le paso el codigo

Código :

    //escribo la primera fila de la semana
    echo "<table>";
   echo "<tr>";
 echo "<td></td>";
    for ($i=0;$i<31;$i++){
   
        $color= "style=color:blue";
    
                echo "<td align=center >".($dia_actual<10?"0$dia_actual":$dia_actual)."</td>"; 
            $dia_actual++;
        
    }
    echo "</tr>";
   
      $mes=0;
   

     for ($j=0;$j<12;$j++){
     $mes=$mes+1;
   
        echo "<tr id=$mes>";
        echo "<td id=$mes>"; echo $nombre_mes ; echo "</td>";
      for ($i=0;$i<31;$i++){
   
   while($row_Recordset1){
   $diacolor= $row_Recordset1['fecha1'], 7, 2);
   $diacolor2= substr($row_Recordset1['fecha2'], 7, 2);
   $mes_color= substr($row_Recordset1['fecha1'], 5, 2);}
            if ($diacolor <= $i && $diacolor2 >= $i && $mes == $mes_color){
   $color="style=color:red;background-color:pink" ; 
      } else {
    $color="style=color:blue";
   }
      echo "<td align=center $color id=$i> $mes </td>"; }       
      
      echo "</tr>";
      echo $diacolor;
      }
      

 
    echo "</table>";
}


necesito una mano

Por jakuma

6 de clabLevel



 

msie
Citar            
MensajeEscrito el 07 Dic 2008 05:08 pm
así:
primero defines fecha actual

Código PHP :

$fecha_actual= ;/*la fecha que arroja la base de datos*/
$color=($fecha_actual==$fecha1)?"#00ff00":"ff0000";

luego si fecha actual es igual a fecha1 color es igual a "#00ff00", si no es igual a fecha1 color es igual a "ff0000"

Por chug0

Claber

136 de clabLevel



 

Perú

firefox
Citar            
MensajeEscrito el 07 Dic 2008 07:29 pm
gracias chugo ... pero esoty buscando colorear una rango de fecha, y tengo que volcar todo los registros de la base.. te lo aclaro ..campo de la base:
id.
fecha1
fecha2
precio

yo puedo tener 10 registro en la base con diferentes rangos de fecha , y quiero colorear todos los rangos que esten en la tabla .. me exlico..? no solo una fecha. voy a probar a tu codigo ponerle un while...

Por jakuma

6 de clabLevel



 

msie
Citar            
MensajeEscrito el 08 Dic 2008 02:47 pm
alguien me puede dar una mano... me digieron que debo hacer un arreglo y una funcion algo asi checkOccupied( $fecha, $array_con_fechas) que si da true coloreo.. tambien que debo hacerlo en dos parte una tomar los datos y otra dibujar calendario .. me no se bien como hacer esto .. alguien sabe ... gracias

Por jakuma

6 de clabLevel



 

msie
Citar            
MensajeEscrito el 08 Dic 2008 06:08 pm

chug0 escribió:

así:
primero defines fecha actual

Código PHP :

$fecha_actual= ;/*la fecha que arroja la base de datos*/
$color=($fecha_actual==$fecha1)?"#00ff00":"ff0000";

luego si fecha actual es igual a fecha1 color es igual a "#00ff00", si no es igual a fecha1 color es igual a "ff0000"


lo que dices puede funcionar, pero en verdad seria una mala practica, lo ideal seria en ves de la clave del color solo colocarle la clase del estilo.

Código PHP :

$fecha_actual= ;/*la fecha que arroja la base de datos*/
$Fclase=($fecha_actual==$fecha1)?"Factual":"F";

Código HTML :

<table>
   <thead>
      <tr>
         <td>fecha</td>
      </tr>
   </thead>
   <tbody>
      <tr class='<?php echo  $Fclase ?>'>
         <td>
            <?php echo  $fecha_actual ?>
         </td>
      </tr>
   </tbody>
</table>


ademas debieras notar que el tener el php mezclado con el ph, es una pésima practica

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 08 Dic 2008 07:26 pm
ok .. inyaka entiendo .... pero yo quiero colorear el calendario con todas las fecha almacenadas en la base de datos como hago eso... por que vos me estas diciendo solo para una fecha , aparte no es solo una fecha si no un rango a colorear seria desde fecha1 (bd) hasta fecha1 (bd)... me explico...
POR FAVOR AYUDA!!!!... no se que hacer...
como hacen los calendario eventos para eralizar esto..._¨???

Por jakuma

6 de clabLevel



 

msie
Citar            
MensajeEscrito el 08 Dic 2008 07:46 pm
Yep, inyaka tiene razón debes imprimir la clase de esa forma validara.
No entiendo muy bien lo que quieres hacer, tal vez si muestras la pagina.
Quieres mostrar todos los días del calendario así como acá: http://farm1.static.flickr.com/32/50537499_a0a978e670.jpg?v=0 , y según fecha1 y fecha2 (de la db) colorear un rango por ejemplo del 2 al 10?

Por chug0

Claber

136 de clabLevel



 

Perú

firefox
Citar            
MensajeEscrito el 08 Dic 2008 09:10 pm
exacto, eso quiero hacer , colorear los rango de la base todos los registro en la misma tabla ejemplo del 1 al 10 de nov del 20 al 28 de nov de 3 al 15 de dic todos en la misma tablao calendario

Por jakuma

6 de clabLevel



 

msie
Citar            
MensajeEscrito el 09 Dic 2008 12:20 am
he estado intentado poner un while creo que voy por camino ,me hace el calendario pero no me lo pinta .. les dejo codigo a ver si me ayudan, las variables $diacolor , $diacolor2 y $mes_color estan definida ya que las probe con un echo al final de la tabla y dan bien pero no me pinta el calendario... debe estar en las condiciones del if .. el problema...

Código :

  echo "<table>";
   echo "<tr>";
 echo "<td></td>";
    for ($i=0;$i<31;$i++){
   
        $color= "style=color:blue";
    
                echo "<td align=center >".($dia_actual<10?"0$dia_actual":$dia_actual)."</td>"; 
            $dia_actual++;
        
    }
    echo "</tr>";
         $mes=0;

     for ($j=0;$j<12;$j++){
     
     $mes=$mes+1;
   
        echo "<tr id=$mes>";
        echo "<td id=$mes>"; echo $nombre_mes ; echo "</td>";
      
      for ($i=0;$i<31;$i++){
   

      echo  "<td align=center ";
          
while($row = mysql_fetch_array ($Recordset1)){
   
    $diacolor= substr($row['fecha1'],8, 2);
   $diacolor2= substr($row['fecha2'],8, 2);
    $mes_color= substr($row['fecha1'],5, 2);
   
if ($diacolor<=$i && $diacolor2>=$i && $mes==$mes_color ){
   echo "style=color:red;background-color:pink" ; 
      } else { 
   echo  "style=color:green"; 
   }}   echo " id=$i> $mes </td>"; }    
      
      echo "</tr>";
      
      }
   

    echo "</table>";
   

Por jakuma

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Dic 2008 04:05 pm
alguien que me ayuden por favor... lo necesito urgente y he intentado y buscado pero no se como realizarlo plizz!! AYUDAAAA

Por jakuma

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Dic 2008 04:48 pm

Código PHP :

$fecha1=2;
$fecha2=10;

function colorear($current,$fecha1,$fecha2) {
   echo $color_class =($fecha1<=$current && $current<= $fecha2)?"color_amarillito_resaltado":"color_normal";
}
for($d = 1; $d <= 30; $d += 1){
echo $d.colorear($d,2,10)."<br/>\r";
}

Por chug0

Claber

136 de clabLevel



 

Perú

firefox
Citar            
MensajeEscrito el 09 Dic 2008 04:49 pm
el codigo anterior es solo una idea debes adecuarlo y arreglarlo.

Por chug0

Claber

136 de clabLevel



 

Perú

firefox
Citar            
MensajeEscrito el 09 Dic 2008 11:39 pm
estimado ghugo... eso mas o menos lo se y lo tengo hecho el tema es las fecha1 y fecha2 ya que de estas en la base de datos pueden haber 10 15 o 20 distintas.. vos ahi me pasas para fechas 1 y 2 estaticas ( fecha1 = 2 y fecha2= 10) yo quiero sacarlas de la base de los campos fecha1 y fecha2 y volcarlas en la misma tabla (calendario).
me explico?

Por jakuma

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Dic 2008 11:50 pm

Código PHP :

while($mi_fecha_de_la_base_de_datos = conexion){
$fecha1=$mi_fecha_de_la_base_de_datos["fecha1"]; 
$fecha2=$mi_fecha_de_la_base_de_datos["fecha2"]; 
}
function colorear($current,$fecha1,$fecha2) { 
   echo $color_class =($fecha1<=$current && $current<= $fecha2)?"color_amarillito_resaltado":"color_normal"; 
} 
for($d = 1; $d <= 30; $d += 1){ 
echo $d.colorear($d,$fecha1,$fecha2)."<br/>\r"; 
} 

Por chug0

Claber

136 de clabLevel



 

Perú

firefox
Citar            
MensajeEscrito el 10 Dic 2008 12:23 am
mmm quieres colorear varios rangos dentro del mismo calendario?

Por chug0

Claber

136 de clabLevel



 

Perú

firefox
Citar            
MensajeEscrito el 10 Dic 2008 12:59 am
sii ... pintar varios rangos .. voy a pobrar esto a ver como me resulta .. muchisimas gracias por tu tiempo y tu conocimiento... te lo agradezco

Por jakuma

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2008 11:17 pm
estimado chugo.. lo probe el problemas es que necesito pintar TODOS LOS RANGOS !!! que tengo en la tabla.. como podria hacerlo....por que la funcion no corrobora todos los datos de la tabla solo el ultimo...

Por jakuma

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Dic 2008 04:52 am
cual es la estructura de la tabla con las fechas?

Por chug0

Claber

136 de clabLevel



 

Perú

firefox
Citar            
MensajeEscrito el 11 Dic 2008 01:21 pm
Hola jakuma, lo que se me ocurre para que soluciones tu problema es que vacies en un array todos los rangos que obtengas de la BD, eso lo pdrías hacer así:

Código :

$rangos = array();

$result = mysql_query("SELECT fecha1, fecha2 FROM nombre_tabla");

while ($row = mysql_fetch_array($result, MYSQL_NUM)) 
{
    //Se van agregando a $rangos los rangos existentes en la BD
    array_push($rangos,$row);
}
Luego haces una función que retorne true si una fecha está entre alguno de los rangos del array $rangos y false en el caso contrario, después, cuando estés construyendo el calendario llames a esa función justo antes de pintar un día, si la funcion devuele true pintas con un color diferente, si devuelve false pintas con el color normal...

Queda de tu parte hacer dicha función... Saludos...

Por KB-27

Claber

301 de clabLevel



 

My very secret HQ

firefox
Citar            
MensajeEscrito el 12 Dic 2008 03:47 pm
los vuelvo amolestar no he podido realizar la funcion .. no logro realizar.. no se como sacar los elementos del array y compararlos con ese dia par que me el true dela funcion .. por favor una ultima ayuda... gracia de verdad a todos son de mucha ayuda para novatos como yo..
saludos!

Por jakuma

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Dic 2008 04:20 pm
Nada eficiente pero soluciona tu problema, si la quieres hacer mas eficiente queda en tus manos

Código :

function in_rangos($rangos,$fecha)
{
   foreach ($rangos as $row)
   {
      if (($fecha >= $row[0]) || ($fecha <= $row[1]))
         return (true);
   }
   return (false);
}
Ten en cuenta que la fecha que le mandes a la función debe estar en el mismo formato de la BD

PD: Empeño

Por KB-27

Claber

301 de clabLevel



 

My very secret HQ

firefox
Citar            
MensajeEscrito el 12 Dic 2008 05:16 pm
Aprende a solucionar timestamp en php, y eso que quieres se hace facilmente.

Un timestamp es como un valor número de fecha, ya solo comparas números.

Por ejemplo una fecha en mysql, puedes convertirla a su timestamp en php con la función "strtodate".

:wink:

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.