ログイン
ユーザ名

パスワード



パスワード紛失

新規登録
参照元情報
参照なし

このフォーラムではゲスト投稿が禁止されています

このフォーラムに新しいトピックを立てることはできません

Action
list-tree ツリー構造順で表示 sort-down 投稿の新しいものから previous 前のトピック next 次のトピック

なし 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について

引用:
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プリロードもスマート。
--
安冨 伸浩 (マイサイト管理人)

なし Re: eguideのqueryについて

安富伸浩様。
冷や汗ものの大失態です。お恥ずかしい限りです。
ご指摘有難うございました。


list-tree ツリー構造順で表示 sort-down 投稿の新しいものから previous 前のトピック next 次のトピック



条件検索へ
© 2008 MySite Web Service