Login
Username

Password



Lost Password?

Register now!
Referer
No referer

Guests cannot post in this forum

You cannot start a new topic in this forum

Action
list-tree Tree order sort-down Newest first previous Previous topic next Next topic

なし eguideのqueryについて

「サイト構築」は素晴らしいですね!
あまりにお手軽なので、まるでlocalhostでカスタマイズしている感覚です。

本日は、イベント案内の最初の画面で発行されるqueryについて質問させていただきます。

発行するqueryは以下のようですが、ORDER BY句の前の(expire1268380972)がよくわかりません。

SELECT e.eid, cdate, title, summary, closetime, IF(expersons IS NULL,persons, expersons) persons, IF(exdate,exdate,edate) edate, IF(x.reserved,x.reserved,o.reserved) reserved, reservation, uid, status, style, counter, topicid, exid, exdate FROM 8821c7_eguide e LEFT JOIN 8821c7_eguide_opt o ON e.eid=o.eid LEFT JOIN 8821c7_eguide_extent x ON e.eid=eidref WHERE status=0 AND ((expire>=edate AND expire>1268380972) OR (expire1268380972)) ORDER BY edate ASC

生成されたqueryでは、ソースコード index.php の 26行目
(IF(exdate,exdate,edate)+expire)>$now)
の部分の不等号 > が消えているようなのです。

エラーにはなっておりません。
この辺りをカスタマイズしようかと思っておりますので、その前に疑問を解決しておきたいと考えております。
なにとぞよおろしくお願いいたします。

なし Re: eguideのqueryについて

これは、イベント案内のどの版の話でしょうか?
現状の eguide 2.6 を使った場合、記載されているような SQL にはなってないはずです。

掲載されている案内の一覧を取得する部分と思いますが、いまは次のような SQL になっています。
SELECT e.eid, cdate, title, summary, closetime,
    IF(expersons IS NULL,persons, expersons) persons,
    IF(exdate,exdate,edate) edate,
    IF(x.reserved,x.reserved,o.reserved) reserved,
    reservation, uid, status, style, counter, topicid, exid, exdate
  FROM e76c2d_eguide e 
    LEFT JOIN e76c2d_eguide_opt o ON e.eid=o.eid 
    LEFT JOIN e76c2d_eguide_extent x ON e.eid=eidref
  WHERE status=0 AND ((expire>=edate AND expire>1268459341) OR (expire<edate AND (IF(exdate,exdate,edate)+expire)>1268459341))
  ORDER BY edate ASC LIMIT 10

なし Re: eguideのqueryについて

すばやい御回答有難うございました。
versionも記入せずに大変失礼いたしました。eguideのversionは2.60です。
ソースコードでは御回答にあるようなqueryになると思われますが、echoでqueryを画面表示させてみると(IF(exdate,exdate,edate)+expire)>1268380972)になるはずの部分が(expire1268380972)になっていましたので...。
もう少し調べてみます。

なし Re: eguideのqueryについて

Quote:
echoでqueryを画面表示させてみると
って、エスケープもせずにブラウザに出したら、正しく表示はされませんよ。
WHERE status=0 AND ((expire>=edate AND expire>1268459341) 
    OR (expire<edate AND (IF(exdate,exdate,edate)+expire)>1268459341))
タグと解釈されて表示されなかっただけの話でしょう。

SQL を見たいなら、XOOPS の管理メニューの全般設定で、「デバッグモードを有効にする」を「MySQL/Blocksデバッグ」にすればいいですよ。
あるいはSuinDebugプリロードもスマート。
--
Nobuhiro YASUTOMI (MySite Users Webmaster)

list-tree Tree order sort-down Newest first previous Previous topic next Next topic



Advanced search
© 2008 MySite Web Service