根据日期和时间显示和隐藏div

时间:2015-01-30 12:58:12

标签: php

我想根据日期和时间显示和隐藏div。 我对PHP没有多少经验,但我想我找到了一个代码。但我不知道如何排序以及如何设置代码。

我希望它在营业时间内显示如下: http://boxmedia.no(首页底部)。

这是一个包含一个字段和一个按钮的表单。它是挪威语,并说: 在这里填写您的电话号码。按下这里,然后我们会在10分钟后给你回电话

这是表格的代码:

<div class="container"> <div class="row-centered main-btn ring_me"> 
<?php 
echo do_shortcode('[contact-form-7 id="249" title="Untitled"]'); 

?> </div> <!--div class="row-centered sec-btn" style="display:none;">
<span><input max-size="30" type="text" id="contact_no" name="contact_no"/>
</span><span class="btn btn-success btn-lg">
<font><font class="goog-text-highlight">
<a href="<?php echo home_url(); 

?>/kontakt-oss">Send </a> </font></font> </span></div--> </div>

这是我认为会在开放时间显示的代码:上午8点到下午4点。 而不是在周末。

但是我在哪里将其放在上面的现有代码中:

<?php date_default_timezone_set('Europe/Oslo');
$currentHour = date("H");
$openTime = 8;
$closeTime = 16;
if ($currentHour >= $openTime && $currentHour < $closeTime){
      $css = 'display:block;';
}else{
      $css = 'display:none;';
}

echo '<style type="text/css">.timeBasedLink {'.$css.'}</style>'; ?>


if (date("w") == 0 || date("w") == 6 || $currentHour < $openTime || 
$currentHour >= $closeTime)

{
    $css = 'display:none;';
}
else
{
    $css = 'display:block;';
}

--------------- 2015年2月2日新增---------------

这是要添加到我的css文件的代码吗? 它放置正确吗? 是类.TimeOn? 我如何将TimeOn连接到ring_me或调用类?

.ring_me input[type="tel"] {
    width: 258px;
    margin-right: 20px;
.timeOn {
display:block;
}
.timeOff {
display:none;
}
}

这是CSS中的另一个地方:

.ring_me input[type="tel"] {
.timeOn {
display:block;
}
.timeOff {
display:none;
}
font-size: 20px;
line-height: 24px;

4 个答案:

答案 0 :(得分:2)

好。您的代码存在一些问题,让我们从那里开始。第一:

date_default_timezone_set(‘Europe/Oslo');

这些是错误的引号,需要这样:

date_default_timezone_set('Europe/Oslo');

PHP只会识别单引号(&#39;)和双引号(&#34;&#34;)来处理这类事情。

第二,你的商店什么时候开门?你在这里设置关闭时间:

$closeTime = 9;

至9.但您使用的是$currentHour = date("H"); 24小时代码。这意味着您的商店将仅在上午8点至上午9点之间被视为开放。也许你的意思是晚上9点,这将是:

$closeTime = 21;

第三,就在这里:

echo '<style type="text/css">.timeBasedLink {'.$css.'}</style>'; ?>

您过早地使用?>结束PHP标记。这将停止处理以下所有PHP代码。

第四,您还会生成内联CSS,这很糟糕,具体取决于商店是打开还是关闭。您可以简单地设置两个CSS类(在PHP代码之外,尽管如此)并保存自己的额外处理,如下所示:

<style type="text/css">
    .timeOn {
        display:block;
    }
    .timeOff {
        display:none;
   }
</style>

请注意,这是内联CSS,应该放在普通的CSS文件中。

最后,为了解决您的实际问题,发送按钮当前包含在注释标记中:

<!-- // Comment Goes here -->

我们要去除这些标签,然后简单地在DIV中回显我们的新PHP变量(作为一个类)来隐藏它或显示它,如下所示:

<div class="row-centered sec-btn <?php echo $css; ?>">

这将是我对上述代码的实现:

<?php 
    // Basic Variable Declaration
    date_default_timezone_set('Europe/Oslo');
    $currentHour = date("H");
    $openTime = 8;

    // This needs to be 21, if using "H" and the time is 9
    $closeTime = 21;

    // Here we check to see if we are open, and in a good week
    if ($currentHour >= $openTime && $currentHour < $closeTime && (date("w") != 0 || date("w") != 6)){
          // If we are, set our class to off.
          $css = 'timeOn';
    } else {
          // Otherwise, set our class to off.
          $css = 'timeOff;';
    }

    // This code should really go in a CSS file
    // And be inclunded in the header
    echo '<style type="text/css">';
        // This is our class for showing the block
        echo '.timeOn {
                display:block;
              }';
        // This is our class for hiding the block
        echo '.timeOff {
                display:none;
               }';      
        echo '</style>';

    // We're ending the PHP Tag here
?>

<div class="container"> 
    <div class="row-centered main-btn ring_me <?php echo $css; ?>"> 
        <?php 
            echo do_shortcode('[contact-form-7 id="249" title="Untitled"]'); 
        ?> 
    </div>
</div>

请注意,您在最终DIV中还有一组额外的<font>个标签,并没有做任何事情。

这个解决方案不是100%正确(我在PHP中留下了CSS生成,所以我可以为它添加注释),但它使用定义的类,只是根据我们在设置的PHP Hour变量改变类。脚本的开头。这是一种更清晰的方法,在生成页面之前需要更少的PHP处理。

答案 1 :(得分:0)

您可以将它添加到样式表下方的header.php中。查看echo部分,您需要更改所使用的类&#34; timeBasedLink&#34;到你的表格输出。

echo '<style type="text/css">.timeBasedLink {'.$css.'}</style>'; ?>

答案 2 :(得分:0)

你应该考虑让它成为一个方便的功能

<?php
function hide_show_from_date()
{
  date_default_timezone_set('Europe/Oslo');
  $currentHour = date("H");
  $openTime = 8;
  $closeTime = 9;
  $css = 'block';
  if ($currentHour >= $openTime && $currentHour < $closeTime)
  {
      $css = 'block';
  }
  else
  {
      $css = 'none';
  }
  if (date("w") == 0 || date("w") == 6 || $currentHour < $openTime || $currentHour >= $closeTime) {
      $css = 'display:none;';
  }
  else {
      $css = 'display:block;';
  }
  return $css;
}
?>

<div style="display:<?php hide_show_from_date();?>">
Your content here
</div>

答案 3 :(得分:0)

首先理论:PHP在页面加载之前和HTML编写之前运行。这意味着你不能简单地包括&#34;包括&#34; PHP页面中的PHP。您必须在PHP页面中包含HTML。

要做到这一点,只需创建一个扩展名为.php的页面(而不是.html),添加HTML,然后将PHP代码放在正确的标记内。

<?php
  //Please see Mark's answer for a good example of the code.
?>

这与普通的html页面没有任何区别。您将拥有HTML页面的常规结构,然后只需在<?php ?>标记之间添加PHP代码即可。像这样:

<html>
<head>
  //This is where you link an external .css sheet
  <link href="Path-to-file/FILENAME.css" rel="stylesheet" type="text/css">
</head>
<body>

  <?php
    //Some PHP code
  ?>

  <!--Form Code goes here-->
  <form></form>

</body>
</html>

基本上你还在编写一个HTML页面,但是不是手动编写它,而是使用PHP根据一周的时间/星期编写不同的HTML。

有关CSS的信息,请参阅http://www.w3schools.com/css/css_howto.asp

这也可以使用Javascript + PHP完成。首先使用AJAX调用单独的PHP页面,如果它在正确的时间内并显示表单,则返回TRUE(参见https://stackoverflow.com/a/7165616/4126804)。