Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/07/2013, 03:13
noruas
 
Fecha de Ingreso: junio-2012
Mensajes: 80
Antigüedad: 11 años, 11 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