Autor Zpráva
capricorn
Profil
Zdravím,

mám následující tabulku

CREATE TABLE IF NOT EXISTS `opening_hours` (
  `id` int(11) NOT NULL,
  `day` tinyint(4) NOT NULL,
  `time_open` time DEFAULT NULL,
  `time_close` time DEFAULT NULL,
  `time_close_pause` time DEFAULT NULL,
  `time_open_pause` time DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

INSERT INTO `opening_hours` (`id`, `day`, `time_open`, `time_close`, `time_close_pause`, `time_open_pause`) VALUES
(3, 0, NULL, NULL, NULL, NULL),
(3, 1, '08:00:00', '18:00:00', '12:00:00', '12:30:00'),
(3, 2, '08:00:00', '18:00:00', '12:00:00', '12:30:00'),
(3, 3, '08:00:00', '18:00:00', '12:00:00', '12:30:00'),
(3, 4, '08:00:00', '18:00:00', '12:00:00', '12:30:00'),
(3, 5, '08:00:00', '18:00:00', '12:00:00', '12:30:00'),
(3, 6, NULL, NULL, NULL, NULL);


a potřebuji, aby dneska se nevypsal žádný řádek, jelikož je neděle(0), ale zítra např. v 9.00 hodin se řádek vypsal, protože bude pondělí (1) a aktuální čas bude v rozmezí mezi 8.00 a 18.00 hod.
David1256
Profil
Tak ten výpis dat ošetři nějakou podmínkou. Když nechceš, aby se ti data v neděli vypisovala dej podmínku před výpis třeba takto.
 $date=Date("w");
   if ($date!=0)
   {
   výpis dat
   }

A takhle si tam "nasázej" ty podmínky, jak potřebuješ.
panther
Profil
David1256:
a když změní otevíračku v DB, bude muset překopat celý script. To by to v DB nemusel mít vůbec.

capricorn:
filtruj to klidně už v selectu, http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format, případně potom i http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between
capricorn
Profil
David1256:
Díky, ale to já nepotřebuji, v dotaze si vyhledám všechny řádky např. pro pondělí a potřebuji další podmínku, která vypíše jen řádky, které odpovídají aktuálnímu času.

panther:

S filtrací si vím rady, ale nevím si rady s tím časovým rozmezím.

SELECT * FROM opening_hours WHERE DAY = DATE_FORMAT( NOW( ) , '%w' )


A jak dál?
panther
Profil
capricorn:
SELECT *
FROM `opening_hours`
WHERE   DAY = DATE_FORMAT( NOW() , '%w' ) AND
        (
            DATE_FORMAT(NOW(), '%H: %i: %s') BETWEEN `time_open` and `time_close_pause` OR
            DATE_FORMAT(NOW(), '%H: %i: %s') BETWEEN `time_open_pause` and `time_close`
        )
capricorn
Profil
panther:

Díky. Po menší úpravě to vrací správné řádky.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0