Я давно не писал на php и запросы к базе. Сейчас приходится можно сказать заново учится, многое забылось, но основы то знаю.
Вчера начал делать админку и понял, что разделение шаблонов на маленькие кусочки это удобно для тех кто знает как делать такие шаблончики. Возможно если мой подход структуирования станет востребованным, то может сделаю версию для профи(сборка сайта из кусочков) и для простых пользователей.
Раньше у меня в MVC движке были аплеты(так их назвал), то есть директория в которой директории по названию какого либо апплета. В директории апплета находились шаблоны, стили и php(обработкик). Это удобно когда надо изменить что-то в апплете, добавить новый или удалить не нужный. Для добавления на страницу просто указываешь нужный апплет с параметрами и всё.
Сейчас хочу сделать так же. В структуре надо будет указать нужные узлы(или компоненты страницы), до этого надо указывать нужные шаблоны и данные, что для профи хорошо, но не для простых людей.
Поэтому сегодня буду заниматься переделкой. Далее опять возьмусь за админку.
Что касается ОРМ это надстройка для получения данных, которые могут браться из базы, файлов или с другого ресурса, хорошо для тех кто не умеют это делать сами. Я умею :) поэтому узлы или компоненты будут делаться без всякого ОРМ, что напрямую быстрее из базы или ещё от куда по необходимости получить данные.
Я же извинился. Эго чтоли выше бурдж-халифа..
Подскажите как вставить несколько строк в базу и если есть поле с заданным ключом, то заменить.
это просто вставить
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
возможно так?
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3) ON DUPLICATE KEY UPDATE `field` ='key',(4,5,6) ON DUPLICATE KEY UPDATE `field` ='key',(7,8,9) ON DUPLICATE KEY UPDATE `field` ='key';
нашёл ещё вариант
UPDATE table1 SET field1=ELT(FIELD(field2, 10,15,17,19), 11,16,18,20) WHERE field2 IN (10,15,17,19)
непонятно как использовать---------- Добавлено 03.11.2019 в 16:34 ----------Разобрался, может кому пригодится.
INSERT INTO users (listid,email,age,name) VALUES (3,'vit9@gmail.com',26,"Витя"),(3,'kat9@gmail.com',32,"Катя"),(3,'masha@gmail.com',29,"Маша"),(2,'vit9@gmail.com',25,"Витя"),ON DUPLICATE KEY UPDATE listid=VALUES(listid), email=VALUES(email), age=VALUES(age), name=VALUES(name);
Нужен уникальный ключ – MySQL позволяет указать несколько столбцов с помощью составного ключа, уникально идентифицирующего встречающиеся записи. Таким образом, мы либо изменим таблицу выше и добавим первичный составной ключ, либо зададим его сначала:
При запуске вставляются 3 новые первые строки, а последняя строка обновляется.
Sitealert, я признал свою ошибку, а вам всё равно позлорадствовать надо и унизить человека. Не ошибается тот кто ничего не делает :)
Давно уже освоил.
Прошу прощения. Но в ашан работать не пойду :) Несколько классов делал со статическими свойствами. Потом изменил чтобы при создании нового объекта у каждого были свои свойства, $this поставил, забыл, что к нестатическим надо обращаться $this->obj
Переделал класс
<?php// пространство имён движкаnamespace core;// Класс Объектовclass Objects{ public $obj=[]; // Получить объект public function __Get($nam){ return isset($this->obj[$nam])?$this->obj[$nam]:null; } // Добавить объект public function __Set($nam,$obj){ if(!isset($this->obj[$nam]))$this->obj[$nam]=$obj; } // Удалить объект public function Remove($nam){unset($this->obj[$nam]);}}?>
Наверно оно кокоино на меня подействовало :)
Это вы слепой, там такого нет. Там обращение к свойству объект $this->$obj а у вас обращение к методу $this->obj
Я то безграмотный, а вы не умный..
Ошибок как таковых при работе нет. Это ошибки отлавливаемые функцией установленной set_error_handler
Матчастный вы наш :) где вы это увидели?
Опачки оно опять появилося кокоину обкушалося :)
Всем спасибо, все молодцы, помогли :)
Я использовал данный класс для массива разных объектов классов и других через указатели на объект, также делал на C++, тут пришлось типизировать, теперь стало норм.---------- Добавлено 02.11.2019 в 14:00 ----------
На что ориентированы ваши разработки? Для raspberry пишЕте? :)---------- Добавлено 02.11.2019 в 14:09 ----------
Поясните плиз
Смысл, если в блок входят другие блоки и они все статичны зачем каждый раз его генерировать, проще сохранить и потом просто вставлять, скорость формирования страницы улучшится. Данный кэш можно использовать на других страницах задав идентификатор. При очистки кэша он создастся вновь на любой из страниц и затем снова будет использоваться. Для движка который обрабатывает шаблоны это не мало важно.
Я знаю про бутстрап и другие фремворки, посмотрел, даже в коде полазил. Мне это не нравится, поэтому я делаю своё.
Вы по граблям ходите, а я разбегаюсь на трамплин :) ---------- Добавлено 02.11.2019 в 08:33 ---------- Кто-то делал класс для сохранения и получения объектов?
К примеру
<?php // пространство имён движка 'core' namespace core; // Класс Объектов class Objects{ public $obj; // Конструктор public function __Construct(){$this->$obj=[];} // Удалить объект public function Remove($nam){unset($this->$obj[$nam]);} // Добавить\заменить объект public function Add($nam,&$obj){$this->$obj[$nam]=(object)$obj;} // Существование объекта public function Exist($nam){return array_key_exists($nam,$this->$obj);} // Получить объект public function &Get($nam){return $this->$obj[$nam]?$this->$obj[$nam]:null;} } ?>
Всё работает хорошо, но в репорте ошибок это
<!-- ERROR's REPORT 8 [D:\OSPanel\domains\evolve.loc\core\Objects.php:8] Undefined variable: obj 8 [D:\OSPanel\domains\evolve.loc\core\Objects.php:8] Undefined variable: obj 4096 [D:\OSPanel\domains\evolve.loc\core\Objects.php:12] Object of class node\Banner could not be converted to string 4096 [D:\OSPanel\domains\evolve.loc\core\Objects.php:12] Object of class node\Menu could not be converted to string 4096 [D:\OSPanel\domains\evolve.loc\core\Objects.php:12] Object of class Closure could not be converted to string 8 [D:\OSPanel\domains\evolve.loc\core\Objects.php:16] Undefined variable: obj 8 [D:\OSPanel\domains\evolve.loc\core\Objects.php:16] Undefined variable: obj 8 [D:\OSPanel\domains\evolve.loc\core\Objects.php:16] Only variable references should be returned by reference -->
Как исправить, кто подскажет?---------- Добавлено 02.11.2019 в 08:38 ----------
На чём пишите?---------- Добавлено 02.11.2019 в 09:20 ----------
А что любите?
Это фремфорк, но для простых людей не знающих html, php... устал уже повторять.
Получается без скрещивания бульдога с носорогом не обойтись. Структура сайта составляется в xml, движок парсит xml подключает узлы, шаблоны и формирует страницу.
Спасибо, я это понимаю. У меня уже есть опыт в разработке большого проекта. Дело в том что я самоучка, варюсь так сказать в собственном соку :) Мне сложно с теми кто используют готовое нежели сами создают своё. Конечно же хочется найти единомышленников хотябы в чём-то получить совет.
Я вас прекрасно понимаю, проще взять готовое и использовать. Но и вы меня поймите, это не для меня, меня существующие продукты не устраивают, по многим причинам.
Не критикуйте мой подход, тогда будет больше взаимопонимания. Я уже убедился, что то что я выбрал(составление структуры в xml это облегчение создания будущих проектов). Мне просто нужно ваше понимание этого и поддержка.
Тогда я покажу свои наработки и надеюсь кто-то поможет в разработке.---------- Добавлено 02.11.2019 в 07:20 ----------
В начале нахожу в xml структуре элементы с атрибутом для кэширования. Если такие есть получаю из базы кэш блоков. Затем при формировании страницы проверяя есть ли кэш вставляю его не обрабатывая вложенные элементы структуры. Если кэша ещё не было, то запоминаю его и сохраняю в базе.
Вы чересчур "умный".. Это форум 'Веб-строительство' я разрабатываю фремворк с новым подходом, здесь объясняю в чём заключается его суть. Во-первых чтобы увидеть критику, я её вижу, делаю выводы, к примеру добавил в движок кэширование. Во-вторых многие не понимают принцип работы движка, да наверно и не хотят, им лишь бы нагрубить и назвать дураком, это нормально когда сами не на что не способны. В-третьих тут есть как кто-то правильно сказал молчуны которые увидев продукт подключились бы к разработке.
В данный момент я не готов выложить код, так как сделано ещё не много, но основа уже есть. Нужны те кто смогут помочь, надеюсь, что такие появятся.
ЗЫ. Буду надеяться, что тролли типа вас это поймут.