都市、誕生日、およびユーザーのテーブルがあります。今、私がやろうとしているのは、データベースを介してクエリを実行し、年齢と生活都市の範囲をフィルタリングすることです(選択した地域の都市のリストから-そのため、count($city[]))> =1) とし、uid/entety_id をもとにユーザー名を細かく抜き出します。最初に、ユーザーが年齢の範囲に一致するかどうかを確認し、次に選択したリストのいずれかの都市に住んでいるかどうかを確認します。都市が選択されていない場合は、年齢の範囲のみをフィルタリングします。
何が問題なのかわかりませんが、私が気付く限り、このループがあり、まったく実行されないことに気づきました。
for ($d = 1; $d < (count($the_resaults_array)); $d++)
これはコードです:
function toodate_query_db($loest_age, $highest_age, $city){
$sql_user_name = '';
if((count($city[0]))>=1){
for ($i = 0; $i < count($city); $i++) {
$city_item_for_check = $city[$i];
$sql = "SELECT field_data_field_birth_date.entity_id
FROM field_data_field_birth_date, field_data_field_city
WHERE(
(field_birth_date_value >= DATE_ADD(NOW(), INTERVAL -{$highest_age} YEAR))
AND
(field_birth_date_value <= DATE_ADD(NOW(), INTERVAL -{$loest_age} YEAR))
AND
(field_city_tid = {$city_item_for_check})
AND
(field_data_field_birth_date.entity_id = field_data_field_city.entity_id))";
if(db_query($sql)->fetchColumn()){
$the_resaults_array[$i] = db_query($sql)->fetchAll();
}
}
for ($d = 1; $d < (count($the_resaults_array)); $d++) {
$user_id = $the_resaults_array[$d];
$sql_user_name .= '<p><strong>'.
db_query("SELECT name FROM {users} WHERE uid = {$user_id}")->fetchColumn()
.'</p></strong>';
}
} else{
$sql = "SELECT field_data_field_birth_date.entity_id
FROM field_data_field_birth_date
WHERE
field_birth_date_value >= DATE_ADD(NOW(), INTERVAL -{$highest_age} YEAR)
AND field_birth_date_value <= DATE_ADD(NOW(), INTERVAL -{$loest_age} YEAR)";
foreach (db_query($sql) as $result) {
$entity_id = $result->entity_id;
$sql_user_id = db_query("SELECT uid FROM {profile} WHERE pid = {$entity_id}")->fetchColumn();
$sql_user_name .= '<p><strong>'.
db_query("SELECT name FROM {users} WHERE uid = {$sql_user_id}")->fetchColumn()
.'</p></strong>';
}}
return $sql_user_name;
}