Нужна помощь с получением ID записи

Все вопросы/проблемы по установке и использовании.
Аватара пользователя
Parazit00
Сообщения: 30
Зарегистрирован: 04 мар 2024, 19:21
Имя: Артём
Откуда: Казахстан, Тараз
Контактная информация:

Re: Нужна помощь с получением ID записи

Сообщение Parazit00 »

tehnos писал(а): 15 мар 2024, 21:09 Опять ничего не понятно. Какое поле... какой строке изменить статус... Ну или может я тупой. Вот Вам наводка, а дальше думайте алгоритм сравнений.
Для превращения текста из поля ($text) в массив значений ($text_arr) с разделением по пробелу или по переносу строки используйте:

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

$text_arr = preg_split("/\s+/", $text, 0, PREG_SPLIT_NO_EMPTY);
Я хочу изменить данный код. а именно поле field_265 я сейчас использую как Поле ввода

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

$entity_id = 25; 
$data = array('field_217' => 75);
$query = db_query("SELECT `id` FROM `app_entity_25` WHERE `field_214` IN (SELECT `field_265` FROM `app_entity_29` WHERE `field_265` <> '')");
// если в результате запроса вернётся несколько записей используем цикл чтобы обработать все
while($result = mysqli_fetch_assoc($query)) {
	$item_id = $result['id'];
	items::update_by_id($entity_id, $item_id, $data);
}
А в данный момент пытаюсь изменить на Поле для текста
Screenshot_19.png
Screenshot_19.png (5.04 КБ) 255 просмотров
Поскольку такое действие позволит удобно загрузить все коды в данное поле и изменить статусы всех заказов.

Я пытался сделать это сам, но статус заказов так и не изменился. :(

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

$entity_id = 25;
$data = array('field_217' => 75);

// Предполагается, что $text содержит текст, разделенный на строки.
$text_arr = preg_split("/\s+/", $text, 0, PREG_SPLIT_NO_EMPTY);

foreach ($text_arr as $text_line) {
    // Выполнить запрос и обновление данных для каждой строки текста.
    $query = db_query("SELECT `id` FROM `app_entity_25` WHERE `field_214` IN (SELECT `field_265` FROM `app_entity_29` WHERE `field_265` <> '$text_line')");
    
    // Обрабатываем результаты запроса.
    while ($result = mysqli_fetch_assoc($query)) {
        $item_id = $result['id'];
        items::update_by_id($entity_id, $item_id, $data);
    }
}
tehnos
Сообщения: 127
Зарегистрирован: 13 сен 2021, 17:10
Имя: Евгений
Откуда: Алушта

Re: Нужна помощь с получением ID записи

Сообщение tehnos »

Ориентировочный алгоритм действий:
Сначала надо сделать выборку значений из app_entity_29. Затем циклом преобразовывать в массивы с помощью preg_split. Затем вложенным циклом сравнивать значения из массивов с field_214 и менять статусы.

Но надо решить как ограничить выборку из app_entity_29. Может быть у Вас там есть какое-то поле с отметкой о выполнении задачи по сравнению... или тоже какие-то статусы применяются.
tehnos
Сообщения: 127
Зарегистрирован: 13 сен 2021, 17:10
Имя: Евгений
Откуда: Алушта

Re: Нужна помощь с получением ID записи

Сообщение tehnos »

Адаптируйте код. Замените ??? на что-то, что подходит для решения задачи.

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

$entity_id = 25; 
$data = array('field_217' => 75);

$query = db_query("SELECT `field_265` AS `track_numbers` FROM `app_entity_29` WHERE `field_???` = '??????????' AND `field_265` <> ''");

while($val = mysqli_fetch_assoc($query)) {
	$track_numbers_arr = preg_split("/\s+/", $val['track_numbers'], 0, PREG_SPLIT_NO_EMPTY);
	
	foreach($track_numbers_arr AS $track_number) {
		$id_query = db_query("SELECT `id` FROM `app_entity_25` WHERE `field_214` = '{$track_number}'");
		
		while($result = mysqli_fetch_assoc($id_query)) {
			$item_id = $result['id'];
			items::update_by_id($entity_id, $item_id, $data);
		}
	}
}
Аватара пользователя
Parazit00
Сообщения: 30
Зарегистрирован: 04 мар 2024, 19:21
Имя: Артём
Откуда: Казахстан, Тараз
Контактная информация:

Re: Нужна помощь с получением ID записи

Сообщение Parazit00 »

tehnos писал(а): 16 мар 2024, 11:11 Адаптируйте код. Замените ??? на что-то, что подходит для решения задачи.

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

$entity_id = 25; 
$data = array('field_217' => 75);

$query = db_query("SELECT `field_265` AS `track_numbers` FROM `app_entity_29` WHERE `field_???` = '??????????' AND `field_265` <> ''");

while($val = mysqli_fetch_assoc($query)) {
	$track_numbers_arr = preg_split("/\s+/", $val['track_numbers'], 0, PREG_SPLIT_NO_EMPTY);
	
	foreach($track_numbers_arr AS $track_number) {
		$id_query = db_query("SELECT `id` FROM `app_entity_25` WHERE `field_214` = '{$track_number}'");
		
		while($result = mysqli_fetch_assoc($id_query)) {
			$item_id = $result['id'];
			items::update_by_id($entity_id, $item_id, $data);
		}
	}
}
Большое спасибо вам за то, что тратите свое время на меня и подсказываете.
Я реализовал это, но не уверен, правильно ли я сделал.
Статусы клиентов у меня меняются...
Я буду продолжать изучать и стараться понять, как все это работает.
И простите меня за то, что не могу сразу передать мысль того, чего я пытаюсь добиться.

Вот так я сделал по вашему примеру.

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

$entity_id = 25; 
$data = array('field_217' => 75);

$query = db_query("SELECT `field_265` AS `track_numbers` FROM `app_entity_29` WHERE `field_265` <> ''");

while($val = mysqli_fetch_assoc($query)) {
    $track_numbers_arr = preg_split("/\s+/", $val['track_numbers'], 0, PREG_SPLIT_NO_EMPTY);
    
    foreach($track_numbers_arr AS $track_number) {
        $id_query = db_query("SELECT `id` FROM `app_entity_25` WHERE `field_214` = '{$track_number}'");
        
        while($result = mysqli_fetch_assoc($id_query)) {
            $item_id = $result['id'];
            items::update_by_id($entity_id, $item_id, $data);
        }
    }
}
Ответить