電子書籍の厳選無料作品が豊富!

下記のように$_GETで条件を取得して検索しているのですが、
もし取得できなかった場合はすべてのデータを取り出したいと思っています。色々と調べてみたのですが初心者ですのでどうもうまくいきません…
どのようにすればうまくいくのか分かる方がいましたら宜しくお願いします。

性別と年齢の検索
この場合は性別が設定されていないという過程で、指定の年齢に該当する男女を抽出する場合です。

$sex = $_GET["sex"];
$age = $_GET["age"];

    //性別が設定されていない場合は男女
    if($sex == NULL)
    {
     $sex = 男、女;
    }

$arr = array();
     ・
     ・
     ・ 
WHERE t_data.sex = '" .$sex. "'
AND t_data.age = '" .$age. "'

return $arr;

A 回答 (3件)

文字列だと遅いですが、


where t_data.sex in (?)
とin演算子を使ってみては?
in ('男')
in ('女')
in ('男','女')

logicとしてはすっきりします。
    • good
    • 0

PHPなどプログラムWHERE節につなげるには


真(1)にANDでつないでいくと効率的にかけます。
適当に書いたので自信はないですが、だいたい以下の
ような形がよいのでは?
(全てが未設定だと、ヒットさせない)

$sex = $_GET["sex"];
$age = $_GET["age"];
$job = $_GET["job"];
$area= $_GET["area"];

$sql_where="where 1";
if ($sex!="" ) $sql_where.=" AND `t_data`.`sex`='$sex'";
if ($age!="" ) $sql_where.=" AND `t_data`.`age`='$age'";
if ($job!="" ) $sql_where.=" AND `t_data`.`job`='$job'";
if ($area!="") $sql_where.=" AND `t_data`.`area`='$area'";
if ($sex=="" and $job=="" and $job=="" and $area=="") $sql_where="where 0";
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
非常に分かりやすかったです。一度試してみることにします。

お礼日時:2005/12/26 16:07

>性別が設定されていない場合は男女



これは無意味なのでやめましょう。
whereにsexを指定しなければ、よいだけなので。
ただ、今のやり方だと、絞込みがほとんどなくなってしまう
恐れもありますので、最低限の条件がない場合は
SQLにデータを投げずに、条件設定エラーのような表記を
クライアントに返すような仕組みが必要だとおもいます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。「性別、年齢、地域、職業」すべて設定してないとエラーになるんです…一つでも条件があれば抽出したいのですがそれをどうやってPHPファイルに記述すればいいのか…もう少してみます。

お礼日時:2005/12/23 23:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す