2013-12-16 4 views
1

У меня есть время начала и окончания в базе данных MYSQL. Это тип типа данных. Как отобразить мой DIV в течение времени, указанного в базе данных? Любые намеки?Показать DIV в определенное время

Ниже описано, как время начала и окончания хранения в базе данных.

2013-12-10 01:40:00 | 2013-12-10 13:40:00 
+0

Вы могли бы искать решения Javascript вместо. 'setTimeout()' поможет. –

+0

@castis Я попытался использовать if..else, но потерялся на полпути. – user3103739

+0

покажите нам код, который вы пробовали использовать. – castis

ответ

0

У вас есть div с идентификатором div1. Вы устанавливаете свой visibility:hidden или display:none в свой CSS. Вы включаете библиотеку jQuery (потому что код примера, который я вам даю, будет использовать), желательно в <head>.

На вашем PHP сначала нужно запросить время из базы данных. Затем вы должны использовать JavaScript setTimeout() функцию для синхронизации. Если вы передаете параметр времени, оно должно быть в миллисекундах, вот полный «ручной»: manual

Это будет что-то вроде

$(document).ready(function(){ 
setTimeout(function(){$('#div1').show();},3000); 
}); 

3000 означает 3000 миллисекунд.

0

Запустить запрос mysql, который получает результаты, если столбцы со временем вычисляются. Пример запроса:

SELECT * FROM table WHERE CURTIME() BETWEEN starttime AND endtime 

Если запрос возвращает true, вы можете показать div. В false, текущее время не находится в этом диапазоне.

$q= "SELECT * FROM table WHERE CURTIME() BETWEEN starttime AND endtime;"; 

$run = // run query here 

if ($run) { 
    echo '<div>Welcome to my page!</div>' 
} 
else { 
    echo '<div>Access denied!</div>'; 
} 
0

Необходимо сравнить текущее время со временем в вашей базе данных. PHP предоставляет несколько различных способов сделать это. Например, вы можете использовать StrToTime (http://php.net/strtotime):

/** 
* Convert times to unix timestamp 
*/ 
$time = strtotime('2013-12-10 10:40:00'); 
$start = strtotime('2013-12-10 01:40:00'); 
$end = strtotime('2013-12-10 13:40:00'); 

if ($time >= $start && $time <= $end) { 
    /** 
    * We are between the two times, so display the div. 
    */ 
    ?> 
    <div>Blah blah blah</div> 
    <?php 
} 

Обратите внимание, что в моем примере я вручную определить $ времени. Для динамической страницы вы должны использовать следующее, чтобы получить текущее время в форме отметки времени Unix.

$time = time(); 

PHP также имеет Задан класс, который будет делать то же самое (http://www.php.net/manual/en/class.datetime.php).

0

Может быть что-то вроде этого:

<script language="javascript"> 
    // get time diff in milliseconds between server endDate 
    // and the client-side browser's time 
    var timeDiff = new Date() - <?php echo $myDBEndDate ?>; 

    // hide in X amount of milliseconds 
    if (timeDiff > 0) { // check if positive (in future) number 
     setTimeOut(function() { 
      $('#myDiv').hide(); 
     },timeDiff); 
    } else 
     $('#myDiv').hide(); 
    } 
</script> 

Или только в PHP и MySQL (но только скрыть DIV, если страница перезагружается, а не жить)

SELECT * FROM myTable WHERE startDate <= Now() AND endDate >= Now(); 

if ($rowCount > 0) { 
    echo '<div></div>'; 
} 
Смежные вопросы