PHP tarihe dayalı ekran görüntüsü

5 Cevap php

Yerde benim bilgisayarda ben tarihe dayalı bir görüntüyü gösteren bir PHP komut dosyası vardı, bu beni belirli tarihlerde farklı görüntüleri veya seçilen tarihler arasında ve geçerli tarih ile listelenen biri değildi varsayılan bir tarihi görüntülemek için izin verecek göstermek için belirli bir görüntü.

Geçenlerde olsa benim sabit sürücülerden biri ile ilgili bir sorun vardı ve dosyaların bir yük kaybetti ve ben hiçbir yerde bulamıyorum bu komut, aralarında olanlardan biriydi korku.

Ama komut dosyası bulundu nerede hatırlamıyorum. Tüm çevrim üzerinde baktım ve tekrar bulamıyorum. Ben burada olduğunu düşündüm, ama çevresinde arama sonra ben ne yazık ki hayal meyal böyle bir şey, bırakın senaryoyu kendisi bulamıyorum. <_ <

Belki Ben ("php ekran görüntüsü tarihe" gibi şeyler deniyorum), ama benzer bir şey bulma yaşıyorum yanlış arama terimlerini kullanıyorum.

Herkes Yukarıdaki tarife uyan bir şey biliyor mu, ya da bunu yapmak için en iyi yol önerebilir?

Ben geçerli tarih belirtilmiş belirli bir görüntü var ve muhtemelen bir olgu / mola kod bloğu if / else daha bunu yapmak için daha iyi bir yolu olabilir eğer ben bir varsayılan görüntü belirtmeniz gerekir düşünüyorum ....

Herkes bunu yapmak için en iyi yol üzerinde herhangi bir düşünce var mı?

Düzenleme: Teşekkürler önerileriniz için herkes. Ben bunu başarmak için kolay bir yol görünüyordu / else / elseif eğer, ama sonunda kullanarak özellikle istekli değildi. Ben bunu yaptım yolu muhtemelen kodu-bilge en etkili yol değil, ama şimdi için çalışıyor.

(Kod parçası - bu oldukça uzun olduğunu, bu yüzden tüm delik olmaz)

`` Tamam .... Hmmm, teşekkürler. Ben çalışma değildi yapmaya çalışıyor neden şeyi açıklıyor! : Lol:

Bir foreach döngüsü ve Graves gibi bunu yapmanın başka yolları gördük rağmen, ben sonunda if / elseif / else ile sıkışmış. Muhtemelen bunu yapmanın kod-bilge en etkili yol değil, ama bu sonunda çalıştı (zaten kod parçası - bu çok uzun bir liste var ve ben bunu her ile delik olmaz!):

<?php 
    // Macmillan Cancertalk week (21-25 Jan)
    if ((date('m') == 01) && (date('d') >= 21) || (date('m') == 01) && (date('d') <= 23)) {
    echo "<img src=\"images/ribbons/cancertalk.gif\" height=\"145\" width=\"175\" alt=\"Macmillan Cancertalk\" /><br /><h6 class=\"awareness\">Macmillan Cancertalk Week <span class=\"morelink\"><a href=\"the-bookstall-cancer-links-and-resources.php\">more...</a></span></h6>";
    }   
    // Macmillan Cancertalk week (21-25 Jan) and Cervical Cancer Awareness Week (24-30 Jan) 
    else if ((date('m') == 01) && (date('d') == 24)) {
    echo "<img src=\"images/ribbons/macmillan_cervical.gif\" height=\"145\" width=\"175\" alt=\"Macmillan Cancertalk and white and teal awareness ribbons\" /><br /><h6 class=\"awareness\">Macmillan Cancertalk Week &amp; Cervical Cancer Awareness Week <span class=\"morelink\"><a href=\"the-bookstall-cancer-links-and-resources.php\">more...</a></span></h6>";
    }   
    // Macmillan Cancertalk week (21-25 Jan), Cervical Cancer Awareness Week (24-30 Jan) and Beating Bowel Cancer - Be Loud Be Clear Week (25-31 Jan)   
    else if ((date('m') == 01) && (date('d') == 25)) {
    echo "<img src=\"images/ribbons/macmillan_cervical_bowel.gif\" height=\"145\" width=\"175\" alt=\"Macmillan Cancertalk, white & teal awareness ribbons, and blue & brown cancer awareness ribbons\" /><br /><h6 class=\"awareness\">Macmillan Cancertalk Week, Cervical Cancer Awareness Week, and Be Loud Be Clear Week (Beating Bowel Cancer) <span class=\"morelink\"><a href=\"the-bookstall-cancer-links-and-resources.php\">more...</a></span></h6>";
    }
    // Beating Bowel Cancer - Be Loud Be Clear Week (25-31 Jan) 
    else if ((date('m') == 01) && (date('d') == 31)) {
    echo "<img src=\"images/ribbons/brown_blue_ribbon.gif\" height=\"145\" width=\"175\" alt=\"blue and brown cancer awareness ribbons\" /><br /><h6 class=\"awareness\">Be Loud Be Clear Week (Beating Bowel Cancer) <span class=\"morelink\"><a href=\"the-bookstall-cancer-links-and-resources.php\">more...</a></span></h6>";
    }   
    // International Childhood Cancer Day (15 Feb)
    else if ((date('m') == 02) && (date('d') == 15)) {
    echo "<img src=\"images/ribbons/gold_ribbon.gif\" height=\"145\" width=\"175\" alt=\"gold cancer awareness ribbons\" /><br /><h6 class=\"awareness\">International Childhood Cancer Day <span class=\"morelink\"><a href=\"the-bookstall-cancer-links-and-resources.php\">more...</a></span></h6>";
    }       
    // Gynaecological Cancers Campaign (1 Feb to 31 March)
    else if ((date('m') == 02) && (date('d') >= 01) || (date('m') == 02) && (date('d') <= 28)) {
    echo "<img src=\"images/ribbons/teal_ribbon.gif\" height=\"145\" width=\"175\" alt=\"teal cancer awareness ribbons\" /><br /><h6 class=\"awareness\">Gynaecological Cancers Campaign (1st February &ndash; 31st March) <span class=\"morelink\"><a href=\"the-bookstall-cancer-links-and-resources.php\">more...</a></span></h6>";
    }   
    else {
    echo "<a class=\"awareness_link\" href=\"the-bookstall-cancer-links-and-resources.php\"><img src=\"images/ribbons/default_ribbon.gif\" height=\"145\" width=\"175\" alt=\"calendar\" /><br /><h6 class=\"awareness\">Check our awareness calendar for information about awareness events &ndash; <span class=\"morelink\"><a href=\"the-bookstall-cancer-links-and-resources.php\">more...</a></span></h6></a>";
    }
?>

5 Cevap

/ else farklı görüntü göstermek için yapıları eğer geçerli ay / gün / yıl kontrol etmek için date() işlevini kullanmak ve bazı basit olabilir.

Bunu yapmak için en iyi yolu muhtemelen sadece görüntülemek için GD kullanmak olacaktır.

<?php

// Create a 75*15 image
$im = imagecreate(75, 15);

// White background and black text
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 0);

// Write the date at the top left, offset by 2px to the right
imagestring($im, 5, 2, 0, date("m/d/y"), $textcolor);

// Output the image
header('Content-type: image/png');

imagepng($im);
imagedestroy($im);

?>

Eğer daha önce yapıştırmadan / kopyalama varmış gibi geliyor, ama bu gerçekten bunun için eğer öğrenmek için iyi bir pasajı. Aradığınız temel yapıdır:

$today = getdate();
$day = $today['wday'];
if ($day == 1 OR $day == 2 OR $day == 3){
    echo "<img src='whatever image you want'>";
}
elseif ($day == 4 OR $day ==5){
    echo "<img src='another image' />";
}
else { echo "<img src='default image' />";}

Temelde tarih bulmak ve IF / ELSE döngüler kullanarak, bugün bir aralık veya başka olup olmadığını belirlemek. O IF, göstermek istediğiniz görüntüyü echo.

Bu örnekte, değişken $ gün sayısı 1-7 olarak ayarlanır. Bu Pazartesi Salı ya da Çarşamba günü ise 1 == Pazartesi, 2 == Salı, 3 == Çarşamba ..., o bir görüntü gösterir, (if ($day == 1 OR $day == 2 OR $day == 3) hat), Perşembe / Cuma, aksi halde başka bir gösterir, ve gösteren hafta sonu gösteriyor "default" görüntü. Açıkçası bu, istediğiniz gün / tarihleri ​​ÖZDEŞ durum değildir, ancak bu yapının böyle bir şey size yardımcı olacaktır.

Karşılaştırmak istediğiniz Tarihleri ​​sadece ne toplama ile yardım için PHP Date reference göz atın.

Bu benim konuk belki hangi yıl umurumda değil, bu yüzden bu çözüm sadece ay ve tarih düşünün benim çözümdür:

function image_of_date($default, $options) {
    $today = date('md');
    foreach ($options as $item) {
        $src = $item[0];
        $begin = $item[1];
        $end = (3===count($item))? $item[2] : $begin;
        $begin = date('md', strtotime($begin));
        $end = date('md', strtotime($end));
        if ($today >= $begin && $today <= $end) {
            return $src;
        }
    }
    return $default;
}


echo image_of_date('default.png', array(
    array('jan-01.png', 'Jan 1'),
    array('feb.png', 'Feb 1', 'Feb 29')
));
switch(date('Y-m-d')) {
  // multiple dates with same image
  case '2010-02-15':
  case '2010-02-07':
    print '<img src="/path/to/image.jpg" alt="" />';
    break;
  // really long ranges don't work all that well in this solution
  case '2010-03-01':
  case '2010-03-02':
  case '2010-03-03':
  case '2010-03-04':
  case '2010-03-05':
  case '2010-03-06':
  case '2010-03-07':
  case '2010-03-08':
  case '2010-03-09':
  case '2010-03-10':
    print '<img src="/path/to/image.jpg" alt="" />';
    break;
  // specific date image
  case '2010-12-25':
    print '<img src="/path/to/christmas.jpg" alt="" />';
    break;
  // fallback image
  default:
    print '<img src="/path/to/default.jpg" alt="" />';
    break;
}

Eğer largeish tarih aralıkları bir sürü yapıyorsanız, bu yıkmak edeceğiz, ama birkaç ufacık aralıkları ve belirli tarihler için iyi çalışır.