Помогите с пхп параметрами для функции

J
На сайте с 08.06.2006
Offline
844
509

Есть

function callFunc($func, $params = array())

{
if ($func)
$params = array_merge(array($func => ""), $params);
$param_str = http_build_query($params);

$this->curl->setReferrer($_SERVER['HTTP_HOST']);
$result = $this->curl->get(self::URL . "?$param_str");
if ($this->isCurlError() || $result === "") {
throw new Exception("Offer proxy connection error");
}

return unserialize($result);
}

function search($offer_id, $query, $price_from, $price_to, $only_sale, $vendor, $offset)
{
return $this->callFunc(null, array(
"offer_id" => $offer_id,
"q" => $query,
"price_from" => $price_from,
"price_to" => $price_to,
"only_sale" => $only_sale,
"vendor" => $vendor,
"offset" => $offset,
));
}

Если делать запрос

search($offer, '', '', '', '', '',3000);

то товары без названия ($query) не попадают под это условие, с пустым вендором ($vendor)

Какие значения $vendor и $query должны иметь, чтобы выбирало товары без названия и с пустым вендором ?

Александр И
На сайте с 20.11.2016
Offline
24
#1

Если я вас правильно понял, вам нужно переписать функцию, чтобы она пропускала пустые значения / проверять установлены ли значения по is_null/isset.

То-есть, в самой функции isset($vendor) === true, а при вызове search(..., null, null...

S
На сайте с 13.10.2014
Offline
171
#2

ничего не понял. Сформулируйте условия задачи, что надо получить

если надо пропустить только непустые значения то вот if (!empty($query)) или if (empty($query)===FALSE) спасет вас от проблем

ДП
На сайте с 23.11.2009
Offline
203
#3
joost:
Какие значения $vendor и $query должны иметь, чтобы выбирало товары без названия и с пустым вендором ?

Это должно быть написано в документации к той апишке, которую вы дёргаете.

J
На сайте с 08.06.2006
Offline
844
#4
Дикий пионер:
Это должно быть написано в документации к той апишке, которую вы дёргаете.

вот если бы она была

---------- Добавлено 22.12.2016 в 11:39 ----------

Александр И, silicoid,

function callFunc($func, $params = array()) 

{
if ($func)
$params = array_merge(array($func => ""), $params);
$param_str = http_build_query($params);

$this->curl->setReferrer($_SERVER***91;'HTTP_HOST'***93;);
$result = $this->curl->get(self::URL . "?$param_str");
if ($this->isCurlError() || $result === "") {
throw new Exception("Offer proxy connection error");
}

return unserialize($result);
}

function search($offer_id, $query, $price_from, $price_to, $only_sale, $vendor, $offset)
{
return $this->callFunc(null, array(
"offer_id" => $offer_id,
"q" => $query,
"price_from" => $price_from,
"price_to" => $price_to,
"only_sale" => $only_sale,
"vendor" => $vendor,
"offset" => $offset,
));
}

это чужой код (код плагина)

function search($offer_id, $query, $price_from, $price_to, $only_sale, $vendor, $offset)

делает выборку товаров по параметрам (как именно я не знаю) из чужой БД владельца плагина

Все что я могу так это юзать search() задавая параметры

Если сделать так

search($offer, '', '', '', '', '',3000); 

То по словам разработчика/владельца плагина "товары без названия ($query) не попадают под это условие и с пустым вендором ($vendor) тоже"

Проблема в том, что не понятно тогда вызывать search() с какими значениями $query и/или $vendor?

п.с. сам разработчик/или только владелец не знает или не говорит - тут не понятно

S
На сайте с 30.09.2016
Offline
469
#5

Ну так посмотрите на том сайте, откуда выбираются товары, каким должен быть запрос. Вообще-то, товар без названия - нонсенс. Обычно по запросу с пустым названием идёт выборка всех товаров, удовлетворяющих остальным условиям.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
J
На сайте с 08.06.2006
Offline
844
#6
Sitealert:
Ну так посмотрите на том сайте, откуда выбираются товары

это не из сайта, а из БД чужой выборка

к ней доступа у меня нет

---------- Добавлено 22.12.2016 в 12:15 ----------

Sitealert:
товар без названия - нонсенс

у товара есть название, бренд, модель

если названия нет - точнее не указано, то оно формируется как бренд + модель

---------- Добавлено 22.12.2016 в 12:16 ----------

Sitealert:
по запросу с пустым названием

оно то так, но как оказывается '' - не считается пустым названием

S
На сайте с 30.09.2016
Offline
469
#7
joost:
это не из сайта, а из БД чужой выборка

Да это и ежу понятно. Но запрос-то идёт на конкретный URL, а там - сайт. Вот и смотрите на нём, какой запрос прокатит. Может быть, вообще без параметра q.

J
На сайте с 08.06.2006
Offline
844
#8
Sitealert:
запрос-то идёт на конкретный URL, а там - сайт

та сервер апи

Sitealert:
Вот и смотрите на нём, какой запрос прокатит

это понятно

какие варианты запросов пробовать - вот в чем проблема

какие значение для $query и $vendor присваивать?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий