Как получить все поля связанной сущности

Все вопросы/проблемы по установке и использовании.
Аватара пользователя
SalahievFR
Сообщения: 277
Зарегистрирован: 22 янв 2023, 10:14
Имя: Фанис Салахиев
Откуда: Россия Казань
Контактная информация:

Re: Как получить все поля связанной сущности

Сообщение SalahievFR »

remchik писал(а): 20 мар 2024, 14:23
SalahievFR писал(а): 19 мар 2024, 20:19
remchik писал(а): 19 мар 2024, 08:37
А чего искать :
app_entities - Сущности
app_fields - Поля

Обратите внимание на тип поля, можете с ним поиграться
Поля и их значения вижу, заголовков не вижу.
Оч странно
Ой я не заметил, что список таблиц делится на страницы. Я искал эти данные на 1 странице списка, а их всего 4, и я нашел эту таблицу в 3 странице списка.)))

Но я не могу все равно правильно создать запрос, чтобы получить не пустые поля, то есть их name и value .

Мой код:

Код: Выделить всё

$value = ''; //Переменная в которой будет хранится значение из списка

//Запрос
$item_query = db_query("SELECT `name` FROM `app_fields` WHERE `entities_id`=27");
if($item = db_fetch_array($item_query))
{
    $value = $item['name'];
}

echo '<b style="color:red">' . $value . '</b>';
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 743
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Как получить все поля связанной сущности

Сообщение Fait »

SalahievFR писал(а): 20 мар 2024, 18:36 Ой я не заметил, что список таблиц делится на страницы. Я искал эти данные на 1 странице списка, а их всего 4, и я нашел эту таблицу в 3 странице списка.)))

Но я не могу все равно правильно создать запрос, чтобы получить не пустые поля, то есть их name и value .

Мой код:

Код: Выделить всё

$value = ''; //Переменная в которой будет хранится значение из списка

//Запрос
$item_query = db_query("SELECT `name` FROM `app_fields` WHERE `entities_id`=27");
if($item = db_fetch_array($item_query))
{
    $value = $item['name'];
}

echo '<b style="color:red">' . $value . '</b>';
У вас запрос составлен так, что выведет вам только 1 значение.
И вот эти кавычки в нём совершенно не нужны
Пробуйте этот код:

Код: Выделить всё

$name = ''; //Переменная в которой будет хранится значение из списка

//Запрос
$item_query = db_query('select * from app_fields where entities_id=27');
foreach ($item_query as $key => $value) {
  $name = $value['name'];
  echo '<b style="color:red">'.$name.'</b><br>';
}
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 743
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Как получить все поля связанной сущности

Сообщение Fait »

Ну а чтобы сделать то, что вы хотели в первом посте, нужно ещё сделать проверку типа поля (если вдруг нужны поля id, created_by, date_added и date_updated), потом составить массив со всеми полями сущности.
И потом сделать уже запрос к таблице с данными, попутно сопоставляя поля и названия, чтобы составить итоговый текст.

Вам в конце нужно получить просто список "Поле1: Значение1", "Поле2: Значение2",...?
Или в таблицу хотите это дело оформить (я бы так сделал)?
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 743
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Как получить все поля связанной сущности

Сообщение Fait »

Короче, способ я показал.
Будут трудности - обращайтесь в ЛС, и я всё сделаю)
Аватара пользователя
SalahievFR
Сообщения: 277
Зарегистрирован: 22 янв 2023, 10:14
Имя: Фанис Салахиев
Откуда: Россия Казань
Контактная информация:

Re: Как получить все поля связанной сущности

Сообщение SalahievFR »

Fait писал(а): 20 мар 2024, 22:26 Ну а чтобы сделать то, что вы хотели в первом посте, нужно ещё сделать проверку типа поля (если вдруг нужны поля id, created_by, date_added и date_updated), потом составить массив со всеми полями сущности.
И потом сделать уже запрос к таблице с данными, попутно сопоставляя поля и названия, чтобы составить итоговый текст.

Вам в конце нужно получить просто список "Поле1: Значение1", "Поле2: Значение2",...?
Или в таблицу хотите это дело оформить (я бы так сделал)?
Мне необходимо собрать поля в виде:
Заголовок поля 1: значения поля 1
Заголовок поля 2: значение поля 2

И вставить это все в другое поле в форме (тип Текст с редактором)
Аватара пользователя
SalahievFR
Сообщения: 277
Зарегистрирован: 22 янв 2023, 10:14
Имя: Фанис Салахиев
Откуда: Россия Казань
Контактная информация:

Re: Как получить все поля связанной сущности

Сообщение SalahievFR »

Fait писал(а): 20 мар 2024, 22:15
SalahievFR писал(а): 20 мар 2024, 18:36 Ой я не заметил, что список таблиц делится на страницы. Я искал эти данные на 1 странице списка, а их всего 4, и я нашел эту таблицу в 3 странице списка.)))

Но я не могу все равно правильно создать запрос, чтобы получить не пустые поля, то есть их name и value .

Мой код:

Код: Выделить всё

$value = ''; //Переменная в которой будет хранится значение из списка

//Запрос
$item_query = db_query("SELECT `name` FROM `app_fields` WHERE `entities_id`=27");
if($item = db_fetch_array($item_query))
{
    $value = $item['name'];
}

echo '<b style="color:red">' . $value . '</b>';
У вас запрос составлен так, что выведет вам только 1 значение.
И вот эти кавычки в нём совершенно не нужны
Пробуйте этот код:

Код: Выделить всё

$name = ''; //Переменная в которой будет хранится значение из списка

//Запрос
$item_query = db_query('select * from app_fields where entities_id=27');
foreach ($item_query as $key => $value) {
  $name = $value['name'];
  echo '<b style="color:red">'.$name.'</b><br>';
}
Спасибо Вам! Буду пробовать дорабатывать Ваш код. Сейчас он выводит все заголовки. Мне нужно будет настроить условие, чтобы выводились заголовки только не пустых полей. И их значения.
nruslan2
Сообщения: 2412
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow
Контактная информация:

Re: Как получить все поля связанной сущности

Сообщение nruslan2 »

Fait писал(а): 20 мар 2024, 22:15

Код: Выделить всё

$item_query = db_query('select * from app_fields where entities_id=27');
foreach ($item_query as $key => $value) {
  $name = $value['name'];
  echo '<b style="color:red">'.$name.'</b><br>';
}
а какой смысл использовать foreach и плодить доппеременную, которая не используется? только забивать ресурсы компа!)
проще использовать без ключа или сразу while)
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 743
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Как получить все поля связанной сущности

Сообщение Fait »

nruslan2 писал(а): 21 мар 2024, 00:49
Fait писал(а): 20 мар 2024, 22:15

Код: Выделить всё

$item_query = db_query('select * from app_fields where entities_id=27');
foreach ($item_query as $key => $value) {
  $name = $value['name'];
  echo '<b style="color:red">'.$name.'</b><br>';
}
а какой смысл использовать foreach и плодить доппеременную, которая не используется? только забивать ресурсы компа!)
проще использовать без ключа или сразу while)
С ключом или без ключа - на производительность не влияет вообще.
Всё-равно массив с ключами формируется.
foreach работает тоже достаточно быстро.
А переменную $name я вывел для наглядности, чтобы понятно было, как забирать значения. Конечно же, можно и без неё)
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 743
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Как получить все поля связанной сущности

Сообщение Fait »

SalahievFR писал(а): 20 мар 2024, 23:09 Спасибо Вам! Буду пробовать дорабатывать Ваш код. Сейчас он выводит все заголовки. Мне нужно будет настроить условие, чтобы выводились заголовки только не пустых полей. И их значения.
Рад помочь!
Тогда сначала нужно собрать все заголовки в массив, используя как ключ id поля, а как значение Название поля.
Потом запрашиваем список записей, считываем значения полей, используя данные из массива с полями.
И там уже проверяем, есть ли в поле значение.
Если есть, то формируем строчку "Заголовок: Значение"
remchik
Сообщения: 254
Зарегистрирован: 19 сен 2019, 11:32
Имя: Remchik
Откуда: Москва

Re: Как получить все поля связанной сущности

Сообщение remchik »

Реально прикольная задача
Код не оптимизировал

Код: Выделить всё

BEGIN


    DECLARE n VARCHAR(200);
    DECLARE v VARCHAR(200);
		DECLARE vv VARCHAR(200);
		DECLARE i INT DEFAULT 2170;
		DECLARE done INT DEFAULT 0;

		DECLARE cur1 CURSOR FOR select id as idd,`name` as namem from app_fields where `name` <>''and entities_id = 26;
		DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
drop table if exists name_tmp;
 create temporary table name_tmp (
    `name` VARCHAR(10),
    `value` VARCHAR(50)
 );
 
 OPEN cur1;
 WHILE NOT done DO
 FETCH cur1 INTO n,vv;
 set @coll = CONCAT('Select Field_',n,' from app_entity_26 where id = ',i,' into @outvar');
 set v = (Select @coll from app_entity_26 where id = i );
 
 PREPARE stmt1 FROM @coll;
 EXECUTE stmt1;
 DEALLOCATE PREPARE stmt1;
 
 INSERT into name_tmp (`name`,`value`) VALUES (vv,@outvar);
 END WHILE;
 
 CLOSE cur1;
 
 
 Select * from name_tmp where `value` <> '';
END
Делаете хранимку, и вперед

v там вроде уже не нужна

Вектор я задал, можно допилить
***
Тружусь как пчелка
***
SQL,BpmOnline,Creatio,BpmSoft,.NET,SAP WMS,MS SQL Server,Windows Server,IIS
Ответить