Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Alternar valor de una variable de clase en una tabla

Estas en el tema de Alternar valor de una variable de clase en una tabla en el foro de PHP en Foros del Web. Hola. Tengo una página con un calendario de reservas, el calendario se crea con un script que además de generar la tabla con las celdas ...
  #1 (permalink)  
Antiguo 07/07/2013, 03:13
 
Fecha de Ingreso: junio-2012
Mensajes: 80
Antigüedad: 11 años, 10 meses
Puntos: 11
Pregunta Alternar valor de una variable de clase en una tabla

Hola.

Tengo una página con un calendario de reservas, el calendario se crea con un script que además de generar la tabla con las celdas comprueba contra una BD si ese día la habitación X esta reservada o no, si lo esta le asigna a la celda una clase en concreto. Hasta aquí es sencillo, lo que no consigo hacer es que cada distinta reserva alterne su color con la anterior para poder diferenciar facilmente una de otra.

Os explico la parte del script en concreto que hace esto:

Primero tengo una tabla MYSQl que almacena día a día cada reserva, es decir si tenemos una reserva para el día 10, 11 y 12 de un mes, para esa reserva habrá 3 registros distintos en la tabla pero una misma ID foránea.

La tabla que representa el calendario la genero con un bucle while y dentro hay una variable incremental en cada ciclo para llevar la cuenta del día que inserta en cada celda, en ese mismo proceso compruebo con una consulta si para ese mismo día existe o no un registro en la BD, si existe asigno la clase "reservado" a la celda y si no, no le asigno clase y la dejo por defecto.

Hasta aquí todo correcto, pero ahora me gustaría alternar las clases según sea una reserva distinta a la anterior, es decir para la 1º reserva usaría clase "reservadoA", para la 2º "reservadoB", la 3º "reservadoA" otra vez, y así...

Código PHP:
Ver original
  1. while($dia_actual <= $ultimo_dia){
  2.     $reserva = check_reservado($mes,$ano,$dia_actual);
  3.  
  4.     if($reserva){
  5.         $class = 'reservado';
  6.     }else{
  7.         $class = '';
  8.     }
  9.  
  10.     echo '
  11.                 <td class="'.$class.'">'.$dia_actual.'</td>
  12.     ';
  13.     $dia_actual++;
  14. }

Este bucle me genera las celdas de la tabla del calendario teniendo en cuenta el año y el mes, la variable "$dia_actual" es la que genera el numero del día del calendario, y la variable "$reserva" sale de la función "check_reservado" que comprueba si para ese día hay una reserva o no, si la existe sera "TRUE", si no "FALSE". La variable "$ultimo_dia" es el numero de día que tiene un mes en concreto y la uso para generar cada mes con el numero correcto de días...

El script es bastante mas grande, el resto de el no creo que intervenga aquí, pero puedo ponerlo también si procede.

No creo que sirva de mucho la función "check_reservado" pero aquí la dejo también...
Código PHP:
Ver original
  1. function check_reservado($mes,$ano,$dia){
  2.     $dia < 10 ? $dia = '0'.$dia : $dia;
  3.     $conexion = connect_mysql();
  4.     $sql = "SELECT * FROM `fechas` WHERE `dia` LIKE '".$ano."-".$mes."-".$dia."'";
  5.     $consulta = mysqli_query($conexion,$sql);
  6.  
  7.     if(mysqli_num_rows($consulta) < 1){
  8.         return FALSE;
  9.     }else{
  10.         return TRUE;
  11.     }
  12. }

Por si os sirve de algo la tabla de la BD es esta:

"id_fecha" es el campo clave, auto-incremental.
"reserva" es la clave foranea que indica a que reserva pertenece cada fecha.

La cosa seria como alternar entre una clase A y una B de reserva a reserva... He intentado ya muchas cosas y nunca sale lo que quiero, a ver si me podéis orientar un poco.

Última edición por noruas; 07/07/2013 a las 03:42
  #2 (permalink)  
Antiguo 07/07/2013, 04:06
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Alternar valor de una variable de clase en una tabla

realmente haz especificado muchas cosas pero en ninguna especificas bien lo que quieres


a que le llamas alternar, explica breve y mejor lo que quieres
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #3 (permalink)  
Antiguo 07/07/2013, 04:59
 
Fecha de Ingreso: junio-2012
Mensajes: 80
Antigüedad: 11 años, 10 meses
Puntos: 11
Respuesta: Alternar valor de una variable de clase en una tabla

Lo que se genera es algo como esto:



Con un vistazo ves si hay una reserva o no, pero si coincide que hay dos o mas reservas de forma consecutiva, no puedes saber de forma rápida (si si pinchas encima y tal, pero eso ya es otro tema a parte que no incumbe aquí :P) cuando empieza una y cuando termina otra.

Quiero que de forma sencilla, es decir, visual, sepa cuando empieza una y cuando termina otra, por medio del uso de dos colores, rojo y azul por ejemplo (clase A y clase B).

Así que, cuando digo que se alternen, como ya dije en el primer post, la 1º reserva tendrá clase A, la segunda clase B, la tercera clase A otra vez...

En el caso de la 4º reserva "solitaria" que vemos al final, he puesto "B o A ?" por que no se si se pude de forma sencilla que solo se alternen las clases a si son contiguas y que no lo hagan si están separadas unas de otras, aunque eso ahora mismo es lo que menos me importa, como que se alternen unas a otras me conformo.

A ver si alguien me dice como hacerlo o me da alguna pista que pueda seguir para encaminarme hacia la solución.





EDITO:

Bueno me dieron ideas en otro foro, al final he resuelto parte del problema así:

Código PHP:
Ver original
  1. while($dia_actual <= $ultimo_dia){
  2.     $reserva = check_reservado($mes,$ano,$dia_actual);
  3.     $id_actual = id_reserva($mes,$ano,$dia_actual);
  4.  
  5.     if($reserva){
  6.         if($id_actual != $id_old){
  7.             if($check){
  8.                 $check = FALSE;
  9.             }else{
  10.                 $check = TRUE;
  11.             }
  12.         }
  13.         if(!$check){
  14.             $class = 'reservadoA';
  15.         }else{
  16.             $class = 'reservadoB';
  17.         }
  18.         $id_old = $id_actual;
  19.     }else{
  20.         $class = '';
  21.         $check = FALSE;
  22.     }
  23.     echo '
  24.                <td class="'.$class.'">'.$dia_actual.'</td>
  25.    ';
  26.     $dia_actual++;
  27. }

Última edición por noruas; 07/07/2013 a las 13:17

Etiquetas: mysql+php, variables
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 19:34.