ArbNet

ArbNet
Рейтинг
156
Регистрация
27.10.2019
Программист самоучка
Aisamiery:
Вопросы то ли от не знания, то ли от того что сильно плаваете в теме.

Кому то другому не стал бы отвечать, но у вас пытливый ум и обширные знания. Я долгое время не занимался веб разработками поэтому что и не знал забыл, сейчас учусь практически заново, конечно я плаваю в теме. И у меня манера сразу приступать к делу и по ходу уже решать разные задачки как это сделать. Есть идеи, но нет знаний в данном случае конструкций запросов mysql.

Aisamiery:
Первый вопрос - процедура. Зачем вы вызываете процедуры в MySQL? Передайте в запрос сразу нужные вам параметры с клиента.

Я сейчас делаю PHP драйвер для получения данных сущности из MySql.

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

Идея следующая.

Есть так скажем стандартные таблицы под определённый тип данных. Например: Integer, Text и тд. В этих таблицах по два поля id и value

Теперь я могу в коде PHP прописать структуру сущности в простом массиве


$info= [ "svoystvo1" => "Integer",
"svoystvo2" => "Text",
];

То есть передав в драйвер массив структуры сущности, драйвер будет искать данные в разных таблицах Integer и Text соответственно и возвратит этот же массив сущности но уже с данными.

А чтобы выборка данных была быстрее я создал таблицу записей сущностей в которой поля name(имя сущности) и record(массив id строк значений свойств).

То есть в начале запроса происходит получение данных record потом формируется запрос с выборкой из разных таблиц данных по id

Aisamiery:
Есть такое понятие как Внешний ключ (Foreign key), погуглите, возможно вы это ищите

Я знаю про внешний ключ. По началу думал добавить ещё поле в таблицы данных по которому отслеживать принадлежность этих данных, но лишние манипуляции с дополнительным полем мне тут как-то не нужны, поэтому стал искать другие варианты.

---------- Добавлено 23.05.2020 в 10:44 ----------

Stek, Спасибо. Поэкспериментирую с триггерами.

Если кому интересно, вот описание как их применять https://habr.com/ru/post/37693/

Х.З.:
книгу Мартина Грабера

Спасибо, скачал, почитаю.

habr.com/ru/post/488054

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

Ещё вопрос.

Есть ли в MySql такой механизм отслеживающий ссылается ли что-то на строку данных или нет, и если нет то её можно удалить, иначе нельзя.

Немного поясню. Есть две или более сущностей и какие либо их записи ссылаются на данные одной и той же таблицы.

Допустим возникает момент когда удаляются эти записи сущностей и на данные той таблицы никто уже не ссылается их также можно удалить, как такой механизм можно реализовать?

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

Aisamiery, спасибо за пояснение. Я полгода буквально всё заново стал изучать, поэтому путаюсь, уж извините за глупые вопросы :) У меня по поводу MySql процедурам и функциям возник вопрос, думаю надо тему создать, есть идея но как это реализовать...

Aisamiery:
PS. Хреново когда не знаешь, да еще и забудешь

А перед обращением к объекту его разве не надо создать

$DB=new DB(); echo $DB::method();

Aisamiery:
Это статический метод класса

Если бы был знак $ перед $DB::query вопросов нет

::query - да, статичный метод

К статичному методу класса обращаются через self::$query или извне $DB::$query

А вот это "DB::query" мне не понятно стало

Извиняюсь, конечно, последнее время писал только на JS, PHP подзабывать стал

А мне интересно стало "DB::query" у вас объект базы данных присвоен PHP константе? по типу: define('DB',DataBase::Instance());

Anamnado, Изучай CSS делай сам или заказывай разработку\настройку нужного тебе меню, тут других вариантов нет. Я показал принцип показа подменю по клику, чтобы довести до ума надо знать CSS и думаю ещё JS нужен чтобы скрыть открытое подменю при клике на другой пункт, иначе не красиво будет.

Anamnado:
пункт блог - улетел

С CSS совсем не дружишься?

Чем выпадающее меню не нравится? например https://snipp.ru/html-css/main-menu

Anamnado:
сложно придумать структуру этого меню)


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Тест</title>
<style>
ul.menu {
display: flex;
list-style: none;
}
ul.menu li {
margin: 0.5em;
padding: 0.3em;
border: 1px solid;
}
ul.menu input, ul.menu ul {display: none}
ul.menu input:checked ~ ul {display: block}
ul.menu ul {
position: relative;
}
ul.menu li ul {
left: 0.5em;
position: absolute;
}
</style>
</head>
<body>
<ul class="menu">
<li><label for=m1>Пункт 1</label>
<input id=m1 type="checkbox">
<ul class="menu">
<li>Подменю 1</li>
<li>Подменю 2</li>
</ul>
</li>
<li>Пункт 2</li>
</ul>

</body>
<script>

</script>
</html>

Вот тебе мой велосипед, дальше сам додумаешь...

Всего: 2538