Нужно решить задачу
дано:
Существует таблица, в которой хранятся записи о неких событиях (например, сеансах кинофильмов в кинотеатре). Необходимо написать код, который выводил бы на экран все события, которые происходят (уже начались, но ещё не закончились) в промежутке времени между 10.04.2010 - 12.05.2010. Данные в таблице описаны следующими полями:
id int not null primary key
name text
begin_date datetime // дата начала события
end_date datetime // дата окончания события
я в базе прописал следущее (название файла film.sql)
/*
Navicat MySQL Data Transfer
Source Server : localhost
Source Server Version : 50140
Source Host : localhost:3306
Source Database : videofilm
Target Server Type : MYSQL
Target Server Version : 50140
File Encoding : 65001
Date: 2011-05-18 19:18:22
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `film`
-- ----------------------------
DROP TABLE IF EXISTS `film`;
CREATE TABLE `film` (
`id` int(11) NOT NULL DEFAULT '0',
`name` text NOT NULL,
`begin_date datetime` date NOT NULL,
`end_date datetime` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
-- ----------------------------
-- Records of film
-- ----------------------------
INSERT INTO `film` VALUES ('1', 'спартанцы', '2010-04-10', '2010-05-12');
INSERT INTO `film` VALUES ('2', 'стрекозец', '2010-05-10', '2010-05-01');
INSERT INTO `film` VALUES ('3', 'гладиатор', '2021-07-12', '2010-05-02');
INSERT INTO `film` VALUES ('4', 'непобедимый', '2010-05-01', '2010-05-03');
INSERT INTO `film` VALUES ('5', 'менты', '2010-04-02', '2010-05-04');
файл обрабатывающий базу данных film.sql называется bazadannix.php
в нем я прописал
<?php
$db = mysql_connect ("localhost","root","");
mysql_select_db ("video",$db);
$f = mysql_query("SELECT * FROM film '",$db);
$rows = mysql_num_rows($f);
$fields = mysql_num_fields($f);
echo "<pre>";
for ($c=0; $c<$rows; $c++) {
for ($cc=0; $cc<$fields; $cc++) {
echo mysql_result($f, $c, $cc)."\t";
echo "\n";
}
}
echo "</pre>";
?>
вобщем базу данных подключил все фильмы получается вывести а в нужном промежутке времени нет.
вот эту строку всю перепробывал переделывать $f = mysql_query("SELECT * FROM film '",$db);
выдает либо ошибка либо ничего не выдает.
1. supervalenok - 19 Мая, 2011 - 15:26:09 - перейти к сообщению
2. Alex_pac - 19 Мая, 2011 - 20:08:14 - перейти к сообщению
1) напишите адекватный запрос типа вот такого:
CODE (SQL):
скопировать код в буфер обмена
скопировать код в буфер обмена
- SELECT * FROM film WHERE `begin_date datetime` <= CURDATE() AND `end_date datetime` >= CURDATE()
2) проверьте его через php_my_admin
3) и только после этого нишите php скрипт, будучи 100% уверенным что запрос верный и все должно выводитьсяъ
и еще погуглите или тут почитайте как выводить из базы данные
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- $res = mysql_query("SELECT * FROM film WHERE `begin_date datetime` <= CURDATE() AND `end_date datetime` >= CURDATE()",$db);
- echo '<pre>';
- foreach($row as $col) {
- print $col.' | ';
- }
- print "\n";
- }