Подскажите как дополнить запрос к БД чтоб например по полю "цена за обучение" выводились пользователи у которых это значение меньше или равно полученному в Get запросе, а не равно этому значению.
беру значение так:
$_GET["cena_obucheniya_55"]
как запросить что то типо этой логики:
cena_obucheniya_55.meta_value <= $_GET["cena_obucheniya_55"]
Сделал так:
$cnaoah = $_GET["cena_obucheniya_55"]; $value = $wpdb->get_row("SELECT meta_key,meta_value FROM ".$wpdb->prefix."usermeta WHERE meta_key LIKE '$name' AND meta_value LIKE '%$_GET[$name]%'"); $n = 'metas_'.$name; $comp = (is_serialized($value->meta_value))? "$n.meta_value LIKE '%$_GET[$name]%'": "$n.meta_value='$_GET[$name]'"; $query->query['join'][] = "INNER JOIN $wpdb->usermeta AS $n ON users.ID=$n.user_id"; if ($n == 'metas_cena_obucheniya_55'){ $query->query['where'][] = "($n.meta_key LIKE 'cena_obucheniya%' AND $n.meta_value query['group'] = 'users.ID'; } else { $query->query['where'][] = "($n.meta_key='$value->meta_key' AND $comp)"; }
выбор сделал по всем полям начинающимся на cena_obucheniya потому что у меня у каждого пользователя есть несколько полей (cena_obucheniya_55, cena_obucheniya_19, cena_obucheniya_44)
подскажите пожалуйста что можно переделать, укажите на ошибки, буду рад.
Вначале $cnaoah определили. Но потом нигде не использовали...
$name присоединяете к 'metas_' - откуда $name?
Значит это просто фрагмент кода
Предположу что $_GET["cena_obucheniya_55"] - просто число? Значит надо проверять что в запросе именно число и пришло.. А то мало ли - малолетние хакеры понашлют туда свои данные.
Вначале $cnaoah определили. Но потом нигде не использовали...
что то пошло не так, должно быть вот так:
$cnaoah = $_GET["cena_obucheniya_55"]; $value = $wpdb->get_row("SELECT meta_key,meta_value FROM ".$wpdb->prefix."usermeta WHERE meta_key LIKE '$name' AND meta_value LIKE '%$_GET[$name]%'"); $n = 'metas_'.$name; $comp = (is_serialized($value->meta_value))? "$n.meta_value LIKE '%$_GET[$name]%'": "$n.meta_value='$_GET[$name]'"; $query->query['join'][] = "INNER JOIN $wpdb->usermeta AS $n ON users.ID=$n.user_id"; if ($n == 'metas_cena_obucheniya_55'){ $query->query['where'][] = "($n.meta_key LIKE 'cena_45%' AND $n.meta_value <= $cnaoah)"; $query->query['group'] = 'users.ID'; } else { $query->query['where'][] = "($n.meta_key='$value->meta_key' AND $comp)"; }
теперь вроде правильно, $cnaoah используется.
$name присоединяете к 'metas_' - откуда $name?
это уже было в коде изначально в wp-content/wp-recall/add-on/profile-search/index.php
$name = $custom_field['prof_fields'];
т.е. это meta_key полей профиля
Значит это просто фрагмент кода
да это фрагмент кода из wp-content/wp-recall/add-on/profile-search/index.php
Предположу что $_GET["cena_obucheniya_55"] - просто число? Значит надо проверять что в запросе именно число и пришло.. А то мало ли - малолетние хакеры понашлют туда свои данные.
сделаю спасибо за подсказку