kaliostro_den 2 Опубликовано: 24 мая 2009 Рассказать Опубликовано: 24 мая 2009 IT-Security, Напишите запрос для поиска 2 и более полей, дело в том что они могут путаться. Цитата Ссылка на сообщение Поделиться на других сайтах
Bagir 3 Опубликовано: 24 мая 2009 Рассказать Опубликовано: 24 мая 2009 IT-Security, Напишите запрос для поиска 2 и более полей, дело в том что они могут путаться. использование union или join вполне решит эту проблему Цитата Ссылка на сообщение Поделиться на других сайтах
kaliostro_den 2 Опубликовано: 24 мая 2009 Рассказать Опубликовано: 24 мая 2009 Bagir, угу, если 2-3 поля, а если 10-20, многие хосты ограничивают количество подключенных таблиц, а нагрузка при такой способе возростает не слабо. Цитата Ссылка на сообщение Поделиться на других сайтах
Bagir 3 Опубликовано: 24 мая 2009 Рассказать Опубликовано: 24 мая 2009 (изменено) если пошло обсуждение о возможности расширять функцыонал ДЛЕ, может открыть новый раздел, где разработчики смогут делитса и обсуждать решения, выкладывать готовые решения? Например есть не мало вещей которые хотелось бы обсудить, но раздела для этих целей нет на форуме. Обсуждения в этом разделе (Готовые Моды, Хаки, Локализаторы, Советы) протеворечат правилам форума. Так что первая логичная мысль, нужен еще один раздел для разработчиков. Изменено 24 мая 2009 пользователем Bagir Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 24 мая 2009 Рассказать Опубликовано: 24 мая 2009 Автор В конце следующей недели сделаю релиз API и поглядим что и как будем делать дальше. Цитата Ссылка на сообщение Поделиться на других сайтах
dlehack 14 Опубликовано: 24 мая 2009 Рассказать Опубликовано: 24 мая 2009 (изменено) http://www.modx-cms.ru/modx-api.html здесь список API CMS MODx вполне подойдет как источник идей. Вот например regClientScript - подключает js файлы удобство в том что е сли на сайте используются несколько разных модулей которые при этом подключают одни и теже js файлы ну например jquery.js то функция сама подключит нужные файлы при подключении первого модуля и проигнорирует остальные подключения таким образом разработчику нет необходимости думать над тем подключен ли нужный js можно смело подключать нужный js и точно знать что не будет лишних подключений одинаковых файлов.(надеюсь понятно написал) Изменено 24 мая 2009 пользователем dlehack Цитата Ссылка на сообщение Поделиться на других сайтах
kaliostro_den 2 Опубликовано: 25 мая 2009 Рассказать Опубликовано: 25 мая 2009 dlehack, А если файлы имеют разные имена но одинаковые по содержанию? или имеют разные версии? Тем более в ДЛЕ это не прокатит, так как подключенные файлы определяются при парсинге HTML и всё зависит какой тег в шаблне пользователь вставит первым, тот что обрабатывался 1-ым или какой-нибудь другой. Если будет другой, то весь JS первого который основан Jqury например не будет рабоать, так как сам jquery подключиться позже. Цитата Ссылка на сообщение Поделиться на других сайтах
dlehack 14 Опубликовано: 25 мая 2009 Рассказать Опубликовано: 25 мая 2009 (изменено) А если файлы имеют разные имена но одинаковые по содержанию? md5 Если будет другой, то весь JS первого который основан Jqury например не будет рабоать, так как сам jquery подключиться позже. это элеметарно решается если интересно откройте API modx и посмотрите как Изменено 25 мая 2009 пользователем dlehack Цитата Ссылка на сообщение Поделиться на других сайтах
Bagir 3 Опубликовано: 26 мая 2009 Рассказать Опубликовано: 26 мая 2009 А если файлы имеют разные имена но одинаковые по содержанию? или имеют разные версии? Тем более в ДЛЕ это не прокатит, так как подключенные файлы определяются при парсинге HTML и всё зависит какой тег в шаблне пользователь вставит первым, тот что обрабатывался 1-ым или какой-нибудь другой. Если будет другой, то весь JS первого который основан Jqury например не будет рабоать, так как сам jquery подключиться позже. Для этого в ДЛЕ давно пора ввести какой нибудь js framework. Mootools или jQuery, основная библиотека подключалась бы в самом верху, а остольные дополнения ниже. Также если будет встроенный js FrameWork это предотвратит некоторые конфликтные проблемы. Например если пользователь в своем шаблоне использует jQuery, а для своего модуля я добавлю Mootools будет конфликт на лицо. Цитата Ссылка на сообщение Поделиться на других сайтах
aDolph 0 Опубликовано: 26 мая 2009 Рассказать Опубликовано: 26 мая 2009 (изменено) Вот как то не совсем удобно получается, для получения данных из базы есть в api (function load_table), а вот просто запросы писать (в своем модуле) приходится пока через $db->query. Может все таки доработаете в следующих версиях? Изменено 26 мая 2009 пользователем aDolph Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 26 мая 2009 Рассказать Опубликовано: 26 мая 2009 вот просто запросы писать (в своем модуле) приходится пока через $db->queryПочему не удобно? По моему как раз и удобно, мне нравится Цитата Ссылка на сообщение Поделиться на других сайтах
Al-x 7 Опубликовано: 26 мая 2009 Рассказать Опубликовано: 26 мая 2009 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(); ............... Если нужно кому - можно искользовать. Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 27 мая 2009 Рассказать Опубликовано: 27 мая 2009 Al-x, мне привычнее видеть запрос целиком и не в одну строчку) Вижу у тебя разный стиль кавычек)values (\''.implode('\', \'', $this->sql['fields']).'\')' $sql_val[] = $name."='{$data}'" а что делает код - непонятно без комментов Цитата Ссылка на сообщение Поделиться на других сайтах
Al-x 7 Опубликовано: 27 мая 2009 Рассказать Опубликовано: 27 мая 2009 Вижу у тебя разный стиль кавычек) да, теряю случайно) Хотя существенной роли это не играет) а что делает код - непонятно без комментов автоматическое построение запросов. Можно указать таблицу и поля (и ещё всякие доппараметры) и на выходе получить запрос. Я описание не делал, потому что тут всё достаточно просто. мне привычнее видеть запрос целиком и не в одну строчку) По сути дела да, это привычнее, но иногда возникает необходимость создавать запросы с разными входными параметрами. И чтобы по 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();// выполнение запроса Вообще конечно кому как удобнее, просто мне приходится не редко создавать запросы с разными входными параметрами и уже порядком надоело думать какую бы запятую не пропустить и т.п.) Хотя это ИМХО. Цитата Ссылка на сообщение Поделиться на других сайтах
pleomax 5 Опубликовано: 1 июня 2009 Рассказать Опубликовано: 1 июня 2009 В конце следующей недели сделаю релиз API и поглядим что и как будем делать дальше. Жду... очень жду... Собираюсь писать модуль с использованием API. Не начинаю пока - жду релиза... Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 1 июня 2009 Рассказать Опубликовано: 1 июня 2009 Автор Стукните в асю - договоримся. Сейчас просто сессия =( Цитата Ссылка на сообщение Поделиться на других сайтах
pleomax 5 Опубликовано: 2 июня 2009 Рассказать Опубликовано: 2 июня 2009 Стукните в асю - договоримся. Сейчас просто сессия =( Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 2 июня 2009 Рассказать Опубликовано: 2 июня 2009 Автор Извиняюсь, замотался. Завтра к ночи всё 100% будет. Цитата Ссылка на сообщение Поделиться на других сайтах
pleomax 5 Опубликовано: 3 июня 2009 Рассказать Опубликовано: 3 июня 2009 Извиняюсь, замотался. Завтра к ночи всё 100% будет. Ты еще извиняйся давай! Мы ничего не в праве от тебя требовать. Мы просто ждем... Цитата Ссылка на сообщение Поделиться на других сайтах
Sogorukuhn 0 Опубликовано: 3 июня 2009 Рассказать Опубликовано: 3 июня 2009 Блин народ. Выбы лучше зделали систему сниппетов как в MODx и к ней апи подключили. Я вообще влюбился в этот функционал. По работе юзаю МОДикс. Еслибы можнобыло перенять из него функции для написания модов и внедрить их в ДЛЕ, то ценыбы небыло ДЛЕ. Можнобылобы любой мод реализовать и установить не трахая себе и другим моск. Ато сейчас большой мод пока установиш, уже утро наступает. Аш страшно апдэйтится на новую версию ДЛЕ. Цитата Ссылка на сообщение Поделиться на других сайтах
Al-x 7 Опубликовано: 3 июня 2009 Рассказать Опубликовано: 3 июня 2009 Ато сейчас большой мод пока установиш, уже утро наступает ага, я пока их писал - не успевал замечать как семестры летали)))) Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 4 июня 2009 Рассказать Опубликовано: 4 июня 2009 Автор Извиняюсь, замотался. Завтра к ночи всё 100% будет. Ты еще извиняйся давай! Мы ничего не в праве от тебя требовать. Мы просто ждем... Требовать то Вы не в праве, но я обычно держу своё слово, когда не случаются обстоятельства...как сейчас =( Цитата Ссылка на сообщение Поделиться на других сайтах
vityan 0 Опубликовано: 5 июня 2009 Рассказать Опубликовано: 5 июня 2009 Буквально в этом топике чуток понял,что за зверь этот API. Идейка на 5+. Цитата Ссылка на сообщение Поделиться на других сайтах
baxus 49 Опубликовано: 8 июня 2009 Рассказать Опубликовано: 8 июня 2009 Еслиб ещё старатель нашолся который научил бы этим всем добром пользоватся.)) Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 8 июня 2009 Рассказать Опубликовано: 8 июня 2009 Серёг, новости бы выбирать через 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 если что) О сорри, качаю новую версию) Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.