Страница 2 из 4

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

Добавлено: 20 мар 2024, 18:36
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>';

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

Добавлено: 20 мар 2024, 22:15
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>';
}

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

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

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

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

Добавлено: 20 мар 2024, 22:28
Fait
Короче, способ я показал.
Будут трудности - обращайтесь в ЛС, и я всё сделаю)

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

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

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

И вставить это все в другое поле в форме (тип Текст с редактором)

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

Добавлено: 20 мар 2024, 23:09
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>';
}
Спасибо Вам! Буду пробовать дорабатывать Ваш код. Сейчас он выводит все заголовки. Мне нужно будет настроить условие, чтобы выводились заголовки только не пустых полей. И их значения.

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

Добавлено: 21 мар 2024, 00:49
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)

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

Добавлено: 21 мар 2024, 07:36
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 я вывел для наглядности, чтобы понятно было, как забирать значения. Конечно же, можно и без неё)

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

Добавлено: 21 мар 2024, 07:44
Fait
SalahievFR писал(а): 20 мар 2024, 23:09 Спасибо Вам! Буду пробовать дорабатывать Ваш код. Сейчас он выводит все заголовки. Мне нужно будет настроить условие, чтобы выводились заголовки только не пустых полей. И их значения.
Рад помочь!
Тогда сначала нужно собрать все заголовки в массив, используя как ключ id поля, а как значение Название поля.
Потом запрашиваем список записей, считываем значения полей, используя данные из массива с полями.
И там уже проверяем, есть ли в поле значение.
Если есть, то формируем строчку "Заголовок: Значение"

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

Добавлено: 21 мар 2024, 10:39
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 там вроде уже не нужна

Вектор я задал, можно допилить