2013-03-15 71 views
0

我有一个很大的问题,并在网上阅读,也许我已经找到了解决方案,但它的逻辑,实在很难理解,我认为:)MySQL和PHP查询到另一个查询

我已经在我的MySQL数据库中的表,在这里,它是:

CREATE TABLE eventi (
id INT(12) NOT NULL AUTO_INCREMENT, 
autore VARCHAR(100) NOT NULL, 
tipo VARCHAR(50) NOT NULL, 
titolo VARCHAR(50) NOT NULL, 
contenuto VARCHAR(2000) NOT NULL, 
data_evento VARCHAR(30) NOT NULL, 
fine_evento VARCHAR(30) NOT NULL, 
data_finale VARCHAR(40) NOT NULL, 
ora_evento VARCHAR(8) NOT NULL, 
ora_fevento VARCHAR(8) NOT NULL, 
img VARCHAR(255) NOT NULL, 
accessi int(10) unsigned NOT NULL default '0', 
pagato SET( '0', '1') NOT NULL default '0', 
pacchetto SET( '1', '2', '3') DEFAULT NULL , -- Offerta 1=7gg, 2=14gg, 3=31gg 
data DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', 
PRIMARY KEY (id) 
); 

好吧,问题是这样的:

我卖我的客户的活动,并为此付出更多或更少,如果他们使用一种类型的“pacchetto的”。 您可以从表中看到有一列名为“pacchetto”(数据包)的列可以设置为1,2或3.如果他们选择第一个(1),他们的事件将在日期前7天显示(即“data_finale” - 英文:last_date);如果他们选择第二(2),14天以及第三(3),31天。 我有很多的客户端,如果客户端选择了数据包1,并且该事件应该在线,并且另一个客户端选择了数据包3,并且该事件应该在线,那么我必须显示两个客户端的两个事件。 我认为它的“困难”,但我已经做到了这一点,但似乎不运行,它显示我只有1个正确的事件: pastebin。 com/RscmQJ7L 感谢您的帮助!

+0

请发布您迄今为止编写的代码。 – karmafunk 2013-03-15 16:22:50

+0

pastebin.com/RscmQJ7L – 2013-03-15 16:23:33

回答

2

我建议你重新编写你的SQL查询。所有可以在1个更高性能的查询中完成。只是用你的条件或者像这样排列:

... WHERE (pacchetto = '1' AND (data_finale >= NOW() AND data_finale <= (NOW() + INTERVAL 7 DAY)) OR 
pacchetto = '2' AND (data_finale >= NOW() AND data_finale <= (NOW() + INTERVAL 14 DAY)) OR 
pacchetto = '3' AND (data_finale >= NOW() AND data_finale <= (NOW() + INTERVAL 31 DAY)) 

未测试,但你应该明白。

+0

我修改了:http://pastebin.com/tgcxAyz5 但它给了我一个错误:警告:mysql_num_rows()期望参数1是资源,布尔在/ web/htdocs/www中给出.worfut.it/home/mainevents.php在线48警告:mysql_fetch_array()期望参数1是资源,布尔在/web/htdocs/www.worfut.it/home/mainevents.php在54行 和第54行是我给你的链接中的第11行 – 2013-03-15 16:44:41

+0

你错过了a)结束。 WHERE(pacchetto ='1'AND(data_finale> = NOW()AND data_finale <=(NOW()+ INTERVAL 7 DAY))或 pacchetto ='2'AND(data_finale> = NOW()AND data_finale <=(NOW ()+ INTERVAL 14 DAY))或 pacchetto ='3'AND(data_finale> = NOW()AND data_finale <=(NOW()+ INTERVAL 31 DAY))) – karmafunk 2013-03-15 16:55:25

+0

非常感谢你!!!!!!! !!!!!!!!!!!!!!!!!!!!! – 2013-03-15 16:58:21

0

在mysql_fetch中执行mysql_query时,我遇到了类似的问题。最好避免。在一个SQL语句中执行或者将查询返回到一个数组,然后遍历该数组。另外,最好避免使用mysql_query。哟应该使用mysqli或PDO。

+0

我不知道如何使用mysqli或pdo,我没有时间学习:( – 2013-03-15 16:49:12