Перейти к публикации

Рекомендованные сообщения

IT-Security,

Напишите запрос для поиска 2 и более полей, дело в том что они могут путаться.

Ссылка на сообщение
Поделиться на других сайтах

IT-Security,

Напишите запрос для поиска 2 и более полей, дело в том что они могут путаться.

использование union или join вполне решит эту проблему

Ссылка на сообщение
Поделиться на других сайтах

Bagir,

угу, если 2-3 поля, а если 10-20, многие хосты ограничивают количество подключенных таблиц, а нагрузка при такой способе возростает не слабо.

Ссылка на сообщение
Поделиться на других сайтах

если пошло обсуждение о возможности расширять функцыонал ДЛЕ, может открыть новый раздел, где разработчики смогут делитса и обсуждать решения, выкладывать готовые решения?

Например есть не мало вещей которые хотелось бы обсудить, но раздела для этих целей нет на форуме. Обсуждения в этом разделе (Готовые Моды, Хаки, Локализаторы, Советы) протеворечат правилам форума. Так что первая логичная мысль, нужен еще один раздел для разработчиков.

Изменено пользователем Bagir
Ссылка на сообщение
Поделиться на других сайтах

В конце следующей недели сделаю релиз API и поглядим что и как будем делать дальше.

Ссылка на сообщение
Поделиться на других сайтах

http://www.modx-cms.ru/modx-api.html здесь список API CMS MODx вполне подойдет как источник идей.

Вот например regClientScript - подключает js файлы удобство в том что е сли на сайте используются несколько разных модулей которые при этом подключают одни и теже js файлы ну например jquery.js то функция сама подключит нужные файлы при подключении первого модуля и проигнорирует остальные подключения таким образом разработчику нет необходимости думать над тем подключен ли нужный js можно смело подключать нужный js и точно знать что не будет лишних подключений одинаковых файлов.(надеюсь понятно написал)

Изменено пользователем dlehack
Ссылка на сообщение
Поделиться на других сайтах

dlehack,

А если файлы имеют разные имена но одинаковые по содержанию? или имеют разные версии? Тем более в ДЛЕ это не прокатит, так как подключенные файлы определяются при парсинге HTML и всё зависит какой тег в шаблне пользователь вставит первым, тот что обрабатывался 1-ым или какой-нибудь другой. Если будет другой, то весь JS первого который основан Jqury например не будет рабоать, так как сам jquery подключиться позже.

Ссылка на сообщение
Поделиться на других сайтах

А если файлы имеют разные имена но одинаковые по содержанию?

md5

Если будет другой, то весь JS первого который основан Jqury например не будет рабоать, так как сам jquery подключиться позже.

это элеметарно решается если интересно откройте API modx и посмотрите как

Изменено пользователем dlehack
Ссылка на сообщение
Поделиться на других сайтах

А если файлы имеют разные имена но одинаковые по содержанию? или имеют разные версии? Тем более в ДЛЕ это не прокатит, так как подключенные файлы определяются при парсинге HTML и всё зависит какой тег в шаблне пользователь вставит первым, тот что обрабатывался 1-ым или какой-нибудь другой. Если будет другой, то весь JS первого который основан Jqury например не будет рабоать, так как сам jquery подключиться позже.

Для этого в ДЛЕ давно пора ввести какой нибудь js framework. Mootools или jQuery, основная библиотека подключалась бы в самом верху, а остольные дополнения ниже. Также если будет встроенный js FrameWork это предотвратит некоторые конфликтные проблемы. Например если пользователь в своем шаблоне использует jQuery, а для своего модуля я добавлю Mootools будет конфликт на лицо.

Ссылка на сообщение
Поделиться на других сайтах

Вот как то не совсем удобно получается, для получения данных из базы есть в api (function load_table), а вот просто запросы писать (в своем модуле) приходится пока через $db->query. Может все таки доработаете в следующих версиях?

Изменено пользователем aDolph
Ссылка на сообщение
Поделиться на других сайтах
вот просто запросы писать (в своем модуле) приходится пока через $db->query
Почему не удобно? По моему как раз и удобно, мне нравится
Ссылка на сообщение
Поделиться на других сайтах

aDolph,

правда, а каким ещё способом то для простых запросов?

Александр Медведев,

в принципе какой-то query builder нужен, но только в редких случаях, например что-то вроде

$this->db->clear_query();

			$this->db->sql['type'] = 'si';

			$this->db->sql['from'] = PREFIX . '_notifications';

			$this->db->sql['fields'] = "user_id, date, text, status, type, randomcode";

			$data = $this->db->safesql(serialize($data));


			foreach($this->pm_user_data as $user_id => $user){

				$user[0] = ($user[0] == '1') ? '0' : '1';

				$this->db->sql['sfields'][] = "{$user_id}, '{$this->date}', '{$txt}', {$user[0]}, {$savedtype}, '{$this->hash}'";

			}


			$this->db->query();
У меня сделана такая штука:
	function build(){


		switch ($this->sql['type']){

		case 's':


			if (is_array($this->sql['fields']))

				$fields = implode(',',$this->sql['fields']);

			else

				$fields = $this->sql['fields'];


			$query = 'SELECT ' . $fields . ' FROM '.implode(',',$this->sql['from']);


			if (count($this->sql['where'])) $query .= ' WHERE '.implode(' AND ', $this->sql['where']);


			if (($c = count($this->sql['order'])) > 0){


				$query .= ' ORDER BY ';


				if (is_array($this->sql['order'])){


					for ($i = 0; $i < $c; $i++){

						$query .= $this->sql['order'][$i].' '.$this->sql['by'][$i].', ';

					}

					$query = substr($query, 0, -2);


				} else $query .= $this->sql['order'].' '.$this->sql['by'];


			}


			if ($this->sql['limit'] > 0) $query .= ' LIMIT '.$this->sql['start'].','.$this->sql['limit'];


		break;

		case 'i' :


			$sql_val = array_keys($this->sql['fields']);

			$query = 'INSERT INTO ' . $this->sql['from'] . ' ('.implode(', ', $sql_val).') values (\''.implode('\', \'', $this->sql['fields']).'\')';


		break;

		case 'si' :


			$query = 'INSERT INTO ' . $this->sql['from'] . ' ('.$this->sql['fields'].') values ('.implode('),(', $this->sql['sfields']).')';


		break;

		case 'u' :


			$sql_val = array();

			foreach($this->sql['fields'] as $name => $data){ $sql_val[] = $name."='{$data}'"; }

			$query = 'UPDATE ' . $this->sql['from'] . ' SET '.implode(', ', $sql_val);


			if (is_array($this->sql['where']) && count($this->sql['where'])){

				$sql_val = array();

				foreach($this->sql['where'] as $name => $data){ $sql_val[] = $name . ((count($data) > 1) ? ' IN (\''.implode ('\',\'',$data).'\')' : '= \''.$data[0].'\''); }

				$query .= ' WHERE ' . implode(' AND ', $sql_val);

			} 


		break;

		case 'd' :


			$query = 'DELETE FROM ' . $this->sql['from'];


			if (is_array($this->sql['where']) && count($this->sql['where'])){

				$sql_val = array();

				foreach($this->sql['where'] as $name => $data){ $sql_val[] = $name . ((count($data) > 1) ? ' IN (\''.implode ('\',\'',$data).'\')' : '= \''.$data[0].'\''); }

				$query .= ' WHERE ' . implode(' AND ', $sql_val);

			}


		break;

		}


	return $query;

	}


	function clear_query()

	{


		$this->sql = array("type"=>'s', "fields"=>array(), "sfields"=>array(), "from"=>array(), "where"=>array(), "order"=>array(), "by"=>array(), "limit"=>0, "start"=>0);


	}

...............

if ($query == "") $query = $this->build();

...............

Если нужно кому - можно искользовать.

Ссылка на сообщение
Поделиться на других сайтах

Al-x, мне привычнее видеть запрос целиком и не в одну строчку)

Вижу у тебя разный стиль кавычек)

values (\''.implode('\', \'', $this->sql['fields']).'\')'
$sql_val[] = $name."='{$data}'"

а что делает код - непонятно без комментов

Ссылка на сообщение
Поделиться на других сайтах

Вижу у тебя разный стиль кавычек)

да, теряю случайно) Хотя существенной роли это не играет)

а что делает код - непонятно без комментов

автоматическое построение запросов. Можно указать таблицу и поля (и ещё всякие доппараметры) и на выходе получить запрос. Я описание не делал, потому что тут всё достаточно просто.

мне привычнее видеть запрос целиком и не в одну строчку)

По сути дела да, это привычнее, но иногда возникает необходимость создавать запросы с разными входными параметрами. И чтобы по 20 раз не кавырять строку исходного запроса - проще нужным переменным названачить нужные значения. В общем кому как удобнее.

Мой первый приведённый код - пример того, где проще строить запросы через автоматическое построение, нежели катать ручками.

$this->db->clear_query(); //сброс значений входного массива параметров

$this->db->sql['type'] = 'si'; // типа запроса

$this->db->sql['from'] = PREFIX . '_notifications'; //таблица

$this->db->sql['fields'] = "user_id, date, text, status, type, randomcode"; // поля, которые вставляем

$data = $this->db->safesql(serialize($data)); // не важно....

foreach($this->pm_user_data as $user_id => $user){

$user[0] = ($user[0] == '1') ? '0' : '1'; // не важно....

$this->db->sql['sfields'][] = "{$user_id}, '{$this->date}', '{$txt}', {$user[0]}, {$savedtype}, '{$this->hash}'"; //значения полей, добавляются в цикле

}

$this->db->query();// выполнение запроса

Вообще конечно кому как удобнее, просто мне приходится не редко создавать запросы с разными входными параметрами и уже порядком надоело думать какую бы запятую не пропустить и т.п.) Хотя это ИМХО.

Ссылка на сообщение
Поделиться на других сайтах

В конце следующей недели сделаю релиз API и поглядим что и как будем делать дальше.

:( Жду... очень жду... Собираюсь писать модуль с использованием API. Не начинаю пока - жду релиза...

Ссылка на сообщение
Поделиться на других сайтах

Стукните в асю - договоримся. Сейчас просто сессия =(

:unsure:

Ссылка на сообщение
Поделиться на других сайтах

Извиняюсь, замотался.

Завтра к ночи всё 100% будет.

Ты еще извиняйся давай! Мы ничего не в праве от тебя требовать. Мы просто ждем...

Ссылка на сообщение
Поделиться на других сайтах

Блин народ. Выбы лучше зделали систему сниппетов как в MODx и к ней апи подключили. Я вообще влюбился в этот функционал. По работе юзаю МОДикс. Еслибы можнобыло перенять из него функции для написания модов и внедрить их в ДЛЕ, то ценыбы небыло ДЛЕ. Можнобылобы любой мод реализовать и установить не трахая себе и другим моск. Ато сейчас большой мод пока установиш, уже утро наступает. Аш страшно апдэйтится на новую версию ДЛЕ.

Ссылка на сообщение
Поделиться на других сайтах

Ато сейчас большой мод пока установиш, уже утро наступает

ага, я пока их писал - не успевал замечать как семестры летали))))

Ссылка на сообщение
Поделиться на других сайтах

Извиняюсь, замотался.

Завтра к ночи всё 100% будет.

Ты еще извиняйся давай! Мы ничего не в праве от тебя требовать. Мы просто ждем...

Требовать то Вы не в праве, но я обычно держу своё слово, когда не случаются обстоятельства...как сейчас =(

Ссылка на сообщение
Поделиться на других сайтах

Серёг, новости бы выбирать через API :)

и удали нафиг

@error_reporting( E_ALL ^ E_NOTICE );

@ini_set( 'display_errors', true );

@ini_set( 'html_errors', false );

@ini_set( 'error_reporting', E_ALL ^ E_NOTICE );

прогер сам в своих скриптах определяет уровень показа ошибок и предупреждений.

У меня версия 0.02 если что)

О сорри, качаю новую версию)

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...