Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Cambiar color de celda segun el dato obtenido

Estas en el tema de Cambiar color de celda segun el dato obtenido en el foro de PHP en Foros del Web. Hola amigos, Soy nuevo en la programación, pero me comprometí a realizar una base de datos de propietarios de cocheras, las cuales tienen 3 estados ...
  #1 (permalink)  
Antiguo 06/08/2014, 23:37
 
Fecha de Ingreso: marzo-2011
Mensajes: 6
Antigüedad: 13 años, 1 mes
Puntos: 0
Cambiar color de celda segun el dato obtenido

Hola amigos, Soy nuevo en la programación, pero me comprometí a realizar una base de datos de propietarios de cocheras, las cuales tienen 3 estados posibles que explico mas adelante. Se que han publicado cosas similares a la que necesito y de hecho yo me he basado en cosas publicadas aquí, pero no puedo lograr mostrar distintos colores según cual sea el dato.

La BD trae Nro. de cochera, Nombre del propietario y estado de la cochera y lo que necesito es que el color de fondo de la celda que muestra el estado de la cochera cambie de acuerdo al estado de dicha cochera. Los estados pueden ser solo 3:

Cochera Ocupada por el propietario
Cochera Ocupada por el inquilino
Cochera Desocupada

El código completo que utilizo es el siguiente:
(faltaría el archivo conexion.php pero es el que se conecta a la BD)

Código PHP:
Ver original
  1. <?php
  2. require("conexion.php");
  3.  
  4. //$query = "SELECT * FROM cocheras ORDER BY num_cochera ASC";
  5. $query = "SELECT * FROM `cocheras` AS c JOIN estados AS e ON c.estado_id=e.estado_id WHERE 1 ORDER BY num_cochera";
  6.  
  7. $queEmp = mysql_query($query, $conexion);
  8. ?>
  9. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  10. <html xmlns="http://www.w3.org/1999/xhtml">
  11. <head>
  12. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  13. <title>Garage</title>
  14. <link href="styles.css" rel="stylesheet" type="text/css" />
  15. </head>
  16. <body>
  17. <h3>Listado de Propietarios Garage Fray J. S. M. de Oro 2520</h3>
  18.  
  19. <table border="1" cellspacing="0" cellpadding="0">
  20.   <tr>
  21.     <th>Nro. Cochera</th>
  22.     <th>Propietario</th>
  23.     <th>Estado de la Cochera</th>
  24.   </tr>
  25.   <?php while ($rsEmp = mysql_fetch_array($queEmp))
  26. {  $estado_color = array(
  27.         'Ocupada por el propietario' => '#FF0000',
  28.         'Ocupada por el inquilino' => '#00FF00',
  29.         'Desocupada' => '#0000FF'
  30.     ) ?>
  31.   <tr>
  32.     <td><?php echo $rsEmp['num_cochera']; ?></td>
  33.     <td><?php echo $rsEmp['prop_nombre']; ?></td>
  34.     <td bgcolor="<?php $estado_color[$rsEmp['tipo_estado']] ?>"><?php echo $rsEmp['tipo_estado']; ?></td>
  35.   </tr>
  36.   <?php } ?>
  37. </table>
  38.  
  39. </body>
  40. </html>

Si alguien pudiera echarme una mano lo agradecería, ya que soy diseñador web y apenas conozco la programación PHP. Gracias
  #2 (permalink)  
Antiguo 07/08/2014, 00:42
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Cambiar color de celda segun el dato obtenido

Te faltó imprimir la variable, es decir, la palabra echo.

Código HTML:
Ver original
  1. <td bgcolor="<?php echo $estado_color[$rsEmp['tipo_estado']] ?>">

Aunque particularmente te aconsejo trabajar con clases y estilos (CSS). El array $estado_color podría estar antes de iniciar el bucle pues nunca varían sus valores, de este modo, evitarías crear al mismo array en cada iteración, lo cual es innecesario.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 07/08/2014, 01:13
 
Fecha de Ingreso: marzo-2011
Mensajes: 6
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Cambiar color de celda segun el dato obtenido

Gracias Alexis88 !!! Ha funcionado a la perfección.
Sería muy complicado realizarlo con CSS??? porque si bien conozco CSS pero no se aplicarlo en PHP. De nuevo gracias Alexis88
  #4 (permalink)  
Antiguo 07/08/2014, 01:48
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 2 meses
Puntos: 67
Respuesta: Cambiar color de celda segun el dato obtenido

Podrías hacerlo incluso con Jquery si te apañas mejor, de la siguiente manera:
En la parte del head:
Código Javascript:
Ver original
  1. <script>
  2. $(document).ready(function(){
  3.     $("tr").each(function(){
  4.         $(this).children("td").each(function(){
  5.             switch ($(this).html()) {
  6.                 case 'A':
  7.                     $(this).css("background-color", "#F00");
  8.                 break;
  9.                 case 'B':
  10.                     $(this).css("background-color", "#0F0");
  11.                 break;
  12.                 case 'C':
  13.                     $(this).css("background-color", "#00F");
  14.                 break;
  15.             }
  16.         })
  17.     })
  18. });
  19. </script>
Y la tabla:
Código HTML:
Ver original
  1.     <tr>
  2.         <td>A</td><td>B</td><td>C</td>
  3.     </tr>

Ejemplo funcionando.

Fíjate que se cambia el calor si coincide con la letra asignada, en tu caso sería cambiar las letras por el literal que vayas a usar.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #5 (permalink)  
Antiguo 07/08/2014, 02:29
 
Fecha de Ingreso: marzo-2011
Mensajes: 6
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Cambiar color de celda segun el dato obtenido

bookmaster, luego de bajar jquery-2.1.1.min.js he logrado hacerlo funcionar y me parece muy práctico. Incluso pienso usar este modelo. Pero solo por curiosidad, cómo sería realizarlo con CSS?
Porque también me gustaría poder usar estilos css en otros sectores.
Desde ya muchas gracias, me ha servido mucho todo.
  #6 (permalink)  
Antiguo 07/08/2014, 06:12
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 2 meses
Puntos: 67
Respuesta: Cambiar color de celda segun el dato obtenido

Para hacerlo con CSS tendrías que hacer lo mismo que en php, con la única diferencia que en vez de asignarle los colores al style, le pasas el nombre del class.

Ya que con CSS3 tienes los selectores y le puedes poner tags/atributos personalizados, pero no puede saber el contenido que hay entre las etiquetas.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #7 (permalink)  
Antiguo 07/08/2014, 08:59
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Cambiar color de celda segun el dato obtenido

Sería cuestión de que crees tres clases en tu hoja de estilos:

Código CSS:
Ver original
  1. .Ocupada_por_el_propietario{
  2.     background: #FF0000;
  3. }
  4.  
  5. .Ocupada_por_el_inquilino{
  6.     background: #00FF00;
  7. }
  8.  
  9. .Desocupada{
  10.     background: #0000FF;
  11. }

Y cuando hagas la asignación de la clase respectiva en el bucle while del código PHP, primero tendrías que reemplazar los espacios por guiones bajos pues los nombres de las clases en CSS no pueden tener espacios:

Código PHP:
Ver original
  1. $clase = str_replace(' ', '_', $rsEmp['tipo_estado']);

Y ya luego asignas dicho valor al atributo class del elemento:

Código HTML:
Ver original
  1. <td class="<?php echo $clase; ?>">

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #8 (permalink)  
Antiguo 07/08/2014, 22:22
 
Fecha de Ingreso: marzo-2011
Mensajes: 6
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Cambiar color de celda segun el dato obtenido

Alexis88 y bookmaster quiero agradecerles por todos sus comentarios ya que me han sido de mucha ayuda. Voy a utilizar el modelo hecho con JQuery propuesto por bookmaster y voy a usar selectores CSS para muchas cosas dentro de este proyecto, ya que recién estoy empezando con PHP. De nuevo gracias a ambos amigos. Cierro el tema como Solucionado.
Saludos.

Etiquetas: arrays, html, tablas
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 11:38.