2012-07-17 5 views
0

Essayer de configurer une page qui met à jour automatiquement en fonction de la date et de l'heure de l'utilisateur.PHP si basé sur la date actuelle du système

Besoin de lancer une promotion pendant 2 semaines et chaque jour il doit changer l'image affichée. La lecture de http://www.thetricky.net/php/Compare%20dates%20with%20PHP était-pour avoir une meilleure idée sur le temps de php et la date functions.Somewhat difficile à tester, mais je essentiellement resté coincé sur:

<?php 
$dateA = '2012-07-16'; 
$dateB = '2012-07-17'; 

if(date() = $dateA){ 
    echo 'todays message'; 
} 
else if(date() = $dateB){ 
    echo 'tomorrows message'; 
} 
?> 

Je sais que la fonction ci-dessus est faux comme configuration, mais je pense cela explique ce que je vise. L'heure n'est pas pertinente, elle doit basculer à minuit pour que la date change de toute façon.

+0

'' == if' exige 'ou' '===. Vous utilisez un seul '='. Est-ce qu'il compile? – Lion

Répondre

2

Vous semblez avoir besoin ceci:

<?php 
$dateA = '2012-07-16'; 
$dateB = '2012-07-17'; 

if(date('Y-m-d') == $dateA){ 
    echo 'todays message'; 
} else if(date('Y-m-d') == $dateB){ 
    echo 'tomorrows message'; 
} 
?> 
+0

+1, Bien que vous deviez probablement appeler: 'date ('Y-m-d')' à la place –

+0

Vous avez raison, corrigé –

+0

$ today = date ('Y-m-d'); if ($ today === $ dateA) {} autre après 10 jours vous avez PHP pour calculer date() 10 fois;) EDIT, DOH, bigkm a dit la même chose, désolé ... – Cups

0

Je voudrais aller un pas en arrière et la poignée via des noms de fichiers. Quelque chose comme:

<img src=/path/to/your/images/img-YYYY-MM-DD.jpg alt="alternative text"> 

Donc, votre script ressemblerait à quelque chose comme ceci:

<img src=/path/to/your/images/img-<?php echo date('Y-m-d', time()); ?>.jpg alt="alternative text"> 
+1

qu'est-ce que c'est? – lusketeer

+0

C'est un moyen d'afficher une image à une date spécifique. – PascalPrecht

2

vous voulez

<?php 
$today = date('Y-m-d') 
if($today == $dateA) { 
    echo 'todays message'; 
} else if($today == $dateB) { 
    echo 'tomorrows message'; 
} 
?> 
+0

Merci, cela devrait faire l'affaire. – RemeJuan

0

Si vous allez faire des calculs de date, je vous recommande d'utiliser classe PHP DateTime:

$promotion_starts = "2012-07-16"; // When the promotion starts 

// An array of images that you want to display, 0 = the first day, 1 = the second day 
$images = array( 
    0 => 'img_1_start.png', 
    1 => 'the_second_image.jpg' 
); 

$tz = new DateTimeZone('America/New_York'); 

// The current date, without any time values 
$now = new DateTime("now", $tz); 
$now->setTime(0, 0, 0); 

$start = new DateTime($promotion_starts, $tz); 
$interval = new DateInterval('P1D'); // 1 day interval 
$period = new DatePeriod($start, $interval, 14); // 2 weeks 

foreach($period as $i => $date) { 
    if($date->diff($now)->format("%d") == 0) { 
     echo "Today I should display a message for " . $date->format('Y-m-d') . " ($i)\n"; 
     echo "I would have displayed: " . $images[$i] . "\n"; // echo <img> tag 
     break; 
    } 
} 

Étant donné que la promotion commence 07-16, this displays ce qui suit, car il est maintenant le deuxième jour de la promotion:

Today I should display a message for 2012-07-17 (1) 
I would have displayed: the_second_image.jpg 
Questions connexes