Страница 2 из 2
Re: Нужна помощь с получением ID записи
Добавлено: 16 мар 2024, 09:06
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 (5.04 КБ) 297 просмотров
Поскольку такое действие позволит удобно загрузить все коды в данное поле и изменить статусы всех заказов.
Я пытался сделать это сам, но статус заказов так и не изменился.
Код: Выделить всё
$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);
}
}
Re: Нужна помощь с получением ID записи
Добавлено: 16 мар 2024, 10:55
tehnos
Ориентировочный алгоритм действий:
Сначала надо сделать выборку значений из app_entity_29. Затем циклом преобразовывать в массивы с помощью preg_split. Затем вложенным циклом сравнивать значения из массивов с field_214 и менять статусы.
Но надо решить как ограничить выборку из app_entity_29. Может быть у Вас там есть какое-то поле с отметкой о выполнении задачи по сравнению... или тоже какие-то статусы применяются.
Re: Нужна помощь с получением ID записи
Добавлено: 16 мар 2024, 11:11
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);
}
}
}
Re: Нужна помощь с получением ID записи
Добавлено: 16 мар 2024, 15:13
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);
}
}
}