modExtraManagerController данные из файла getObject empty result

Здравствуйте.
Пробую создать компонент.
В админпанеле сделал форму с кнопкой.
При нажатии на кнопку загружается файл и далее я перебираю его с помощью fgetcsv
Если я делаю просто echo или print_r, то все выводится, но если я пытаюсь из этого результат сделать getObject или $modx->query результат 0 строк. Если я сам вручную впишу критерий поиска, то результат выводит.
Делаю так:

public function process(array $scriptProperties = array()) {
	global $modx;
...
	if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
			$row = 1;
			if (($handle = fopen($uploadfile, "r")) !== FALSE) {
					while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
						$num = count($data);
						if ($num >= 2) {
							$article = $data[0];
							$price = $data[1];
					echo $article; //ЭТО РАБОТАЕТ
					$find_row = $modx->getObject('msProductData', array('article' => $article)); // А это игнорирует article.
					if ($find_row) {
						echo 'Найдено';
					} else {
						echo $article; //И тут выводит артикул без проблем
					}
				}
				$row++;
			}
			fclose($handle);
		}
	}
}
Если я сделаю просто массив, то из него тоже берется, а вот если делаю выборку из файла — то не работает.
Пожалуйста, скажите как правильно сделать. Спасибо
Ivan
13 июня 2018, 00:07
modx.pro
971
0

Комментарии: 10

dozortsev92
19 июня 2018, 12:15
0
Братцы, помогите. Тоже такая проблема!
    Илья Уткин
    19 июня 2018, 13:10
    0
    Сделайте var_dump вместо echo. Возможно, после артикула в файле стоит пробел — тогда надо воспользоваться функцией trim перед подстановкой в условие.
      Ivan
      19 июня 2018, 13:19
      0
      Здравствуйте. Пробовал. tirm я сейчас дописал, все равно пригодится) Но проблема осталась
        Илья Уткин
        19 июня 2018, 13:32
        0
        Попробуйте так посмотреть, какой SQL-запрос формируется, и что в нём не так:
        $q = $modx->newQuery('msProductData');
        $q->where(array('article' => $article));
        $q->prepare();
        echo $q->toSQL();
          Ivan
          19 июня 2018, 13:46
          0
          Да, в запросе видно что подставляется, но когда я делаю
          $q->stmt->execute();
          $res = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
          результат пустой
            Илья Уткин
            19 июня 2018, 13:49
            0
            А если в PhpMyAdmin этот запрос вставить и попробовать выполнить — будет результат?
              Ivan
              19 июня 2018, 13:51
              0
              Спасибо вам большое. Когда вставил запрос в phpmyadmin там почему-то появляется лишний символ (на скриншоте видно).


              Только откуда он берется хз… Посмотрю кодировку, может в этом дело.
              Вы очень помогли.
        Ivan
        20 июня 2018, 02:05
        0
        Все получилось. Убрал bom. Спасибо
        Володя
        19 июня 2018, 13:37
        0
        а вот если делаю выборку из файла — то не работает.
        включите отображение ошибок в начале скрипта
        ini_set('display_errors', 1);
        ini_set('error_reporting', -1);
        и посмотрите возможно у вас ошибка в коде.
          Ivan
          19 июня 2018, 13:41
          0
          да, я так сделал сразу.
          Тот код который предложил Илья — работает.
          Ну точнее я пока только prepare сделал и там в запросе четко указано article='...'
          А вот getObject его игнорирует. Сейчас execute сделаю и посмотрю. 1 минуту
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        10