Seleccione la fecha actual con PHP

Esto realmente me está volviendo loco, así que por favor ayuda.

Tengo este código como se muestra a continuación, muestra una lista de fechas para los próximos 7 días.

Cosas que quiero que logre el código.

  1. Muestra "Hoy y" Mañana "en lugar de la fecha correspondiente.
  2. Una vez seleccionada una fecha, agregue la clase "actual", de esta manera se resaltará con un color diferente.
  3. "Hoy" debe seleccionarse de forma predeterminada cuando se carga la página por primera vez.

El siguiente código cumple con estos requisitos

<?php

$today = date("d-m-Y", strtotime('today')); 
$tomorrow = date("d-m-Y", strtotime('tomorrow')); 

echo '
<li><a href="?date='.$today.'">'.(($_GET['date'] == $today) ? '<span class="current"' . '>Today</span>' : 'Today').'</a></li>'; 

echo '
<li><a href="?date='.$tomorrow.'">'.(($_GET['date'] == $tomorrow) ? '<span class="current"' . '>Tomorrow</span>' : 'Tomorrow').'</a></li>'; 

for ($time = strtotime('+2 days'), $i=0; $i < 5; $time = strtotime('+1 days', $time), $i++) {$date = date("d-m-Y", $time);

echo '
<li><a href="?date='.$date.'">'.(($_GET['date'] == $date) ? '<span class="current">' : '') . date("D jS", $time) . ((isset($_GET['date']) && $_GET['date'] == $date) ? '</span>' : '') . "</a></li>";}

?>

Sin embargo, recientemente tuve que cambiar el formato de la fecha de dmY a Ymd

Como resultado de esto, mi tercer requisito, el de "Hoy" seleccionado por defecto ya no funciona.

<?php

$today = date("Y-m-d", strtotime('today')); 
$tomorrow = date("Y-m-d", strtotime('tomorrow')); 

echo '
<li><a href="?date='.$today.'">'.(($_GET['date'] == $today) ? '<span class="current"' . '>Today</span>' : 'Today').'</a></li>'; 

echo '
<li><a href="?date='.$tomorrow.'">'.(($_GET['date'] == $tomorrow) ? '<span class="current"' . '>Tomorrow</span>' : 'Tomorrow').'</a></li>'; 

for ($time = strtotime('+2 days'), $i=0; $i < 5; $time = strtotime('+1 days', $time), $i++) {$date = date("Y-m-d", $time);

echo '
<li><a href="?date='.$date.'">'.(($_GET['date'] == $date) ? '<span class="current">' : '') . date("D jS", $time) . ((isset($_GET['date']) && $_GET['date'] == $date) ? '</span>' : '') . "</a></li>";}

?>

Alguien me puede ayudar con esto por favor.

Gracias por adelantado

Tengo esto ahora

Pero me temo que no agrega la clase en la carga de la página. Así que "Hoy" no está resaltado de forma predeterminada.

¿He estropeado algo?

<?php

if(isset($_GET['date'])){

$gdate = $_GET['date'];
}

else{

$gdate = date("Y-m-d", strtotime('today')); //Or whatever arbitrary date you want.

}
$today = date("Y-m-d", strtotime('today')); 
$tomorrow = date("Y-m-d", strtotime('tomorrow')); 

echo '
<li><a href="?date='.$today.'">'.(($gdate == $today) ? '<span class="current"' . '>Today</span>' : 'Today').'</a></li>'; 

echo '
<li><a href="?date='.$tomorrow.'">'.(($gdate == $tomorrow) ? '<span class="current"' . '>Tomorrow</span>' : 'Tomorrow').'</a></li>'; 

for ($time = strtotime('+2 days'), $i=0; $i < 5; $time = strtotime('+1 days', $time), $i++) {$date = date("Y-m-d", $time);

echo '
<li><a href="?date='.$date.'">'.(($gdate == $date) ? '<span class="current">' : '') . date("D jS", $time) . ((isset($gdate) && $gdate == $date) ? '</span>' : '') . "</a></li>";}

?>

preguntado el 08 de enero de 11 a las 23:01

¿Cuál es tu pregunta? ¿Dónde estás atrapado? -

¿Qué es? $_GET['date'] poblado con? -

Hola Pekka, Bueno, quiero resolver el problema creado al cambiar el formato de fecha. -

$ _GET ['fecha'] = la fecha actual. Por ejemplo, actualmente tiene el valor de 2011-01-08 -

Debido a que $ _GET ['date'] "no está configurado" cuando la página carga inicialmente, la clase no se ha aplicado. Si puedo encontrar alguna forma de aplicar esta clase. Resolveré mi problema. -

1 Respuestas

Ok, entonces, el problema está en que $ _GET ['date'] no está configurado, ¿verdad?

Lo que tendrás que hacer es no usar $ _GET ['fecha'] en la lógica. Haz algo como esto:

if(isset($_GET['date']))
{
    $gdate = $_GET['date'];
}else{
    $gdate = date("Y-m-d", strtotime('today')); //Or whatever arbitrary date you want.
}

Luego usa $ gdate en la lógica. De esa forma, si se establece $ _GET ['date'], lo usará; de lo contrario, usará la fecha de hoy. Por cierto, no tienes que usar strtotime para obtener la fecha de hoy, solo date("Y-m-d"); lo obtendrá porque el segundo argumento para la fecha está predeterminado a la hora actual.

Respondido el 09 de enero de 11 a las 03:01

Hola Phonix. He intentado incorporar su solución, pero tengo problemas para que funcione. ¿Puede mostrarme cómo lo agregaría a mi código original? Gracias de nuevo. - mermelada mermelada

Agréguelo encima de las declaraciones de $today y $tomorrowy reemplazar todas las instancias de $_GET['date'] es $gdate, excepto el $_GET['date']s en el código anterior. - Fénix

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.