人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの質問です。

以下のようなPHP文を作りました。


$sql1 = "SELECT *
FROM ken LEFT JOIN ken_option ON ken.ken_option_select1 = ken_option.ken_option_id ";

$sql2 = "SELECT *
FROM ken LEFT JOIN ken_option ON ken.ken_option_select2 = ken_option.ken_option_id ";

$sql3 = "SELECT *
FROM ken LEFT JOIN ken_option ON ken.ken_option_select3 = ken_option.ken_option_id ";

これが「$sql10」まで続いています。
あまりにも冗長すぎるので、forで簡略化したいと思います。

$countsという変数を1から10まで増やしていけばいいと思うのですが、それを上記PHP文にどのようにはめ込んでいくのかわかりません。

for($counts = 1;$counts = 10;$counts++ ){

****************************

}

上記******の部分はどのように書けばいいでしょうか??

よろしくお願いします。

●質問者: tokyosmash
●カテゴリ:インターネット ウェブ制作
✍キーワード:ken ON PHP SELECT 作りました
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● nandedarou
●23ポイント
for ($counts = 1; $counts <= 10; $counts++) {
 $sql_name = 'sql'.$counts;
 $$sql_name = sprintf("SELECT * FROM ken LEFT JOIN ken_option ON ken.ken_option_select%s = ken_option.ken_option_id ;",$counts);
}

これで、どうでしょうか?

◎質問者からの返答

おかげ様で無事にクリアしました。

変数の概念や、文字列の取り扱いなどを少しだけ体得できたと思います。

いつもありがとうございます。


2 ● Mook
●23ポイント

ご希望の回答ではないかも知れませんが、一度に10ものSQL 文を作成する必要はないと思いますので、関数で実装し、順番に処理をしたらどうでしょうか。

<?
// 関数の定義:同じファイル内であれば、どこで定義してもOK 
function selectOption( $optionNumber ) {
 $sql = "SELECT * FROM ken ";
 $sql .= "LEFT JOIN ken_option ON ken.ken_option_select{$optionNumber} = ken_option.ken_option_id;";

 // $sql の実行
 // 結果の処理(集計、表示等)
}

// 各 SQL の処理の実行
for( $i=1 ; $i<=10 ; $i++ ) {
 selectOption( $i );
}
?>

このようにした方がスマートだと思います。

◎質問者からの返答

自分で関数が作れるんですね。

VBAを少しかじった事があるのですが似ていますね。

これは勉強になりました!


3 ● yoccola
●22ポイント

一文で書いてみました。

for($counts = 1;$counts <= 10;$counts++ ){

${sql.$counts} = "SELECT * FROM ken LEFT JOIN ken_option ON ken.ken_option_select{$count} = ken_option.ken_option_id ";

}

結果は一緒ですが。

($counts = 10 の部分で“<”が抜けていたので追加しました)


4 ● kurukuru-neko
●22ポイント

SELECT *

FROM ken LEFT JOIN ken_option

ON ken_option.ken_option_id

in (

ken.ken_option_select1,

ken.ken_option_select2,

ken.ken_option_select3,

ken.ken_option_select4,

ken.ken_option_select5,

ken.ken_option_select6,

ken.ken_option_select7,

ken.ken_option_select8,

ken.ken_option_select9,

ken.ken_option_select10)

書いた方が早くありませんか?

◎質問者からの返答

コメント欄のスクリプトありがとうございます。

勉強も兼ねて作っているものなので、ぜひぜひ試してみたいと思います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ