podes sacarlo directamente con una consulta, el valor que te tiene que servir es la hora de finalizacion, y que sea el mismo dia, sabiendo a que hora termina sabes que antes va a estar ocupada, igualmente te recomendaria que registres las canchas para saber directamente que cancha es la disponible, proba con esta consulta para sacar si hay registos para las canchas, y que la cantidad sea menor a 1.
Código SQL:
Ver originalSELECT * FROM posts WHERE DATE_FORMAT(hora2,'%H:%i:%s') >= DATE_FORMAT(NOW(),'%H:%i:%s')
AND DATE_FORMAT(hora2,'%d-%m-%Y') = DATE_FORMAT(NOW(),'%d-%m-%Y')
AND (SELECT COUNT(*) AS total FROM posts WHERE DATE_FORMAT(hora2,'%H:%i:%s') >= DATE_FORMAT(NOW(),'%H:%i:%s')) < 2
Lo que hace esta consulta es traer los rgistos que sean mayores o iguales a la hora de la consulta, y que sean del mismo dia, y que la total de registros sea menor a 2,
Si encuentra algun registro es porque hay un turno libre, en caso de no devolver ningun valor significa que no hay turnos disponibles