RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1593767
Accepted
FroggerProgger
FroggerProgger
Asked:2024-09-14 00:15:28 +0000 UTC2024-09-14 00:15:28 +0000 UTC 2024-09-14 00:15:28 +0000 UTC

1C Bitrix中多字段的问题

  • 772

该数据库包含“Box 2 - 12 cells”类型的产品。他们没有将产品充分划分为 11 种产品,而是制作了 1 种带有签名的产品。我来了,需要以某种方式自动化计数过程。计算时使用数据库中的数据,最重要的是体积和重量。我尝试使用多个字段作为解决方案,期望在输出中得到 2 个数组。 1 - 重量,2 - 体积。

在此输入图像描述

然而,我得到的输出只是选项的乘法。也就是我得到了11*11的组合。

我只展示一部分

在此输入图像描述

为了从 php 输出,我使用以下代码:

$arSort = array("SORT" => "ASC", "NAME" => "ASC");
$arFilter = array("IBLOCK_ID" => $IBLOCK_ID, "ACTIVE" => "Y");
$arSelect = array("ID", "NAME", "PROPERTY_FILTER_PRICE", "PROPERTY_PR_VES","PROPERTY_PROD_VOLUME" , "DETAIL_PICTURE", "DETAIL_TEXT");
$obIBlockResult = CIBlockElement::GetList($arSort, $arFilter, false, false, $arSelect);

$data = array();
while ($arFields = $obIBlockResult->GetNext()) {
    $data[] = $arFields;
}


if (isset($_GET['ELEMENT_ID'])) {
    $elementId = intval($_GET["ELEMENT_ID"]);
    $obIBlockResult = CIBlockElement::GetByID($elementId);

    if ($obIBlockResult && $obIBlockResult->SelectedElement()) {
        $result = [];
        while ($ob = $obIBlockResult->GetNextElement()) {
            $arFields = $ob->GetFields();
            $arProps = $ob->GetProperties();
            $result[] = $arProps;
        }
        echo json_encode($result);
    } else {
        http_response_code(404);
        echo "Элемент не найден";
    }
}

这是js

$("#chooseProduct").on("change.select2", function (e) {
            var selectedId = e.target.value;
            var selectedElement = null;
            var elements = <?= json_encode($data) ?>;

            console.log(elements) // Именно на этом этапе мне выводит 121 элемент
            $('#product-image').css('display', 'flex');

            $('#product-image').html(' <div class="circle"></div> <div class="circle" style = "animation-delay: 0.5s;"> </div> <div class="circle" style="animation-delay: 1s;"></div>');

            for (var i = 0; i < elements.length; i++) {
                if (elements[i].ID === selectedId) {
                    selectedElement = elements[i];
                    break;
                }
            }

            $.ajax({
                url: "?DETAIL_IMAGE=" + selectedElement.DETAIL_PICTURE,
                success: function (pictureUrl) {
                    if (pictureUrl) {
                        $('#product-image').html('');
                        $('#product-image').css('display', 'inline');
                        $('<img>').attr('src', pictureUrl).attr('width', '400').attr('height', '400').appendTo('#product-image');
                        $('<div class="production-description">')
                            .html(selectedElement.DETAIL_TEXT)
                            .appendTo('#product-image');
                        $("#window").show()
                    } else {
                        $('#product-image').html('');
                    }
                }
            });

            $('.money-count').text(`${selectedElement.PROPERTY_FILTER_PRICE_VALUE} рублей`);
            updateTotalPrice();
            window.selectedElement = selectedElement
        })
        ;


        function setPriceFields(product) {
            $(".money-count").textContent = product.price
            $(".total-money-count").textContent = product.price * product.count
        }

        function addProductToList() {
            let counter = $('#count')[0];
            let product = {}
            console.log(selectedElement)
            product.name = selectedElement.NAME;
            product.priceForOne = parseFloat(selectedElement.PROPERTY_FILTER_PRICE_VALUE)
            product.params = []
            product.params.push(["Вес", selectedElement.PROPERTY_PR_VES_VALUE])
            product.weight = parseFloat(selectedElement.PROPERTY_PR_VES_VALUE) * counter.value;
            product.volume = parseFloat(selectedElement.PROPERTY_PROD_VOLUME_VALUE) * counter.value;
            product.count = parseInt(counter.value)
            product.priceForAll = parseFloat(product.priceForOne * product.count)

            console.log(product)
            counter.value = 1
            window.products.push(product)
            $("#product-image").hide()
            clearPriceFields()
            clearFirstSelect()

            $(".button-container").show();
            $(".adding_info").show();
        }
javascript
  • 1 1 个回答
  • 37 Views

1 个回答

  • Voted
  1. Best Answer
    Konstantin Likhachev
    2024-09-24T12:17:43Z2024-09-24T12:17:43Z

    或者,做

    $iblockClass = \Bitrix\Iblock\Iblock::wakeUp($IBLOCK_ID)->getEntityDataClass();
    $items = $iblockClass::getList([
      "order"  => ["SORT" => "ASC", "NAME" => "ASC"],
      "filter" => ["ACTIVE" => "Y"],
      "select" => ["ID", "NAME", "FILTER_PRICE", "PR_VES","PROD_VOLUME" , "DETAIL_PICTURE", "DETAIL_TEXT"]
    ]);
    

    然后循环fetchObject获取数据

    $data = [];
    while ($item = $items->fetchObject()) {
      $data[] = [
        "ID"             => $item->getId(),
        "NAME"           => $item->getName(),
        "DETAIL_PICTURE" => $item->getDetailPicture(),
        "DETAIL_TEXT"    => $item->getDetailText(),
        "PR_VES"         => array_map(static function ($value) {
            return $value->getValue();
        }, $item->get("PR_VES")?->getAll()),
        "PROD_VOLUME"    => array_map(static function ($value) {
            return $value->getValue();
        }, $item->get("PROD_VOLUME")?->getAll()),
      ];
    }
    
    • 0

相关问题

  • 第二个 Instagram 按钮的 CSS 属性

  • 由于模糊,内容不可见

  • 弹出队列。消息显示不正确

  • 是否可以在 for 循环中插入提示?

  • 如何将 JSON 请求中的信息输出到数据表 Vuetify vue.js?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5