PHP / MySQL запрос - если текущее время / дата в расписании - PullRequest
2 голосов
/ 21 марта 2012

Я пытаюсь разработать простой график на основе php ...

Это моя таблица базы данных: enter image description here

Допустим, текущее время / дата: 2012-03-21 02:00:00

PHP-скрипт должен повторить: Meeting 2

У меня есть часть скрипта, но я не знаю, что делать дальше

<?php
$con = mysql_connect("localhost","root","");
if (!$con){die('Could not connect: ' . mysql_error());}
mysql_select_db("schedule", $con);

$current_time = date("Y-m-d H:i:s");

$result = mysql_query("SELECT * FROM events");

while($row = mysql_fetch_array($result)){

  echo $row['Subject'];
}
mysql_close($con);
?>

Как отфильтровать запрос по текущему времени и запланированной теме?Спасибо!

(если current_time находится между StartTime и EndTime - эхо это Subject)

Ответы [ 7 ]

7 голосов
/ 21 марта 2012

Попробуйте этот запрос

SELECT * FROM events WHERE NOW() BETWEEN StartTime AND EndTime
1 голос
/ 21 марта 2012

Оператор mysql МЕЖДУ может быть полезным.

$startDate = gmdate('Y/m/d/ H:i:s','2012-03-21 02:00:00');
$endDate   = gmdate('Y/m/d/ H:i:s','2012-03-21 02:23:59');

$sql = 'select subject from events 
  where startTime between "'.gmdate("Y/m/d H:i:s", $startDate) . 
  '" and "' . gmdate("Y/m/d H:i:s", $endDate).'") ';
1 голос
/ 21 марта 2012

Ваш запрос должен понравиться

$result = mysql_query("SELECT * FROM events WHERE current_time between startTime and endTime);
1 голос
/ 21 марта 2012

Пожалуйста, попробуйте следующий запрос

select * from events where current_time between startTime and endTime
1 голос
/ 21 марта 2012

Попробуйте select * from events where StartTime <= NOW() and EndTime >= NOW() NOW() даст вам текущее время в MySQL.

0 голосов
/ 21 марта 2012
putenv("TZ=Asia/Calcutta");  // To Set TimeZone
$now = date("Y-m-d H:i:s");
$sql = "select * from events where '$now' between StartTime and EndTime";
0 голосов
/ 21 марта 2012

Во-первых, вам нужно преобразовать StartTime и EndTime во временную метку, используя strtotime, чтобы вы могли сравнить ее с текущим временем (то же самое относится и к текущему времени):

http://php.net/manual/en/function.strtotime.php

Тогда просто скажите, если current_time> StartTime AND current_time

while($row = mysql_fetch_array($result)){
  $startTime = strtotime($row['StartTime']);
  $endTime = strtotime($row['StartTime']);
  if (strtotime($current_time) > $startTime && strtotime($current_time) < $endTime
      echo $row['Subject'];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...