es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtener fechas de la base de datos para el selector jQuery Ui en PHP.

Estoy tratando de obtener las fechas de la base de datos utilizando PHP, las cuales serán resaltadas en el selector de fechas. Para lograrlo, he realizado una consulta sql para obtener las fechas, como se muestra a continuación.
“`
HTML

Fecha: <input type="text" id="datepicker">
<code>
</code>
// Fechas estáticas
// Un arreglo de fechas
var eventDates = {};
eventDates[ new Date( '08/07/2016' )] = new Date( '08/07/2016' );
eventDates[ new Date( '08/12/2016' )] = new Date( '08/12/2016' );
eventDates[ new Date( '08/18/2016' )] = new Date( '08/18/2016' );
eventDates[ new Date( '08/23/2016' )] = new Date( '08/23/2016' );
<code>
</code>
<script>
$(function() {
// Un arreglo de fechas
var eventDates = {};
<?php

$sql = "SELECT * from <code>tabla</code> WHERE <code>valor</code> > 0";

$resultado = $conectar->query($sql);

while($fila = $resultado->fetch_assoc()) {

?>
eventDates[new Date('<?php echo $fecha = $fila['fecha']; ?>')] = new Date(
'<?php echo $fecha = $fila['fecha']; ?>');
<?php
}
?>

// Selector de fechas
$('#datepicker').datepicker({
beforeShowDay: function(date) {
var resaltar = eventDates[date];
if (resaltar) {
return [true, "evento", 'Texto de sugerencia'];
} else {
return [true, '', ''];
}
}
});
});
</script>
“`

En el código anterior, he recorrido todas las fechas que tienen valor > 0. Debería imprimir todas las fechas, pero no lo hace. He verificado la consulta y funciona perfectamente en un archivo PHP separado. Se muestra en pantalla todas las fechas que tienen valor > 0.

No estoy seguro si este es el método correcto para obtener las fechas de la base de datos y resaltarlas en el selector de fechas. Existe otro método utilizando JSON, pero no estoy familiarizado con él ya que no he trabajado con JSON.

¿Qué cambios puedo hacer para obtener las fechas de la base de datos y resaltarlas en el selector de fechas?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener fechas de la base de datos y resaltarlo en el selector de fechas, puedes seguir los siguientes pasos:

    1. Modifica tu consulta SQL para seleccionar únicamente las fechas necesarias, en lugar de seleccionar todas las columnas de la tabla:
      $sql = "SELECT fecha from `tabla` WHERE `valor` > 0";
      
    2. En tu código PHP, crea un array vacío para almacenar las fechas:
      $eventDates = array();
      
    3. Dentro del bucle while, añade cada fecha al array:
      while($row = $result->fetch_assoc()) {
         $date = $row['fecha'];
         array_push($eventDates, $date);
      }
      
    4. En tu código javascript, convierte el array PHP en un array javascript y asígnalo como el valor de eventDates:
      var eventDates = <?php echo json_encode($eventDates); ?>;
      
    5. Cambia la función beforeShowDay para verificar si la fecha actual se encuentra en eventDates:
      beforeShowDay: function(date) {
         var dateString = $.datepicker.formatDate('yy-mm-dd', date);
         var highlight = ($.inArray(dateString, eventDates) > -1);
         if (highlight) {
             return [true, "event", 'Texto de sugerencia'];
         } else {
             return [true, '', ''];
         }
      }
      

    Esto debería resaltar las fechas obtenidas de la base de datos en el selector de fechas. Ten en cuenta que las fechas en eventDates deberían tener el formato 'aaaa-mm-dd'.

Comments are closed.