会員制サイトのphpを利用しているのですが
年齢検索は以下のようになっています。
年齢 = Age
会員ナンバー = UserNo
if ($MYSQL) {
if ($sAgeA != "")
$whereSQL[] = "(YEAR(CURDATE()) - YEAR(Birthday)) - (RIGHT(CURDATE(),5) < RIGHT(Birthday,5)) >= " . $sAgeA;
if ($sAgeB != "")
$whereSQL[] = "(YEAR(CURDATE()) - YEAR(Birthday)) - (RIGHT(CURDATE(),5) < RIGHT(Birthday,5)) <= " . $sAgeB;
}
else {
if ($sAgeA != "")
$whereSQL[] = "date_part('year', age(Birthday)::INTERVAL) >= " . $sAgeA;
if ($sAgeB != "")
$whereSQL[] = "date_part('year', age(Birthday)::INTERVAL) <= " . $sAgeB;
}
下記がテンプレートです。
<input type="text" name="sAgeA" value="__sAgeA__" size="5" __IME_OFF__ class="form">歳~
<input type="text" name="sAgeB" value="__sAgeB__" size="5" __IME_OFF__ class="form">歳<br />
左側のみ入力した場合は完全一致検索
以上です。何歳~何歳までと範囲検索ができます。
会員ナンバーによる検索機能を追加したいのですが、どのように記述したらよいでしょうか?
会員ナンバーは登録者順に1から始まります。
年齢検索と同じように会員ナンバーを範囲検索したいです。
よろしくお願い致します。
ものすごく断片的な情報なのではっきりとは言えないのですが、配列$whereSQLに条件を表す文字列を複数格納しているようです。おそらく、この部分の後ろで条件の文字列を一つにつなぎ合わせている箇所があるのでしょう。
従って同様にsUserNoAとsUserNoBを入力するフォームを作り、$sUserNoAと$sUserNoBと言う変数に読み込んでから(sAgeA,sAgeBについてもどこかで定義されていると思います)
if ($sUserNoA != "")
$whereSQL[] = "UserNo >= " . $sUserNoA;
if ($sUserNoB != "")
$whereSQL[] = "UserNo <= " . $sUserNoB;
という感じで条件を付け足せばいいはずです。
しかしながら、引用されている範囲のプログラムで条件説を組み立てる際にAgeという列が一度も使われていない、標準のPHPでは存在しない関数名が複数見られる、などの点からして、このプログラムはかなり難しいかかれ方をしていると思われます。
プログラム全体を手間をかけて解析するか、作成者に問い合わせることをおすすめします。