<![CDATA[ (質問)【DBAPI】の日本語解説 - My Forums]]> https://forums.modx.com/thread/?thread=56367 <![CDATA[Re: &#65288;&#36074;&#21839;&#65289;&#12304;DBAPI&#12305;&#12398;&#26085;&#26412;&#35486;&#35299;&#35500;]]> https://forums.modx.com/thread/56367/dbapi?page=2#dis-post-330802 Quote from: yama at Dec 13, 2008, 06:05 AM

MODxはphpを勉強するための土台としても向いてる気がしますね。
確かにっ!
ローカルに環境を作らなくてもすぐに試せるので、自分も『phpの勉強』にも向いてると感じましたっ!]]>
BR_TOKYO Dec 14, 2008, 09:50 AM https://forums.modx.com/thread/56367/dbapi?page=2#dis-post-330802
<![CDATA[Re: &#65288;&#36074;&#21839;&#65289;&#12304;DBAPI&#12305;&#12398;&#26085;&#26412;&#35486;&#35299;&#35500;]]> https://forums.modx.com/thread/56367/dbapi?page=2#dis-post-330801 yama Dec 13, 2008, 12:05 AM https://forums.modx.com/thread/56367/dbapi?page=2#dis-post-330801 <![CDATA[Re: &#65288;&#36074;&#21839;&#65289;&#12304;DBAPI&#12305;&#12398;&#26085;&#26412;&#35486;&#35299;&#35500;]]> https://forums.modx.com/thread/56367/dbapi?page=2#dis-post-330800 更なるアドバイスありがとうございます!! laugh
Quote from: tkfm at Dec 11, 2008, 02:55 PM

4行あるecho文をそれぞれreturnに変えちゃったってことでしょうか?
return文は基本的に1つしか駄目だと思いますので、
4行に別れているecho文で返している文字列を1つの文字列に連結して、
その連結された文字列を1回でreturnするといいと思います。
ちと試行錯誤しながら試してみたいと思います!!

『スニペット』の記述がサッパリ分からなく、
こちらのフォーラムの使い方も分からなく【MODx】自体に挫折しそうでしたが、
お陰様で『MODx熱』が再熱してきましたっ!!]]>
BR_TOKYO Dec 12, 2008, 02:31 AM https://forums.modx.com/thread/56367/dbapi?page=2#dis-post-330800
<![CDATA[Re: &#65288;&#36074;&#21839;&#65289;&#12304;DBAPI&#12305;&#12398;&#26085;&#26412;&#35486;&#35299;&#35500;]]> https://forums.modx.com/thread/56367/dbapi?page=2#dis-post-330799
Quote from: BR_TOKYO at Dec 11, 2008, 08:31 AM

Quote from: tkfm at Dec 11, 2008, 07:26 AM

ちなみに、最後のところで結果をechoしていますが、returnを使った方が良いようです。
こちらに関しましては、四行すべてreturnにしたら、なぜだか表示されなくなってしまったので、要検証いたします。
4行あるecho文をそれぞれreturnに変えちゃったってことでしょうか?
return文は基本的に1つしか駄目だと思いますので、
4行に別れているecho文で返している文字列を1つの文字列に連結して、
その連結された文字列を1回でreturnするといいと思います。

しかし、皆さんは『英文ドキュメントを読み解いて』って感じで理解を深めてらっしゃるのでしょうか??
私はそうですね~ 英語圏の人たちのフォーラムにもコメント入れたりしてます。
そうやって覚えるのが私の勉強法です。
BR_TOKYO さんのこの質問も、一緒に考えることで私の方が勉強させて頂いてますよ~ tongue
]]>
tkfmnet Dec 11, 2008, 08:55 AM https://forums.modx.com/thread/56367/dbapi?page=2#dis-post-330799
<![CDATA[Re: &#65288;&#36074;&#21839;&#65289;&#12304;DBAPI&#12305;&#12398;&#26085;&#26412;&#35486;&#35299;&#35500;]]> https://forums.modx.com/thread/56367/dbapi?page=2#dis-post-330798 ウオッ!!希望通りの表示・動作ができましたっ!!凄いですっ!!
Quote from: tkfm at Dec 11, 2008, 07:26 AM

下記のようにページタイトルをスニペット内の変数に渡します。
[!SomeSnippet? &targetTitle=`[*pagetitle*]`!]

こうすると、スニペット内の変数 $targetTitle にページタイトルの文字列がセットされます。
この状態で以下のSQL文を発行することになるんじゃないでしょうか?
$result = $modx->db->query(”SELECT * FROM `MyTable` WHERE hoge='$targetTitle'”);

こちらに関しましては、四行すべてreturnにしたら、なぜだか表示されなくなってしまったので、要検証いたします。
Quote from: tkfm at Dec 11, 2008, 07:26 AM

ちなみに、最後のところで結果をechoしていますが、returnを使った方が良いようです。


kazuike さん
更なるアドバイスありがとうございます!!
Quote from: kazuike at Dec 11, 2008, 08:02 AM

大筋あっていると思いますが、データベースに使う値はescapeした方が良いですね。
1行足して、
$targetTitle = $modx->db->escape($targetTitle);
$result = $modx->db->query(”SELECT * FROM `MyTable` WHERE hoge='$targetTitle'”);

といった感じでしょうか。
まだ内容が理解できていませんが【おまじない】的に記述をしておくことにします!


いやぁ~!!ひとまずは希望の動作ができました!!
細かなことを言うと、さらに『条件を与えて表示させたい』点もあるのですが、まずは自分で研究してみます laugh

【DBAPI】が理解できると、さらに楽しそうですねっ!!
いままで1ページ毎に<table>の記述をしていたのが、バカらしくなってしまいます kiss

また度々お世話になってしまうかもしれませんが、今後ともよろしくお願いいたします laugh


しかし、皆さんは『英文ドキュメントを読み解いて』って感じで理解を深めてらっしゃるのでしょうか??]]>
BR_TOKYO Dec 11, 2008, 02:31 AM https://forums.modx.com/thread/56367/dbapi?page=2#dis-post-330798
<![CDATA[Re: &#65288;&#36074;&#21839;&#65289;&#12304;DBAPI&#12305;&#12398;&#26085;&#26412;&#35486;&#35299;&#35500;]]> https://forums.modx.com/thread/56367/dbapi#dis-post-330797 $modx->documentObject[’****’]
も使えるかと思います。
こんな感じでしょうか。
$targetTitle = $modx->documentObject['pagetitle'];	// pagetitleの取得
$targetTitle = $modx->db->escape($targetTitle);	// 特殊文字のエスケープ
$result = $modx->db->query("SELECT * FROM `MyTable` WHERE hoge='$targetTitle'");

もう一つ、
DBAPIを使うなら、「query」の代わりに「select」というのも使えそうです。
$targetTitle = $modx->documentObject['pagetitle'];	// pagetitleの取得
$targetTitle = $modx->db->escape($targetTitle);	// 特殊文字のエスケープ
$result = $modx->db->select("*", "`MyTable`", "hoge='$targetTitle'");

※DBAPIの「select」は、4番目の引数に「order by」句の値を指定することもできます。
]]>
kazuike Dec 11, 2008, 02:30 AM https://forums.modx.com/thread/56367/dbapi#dis-post-330797
<![CDATA[Re: &#65288;&#36074;&#21839;&#65289;&#12304;DBAPI&#12305;&#12398;&#26085;&#26412;&#35486;&#35299;&#35500;]]> https://forums.modx.com/thread/56367/dbapi#dis-post-330796
Quote from: tkfm at Dec 11, 2008, 07:26 AM

$result = $modx->db->query(”SELECT * FROM `MyTable` WHERE hoge='$targetTitle'”);

大筋あっていると思いますが、データベースに使う値はescapeした方が良いですね。
1行足して、
$targetTitle = $modx->db->escape($targetTitle);
$result = $modx->db->query(”SELECT * FROM `MyTable` WHERE hoge='$targetTitle'”);

といった感じでしょうか。]]>
kazuike Dec 11, 2008, 02:02 AM https://forums.modx.com/thread/56367/dbapi#dis-post-330796
<![CDATA[Re: &#65288;&#36074;&#21839;&#65289;&#12304;DBAPI&#12305;&#12398;&#26085;&#26412;&#35486;&#35299;&#35500;]]> https://forums.modx.com/thread/56367/dbapi#dis-post-330795
Quote from: BR_TOKYO at Dec 11, 2008, 04:31 AM

データテーブルについては、新規でデータテーブルを作成しました。
MODxが使っているデータベースの中に、新しくテーブル(仮にテーブル名を MyTable としましょう)を作成されたんですね?
そのテーブルの構造がよくわかりませんが、ページタイトルと比較するフィールド名は何でしょうか?

仮にそのフィールド名を hoge としましょう。
このスニペット(名前を仮にSomeSnippetとします)を呼び出すときに、
下記のようにページタイトルをスニペット内の変数に渡します。
[!SomeSnippet? &targetTitle=`[*pagetitle*]`!]

こうすると、スニペット内の変数 $targetTitle にページタイトルの文字列がセットされます。
この状態で以下のSQL文を発行することになるんじゃないでしょうか?
$result = $modx->db->query(”SELECT * FROM `MyTable` WHERE hoge='$targetTitle'”);

こんな感じでどうでしょうか?

自分では試していませんので...動作保証はありません。 wink

ちなみに、最後のところで結果をechoしていますが、returnを使った方が良いようです。]]>
tkfmnet Dec 11, 2008, 01:26 AM https://forums.modx.com/thread/56367/dbapi#dis-post-330795
<![CDATA[Re: &#65288;&#36074;&#21839;&#65289;&#12304;DBAPI&#12305;&#12398;&#26085;&#26412;&#35486;&#35299;&#35500;]]> https://forums.modx.com/thread/56367/dbapi#dis-post-330794
Quote from: tkfm at Dec 11, 2008, 03:44 AM

どちらも動作すると思いますが、基本的にはMODxのDBAPIを使う前者(赤字の方)を使う方のが良いのでは?
ソース自体も理解しやすそうなので、コチラで進めて行きたいと思います。

Quote from: tkfm at Dec 11, 2008, 03:44 AM

テーブル名については特定されていませんが、これは独自のテーブルでしょうか? それともMODxの既存のテーブルでしょうか?
データテーブルについては、新規でデータテーブルを作成しました。]]>
BR_TOKYO Dec 10, 2008, 10:31 PM https://forums.modx.com/thread/56367/dbapi#dis-post-330794
<![CDATA[Re: &#65288;&#36074;&#21839;&#65289;&#12304;DBAPI&#12305;&#12398;&#26085;&#26412;&#35486;&#35299;&#35500;]]> https://forums.modx.com/thread/56367/dbapi#dis-post-330793 Quote from: BR_TOKYO at Dec 09, 2008, 08:53 AM

どちらのアプローチが良いのかも分からないのですが、
どちらも動作すると思いますが、基本的にはMODxのDBAPIを使う前者(赤字の方)を使う方のが良いのでは?

テーブル名については特定されていませんが、これは独自のテーブルでしょうか? それともMODxの既存のテーブルでしょうか?]]>
tkfmnet Dec 10, 2008, 09:44 PM https://forums.modx.com/thread/56367/dbapi#dis-post-330793