1

ユーザーが 18 歳以上または 18 歳未満の候補者を検索できる検索を実装しようとしています。

検索の age コンポーネントの html:

  Age<select id ='eighteen' name="eighteen" size="1" >
  <option value="Below Eighteen">Below Eighteen</option>
  <option value="Above Eighteen">Above Eighteen</option>
  <option value="Any">Any</option>
   </select> 

PHPコード:

$age = trim($_POST['eighteen']);    

$query2 = mysql_query("SELECT * FROM p_candidate WHERE YEAR(CURDATE())-YEAR(`age`) >= 18");
$query = mysql_query("SELECT * FROM p_candidate WHERE YEAR(CURDATE())-YEAR(`age`) < 18");
if ($age =="Below Eighteen") {$dob = $query;}
if ($age == "Above Eighteen") {$dob = $query2;}



$Odata = mysql_query("SELECT * FROM p_candidate WHERE(`gender` LIKE '%".$Gender."%') AND (`age` LIKE '%".$dob."%')") or die(mysql_error());

検索フォームの性別フィールドに入力せずにこのコードを実行すると、結果が得られません。どうすればこれを機能させることができますか? どの部分を変更する必要がありますか?

私のデータベースはmysqlにあり、候補者のDOBはageという列に保存されています

4

3 に答える 3

1

フィールドが常に何かで満たされるように、選択のデフォルト値を強制します。このような:

 Age<select id ='eighteen' name="eighteen" size="1" >
  <option value="Below Eighteen">Below Eighteen</option>
  <option value="Above Eighteen">Above Eighteen</option>
  <option value="Any" selected>Any</option>
  </select> 
于 2013-07-03T19:03:03.047 に答える
1

18 歳以上かどうかを確認するには、現在の日付から 18 年を引いて、生年月日 (列のように表示されageます) と比較します。

18歳以上

SELECT * FROM p_candidate WHERE age <= CURDATE() - INTERVAL 18 YEAR

18歳未満:

SELECT * FROM p_candidate WHERE age > CURDATE() - INTERVAL 18 YEAR

LIKEまた、必要のないときは使用を避けます。F性別または性別を確認する場合は、またはMと言ってください。を使いすぎても何も得られず、そうでなければ最適化可能なクエリが遅くなる危険があります。WHERE gender = 'F'WHERE gender = 'M'LIKE

于 2013-07-03T18:50:10.090 に答える