Перейти к содержимому


Фото
- - - - -

Проблема с каталогом товаров после переноса с хостинга и попытке развернуть на локалке. А так же выдача отключенных товаров на фронте.


  • Чтобы отвечать, сперва войдите на форум
4 ответов в теме

#1 vlad004

vlad004
  • Пользователь
  • 8 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Молдова

Опубликовано 26.08.2019 - 17:29

Доброго всем дня. Так сложились обстоятельства что мне временно приходится править баги и модернизировать проект который работает на движке Simpla CMS . А теперь по порядку:

  1. на сайте был поиск я модернизировал а то он выводил не очень корректные результаты например ты вводишь в строку поиска mi 9 -> результат -> redmi note 9/64 (что-то такое), то есть ищет по вхождениям разделяя сначала фразу в цикле, я его чуть переделал и сделал сначала отображение по строгому вхождению   а затем если это строгое пустое то разделю по словам. После этого результат выводит те товары которые нужны, НО игнорируется условие видимости товаров почему то, т.е. даже если товар в админке отключен то его в результате поиска видно, не смотря на :
     $visible_filter = $this->db->placehold('AND p.visible=?', intval($filter['visible']));
    

    Я уже этот запрос менял и делал вида : 

     $visible_filter = $this->db->placehold('AND p.visible=1');
    

    но это не меняло ситуация. После я решил развернуть этот проект у себя на локалке дабы не боясь что что то сломаю на проде учитывая что там сейчас даже Git не стоит. Отсюда вытекает 2 проблема.

  2. Я гуглил способы развертывания проекта ссылке на этом форуме. После чего я понял что моя версия PHP не подходит я даунгрейд сделал и теперь у меня как и на сервере стоит 5.6. Фронт еще кое как работает, к некоторых местах выбивает ошибку вида :
    Notice: Trying to get property of non-object in /var/www/html/api/Products.php on line 226

    Warning: Invalid argument supplied for foreach() in /var/www/html/simpla/ProductsAdmin.php on line 230
    А так же эта же самая ошибка вылезает в админке когда пытаюсь просмотреть список продуктов то все что я вижу это . И если от ошибки в 226 я могу ее закоментировать на время и она ни на что не повлияет так как там доп условие поиска, то ошибка на 230 строке остается, и если я пытаюсь в файле /api/Products.php в функции get_products() сделать :

var_dump($this->db->query($query));

То результатом будет : bool(false);

Итого: Самая главная сейчас для меня проблема понять почему на локалке у меня такие проблемы с проектом при том что код и база одинаковая что на проде что на локалке. Может у меня что то недоустановлено я уже не знаю я запутался. Если кто встречался или имеет представление как это починить буду рад услышать.

 

PS: давно что то на форумы не писал, прошу прощения может что то не так, но я честно старался что то нагуглить и не нашел рабочего для меня решения. Пока этот пост будет висеть я тоже не оставлю попыток искать способы решения и может где-то еще рыть форумы. 

  • Чуть не забыл : объясните кто нибудь почему таблицы в базе все с префиксом s_ а в запросе в файле  /api/Products.php в функции get_products()  там пишут с двумя нижними подчеркиваниями ?
    FROM __products p
    

     

 


Изменено: vlad004, 26.08.2019 - 17:32


#2 vlad004

vlad004
  • Пользователь
  • 8 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Молдова

Опубликовано 26.08.2019 - 18:15

так первый прогресс который я объяснить не могу, НО : товары в админке я получил без ошибок с помощью того что в функции  get_products(), я убрал строку с: 

$group_by = "GROUP BY p.id";
   $query = "SELECT  
					p.id,
					p.url,
					p.sku,
					p.brand_id,
					p.name,
					c.name as `category_name`,
					p.stock,
					p.price,
					p.old_price,
					p.annotation,
					p.body,
					p.shops,
					p.position,
					p.created as created,
					p.visible, 
					p.featured, 
					p.meta_title, 
					p.meta_keywords, 
					p.meta_description, 
					b.name as brand,
					b.url as brand_url
				FROM __products p
				$category_id_filter
				$memory_filter
				$screen_filter
				$os_filter
				$colors_filter
				$gsm_filter
				$cards_filter
				$VoLTE_filter
				LEFT JOIN __brands b ON p.brand_id = b.id
				WHERE 
					1
					$price_filter
					$product_id_filter
					$brand_id_filter
					$features_filter
					$keyword_filter
					$is_featured_filter
					$discounted_filter
					$in_stock_filter
					$visible_filter
//				$group_by ------ Вот эту вот строку я удалил
				ORDER BY $order
					$sql_limit";

Вот узнать бы причину этой проблемы


Изменено: vlad004, 26.08.2019 - 18:33


#3 shooroop

shooroop
  • Фрилансер
  • 976 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 26.08.2019 - 19:23

Чуть не забыл : объясните кто нибудь почему таблицы в базе все с префиксом s_ а в запросе в файле  /api/Products.php в функции get_products()  там пишут с двумя нижними подчеркиваниями ?

 

 

файл api/Database.php

 

	/**
	 * Плейсхолдер для запросов. Пример работы: $query = $db->placehold('SELECT name FROM products WHERE id=?', $id);
	 */
	public function placehold()
	{
		$args = func_get_args();	
		$tmpl = array_shift($args);
		// Заменяем все __ на префикс, но только необрамленные кавычками
		$tmpl = preg_replace('/([^"\'0-9a-z_])__([a-z_]+[^"\'])/ui', "\$1".$this->config->db_prefix."\$2", $tmpl);
		if(!empty($args))
		{
			$result = $this->sql_placeholder_ex($tmpl, $args, $error); 
			if ($result === false)
			{ 
				$error = "Placeholder substitution error. Diagnostics: \"$error\""; 
				trigger_error($error, E_USER_WARNING); 
				return false; 
			} 
			return $result;
		}
		else
			return $tmpl;
	}
	


#4 vlad004

vlad004
  • Пользователь
  • 8 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Молдова

Опубликовано 26.08.2019 - 19:39

файл api/Database.php

 

	/**
	 * Плейсхолдер для запросов. Пример работы: $query = $db->placehold('SELECT name FROM products WHERE id=?', $id);
	 */
	public function placehold()
	{
		$args = func_get_args();	
		$tmpl = array_shift($args);
		// Заменяем все __ на префикс, но только необрамленные кавычками
		$tmpl = preg_replace('/([^"\'0-9a-z_])__([a-z_]+[^"\'])/ui', "\$1".$this->config->db_prefix."\$2", $tmpl);
		if(!empty($args))
		{
			$result = $this->sql_placeholder_ex($tmpl, $args, $error); 
			if ($result === false)
			{ 
				$error = "Placeholder substitution error. Diagnostics: \"$error\""; 
				trigger_error($error, E_USER_WARNING); 
				return false; 
			} 
			return $result;
		}
		else
			return $tmpl;
	}
	

ага ну тут теперь попонятнее немного, спасибо)



#5 vlad004

vlad004
  • Пользователь
  • 8 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Молдова

Опубликовано 27.08.2019 - 11:15

так первый прогресс который я объяснить не могу, НО : товары в админке я получил без ошибок с помощью того что в функции  get_products(), я убрал строку с: 

$group_by = "GROUP BY p.id";
   $query = "SELECT  
					p.id,
					p.url,
					p.sku,
					p.brand_id,
					p.name,
					c.name as `category_name`,
					p.stock,
					p.price,
					p.old_price,
					p.annotation,
					p.body,
					p.shops,
					p.position,
					p.created as created,
					p.visible, 
					p.featured, 
					p.meta_title, 
					p.meta_keywords, 
					p.meta_description, 
					b.name as brand,
					b.url as brand_url
				FROM __products p
				$category_id_filter
				$memory_filter
				$screen_filter
				$os_filter
				$colors_filter
				$gsm_filter
				$cards_filter
				$VoLTE_filter
				LEFT JOIN __brands b ON p.brand_id = b.id
				WHERE 
					1
					$price_filter
					$product_id_filter
					$brand_id_filter
					$features_filter
					$keyword_filter
					$is_featured_filter
					$discounted_filter
					$in_stock_filter
					$visible_filter
//				$group_by ------ Вот эту вот строку я удалил
				ORDER BY $order
					$sql_limit";

Вот узнать бы причину этой проблемы

  • Так же после этих изменений товары на фронте начали выводиться нормально и без ошибок, что собственно решило мою 2 проблему.
  • Осталось понять почему при поиске не работает условие при котором должно выводить только видимые товары а мне прям все отображает





0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых