Новости Joomla

Вышли релизы безопасности Joomla 6.0.4 и Joomla 5.4.4

Релиз безопасности Joomla 6.0.4 и Joomla 5.4.4

Проект Joomla! рад сообщить о выходе Joomla 6.0.4 и Joomla 5.4.4. Это релизы безопасности и исправления ошибок для серий 5.x и 6.x.

👩‍💻 WT CDEK library v.1.3.0 - обновление PHP SDK для Joomla + CDEK.

👩‍💻 WT CDEK library v.1.3.0 - обновление PHP SDK для Joomla + CDEK.

Небольшая нативная PHP Joomla библиотека для работы с API v.2 службы доставки CDEK. Библиотека представляет собой клиент для авторизации в CDEK API по OAuth, работы с некоторыми методами API: получения ряда данных и расчета стоимости доставки. Поддерживается Joomla 4.2.7 и выше.

В пакет входят:
- библиотека Webtolk/Cdekapi
- системный плагин System - WT Cdek для хранения настроек и AJAX-интеграций
- task-плагин Task - Update WT Cdek data для обновления локальных копий справочников CDEK по расписанию
- web asset с официальным JavaScript-виджетом СДЭК

👉 v.1.3.0. Что нового?
- Полный рефакторинг библиотеки. Библиотека переработана в entity-based API с фасадом Cdek и отдельным слоем запросов. Обратная совместимость не нарушена, поэтому версия библиотеки - 1.3.0.
- Добавлена поддержка новых разделов API СДЭК. Добавлена поддержка новых разделов API СДЭК: webhooks, prealert, печатные формы, payment, passport, reverse, intakes и других сущностей.
- Улучшена интеграция с Joomla.
Улучшена интеграция с Joomla: installer script для layouts, новые поля Joomla Form для тарифов и обновлённые js виджета CDEK.
- документация библиотеки. Все методы библиотеки подробно описаны, а так же текст документации собран в отдельной папке в git репозитории и будет опубликован на сайте.

Библиотека эта нужна для разработчиков, создающих свои расширения для интеграции Joomla и курьерской службы CDEK.

Страница расширения
GitHub расширения

@joomlafeed

0 Пользователей и 1 Гость просматривают эту тему.
  • 5 Ответов
  • 966 Просмотров
*

goga_pgasovav

  • Захожу иногда
  • 445
  • 6 / 0
  • Внимательный джумловод
Всем привет!
Прошу помощи у гуру PHP в оптимизации запроса к базе данных.
Сейчас у меня как-то так вышло:

Код
<?php
$db = &JFactory::getDBO();
$tstsmls = $db->setQuery("SELECT SubmissionId FROM #__rsform_submissions WHERE UserId = 1")->loadColumn();
foreach  ($tstsmls as $tstsml) { ?>
                <div class="testimonial">
                    <div class="name"><?php echo $db->setQuery("SELECT FieldValue FROM #__rsform_submission_values WHERE SubmissionId = '$tstsml' AND FormID = 3 AND FieldName = 'Fullname'")->loadResult(); ?></div>
                    <div class="city"><?php echo $db->setQuery("SELECT FieldValue FROM #__rsform_submission_values WHERE SubmissionId = '$tstsml' AND FormID = 3 AND FieldName = 'City'")->loadResult(); ?></div>
                    <div class="message"><?php echo $db->setQuery("SELECT FieldValue FROM #__rsform_submission_values WHERE SubmissionId = '$tstsml' AND FormID = 3 AND FieldName = 'Message'")->loadResult(); ?></div>
                </div>
<?php } ?>

Объясню.. Хочу выводить данные, отправдленные с формы сайта (отзывы).
Сначала я делаю запрос к таблице, в которой хранятся ID отзывов, и получаю SubmissionId
Зная ID я хочу получить значения из другой таблицы (Имя, город, отзыв).
И получается так, что мне приходится для каждого отзыва делать ещё аж по три запроса!
В колонке FieldName хранится имя поля, а в соседней колонке FieldValue значение этого поля...
Как бы мне все три значения получить в одном запросе, а потом (возможно с помощью json_decode) выводить их в нужном месте?  :dry:

Заранее благодарю всех откликнувшихся  !!!???!!!
« Последнее редактирование: 07.12.2020, 18:46:47 от goga_pgasovav »
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Оптимизировать getDBO запрос
« Ответ #1 : 07.12.2020, 21:43:50 »
Думаю, Вам стоит оптимизировать не только запрос, но и подход.
В одном запросе получить все данные, а потом перебором foreach брать нужные.
На саму таблицу RS я не смотрел, но судя по Вашему коду, попробуйте примерно такой запрос (даю с 2 джоинами, чтобы 3-й Вы сами добавили):

Код
SELECT s.SubmissionId, v1.FieldValue AS Fullname, v2.FieldValue AS City
FROM #__rsform_submissions s
LEFT JOIN #__rsform_submission_values v1 USING(SubmissionId)
LEFT JOIN #__rsform_submission_values v2 USING(SubmissionId)
WHERE
    s.UserId = 1
    AND v1.FormID = 3
    AND v1.FieldName = 'Fullname'
    AND v2.FormID = 3
    AND v2.FieldName = 'City'
ORDER BY s.SubmissionId ASC

И метод потом loadObjectList

P.S. Не совсем понял Ваше условие UserId=1, но оставил, раз есть в исходном примере.
Возможно, будет интересно: Интеграция с Ozon
*

goga_pgasovav

  • Захожу иногда
  • 445
  • 6 / 0
  • Внимательный джумловод
Re: Оптимизировать getDBO запрос
« Ответ #2 : 07.12.2020, 22:24:46 »
Невероятно!  :D Вот это код... Я бы до такого никогда не додумался.
Вместо постоянного долбления БД запросами, получается всего один запрос!  :o
Нижайший поклон вам! Всё получилось!

Для тех, у кого будут возникать подобные вопросы, добавлю код, который поможет выводить данные.

Код
$tstsmls = json_decode(json_encode($db->loadObjectList()), true);
foreach  ($tstsmls as $tstsml) {
    echo $tstsml['Fullname'];
    echo $tstsml['City'];
}

Ну и так далее.
Третий параметр я так же добавил в своём коде, как и разметку нужную.
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Оптимизировать getDBO запрос
« Ответ #3 : 07.12.2020, 23:29:27 »
 ;)

Возможно, в json и обратно - лишнее.
Если это для того, чтобы был список массивов, в не объектов,
тогда, пожалуй, проще просто использовать loadAssocList(), вместо loadObjectList().
Возможно, будет интересно: Интеграция с Ozon
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Оптимизировать getDBO запрос
« Ответ #4 : 08.12.2020, 04:47:49 »
Возможно, в json и обратно - лишнее.
А так ?
Код
$tstsmls = $db->loadObjectList();
foreach  ($tstsmls as $tstsml) {
    echo $tstsml->Fullname;
    echo $tstsml->City;
}
*

goga_pgasovav

  • Захожу иногда
  • 445
  • 6 / 0
  • Внимательный джумловод
Re: Оптимизировать getDBO запрос
« Ответ #5 : 10.12.2020, 12:36:56 »
;)

Возможно, в json и обратно - лишнее.
Если это для того, чтобы был список массивов, в не объектов,
тогда, пожалуй, проще просто использовать loadAssocList(), вместо loadObjectList().

Вы абсолютно правы! Именно loadAssocList() сработало. Я понимал что туда сюда в json гонять как-то неправильно, но о loadAssocList никогда не слышал  ^-^

А так ?
Код
$tstsmls = $db->loadObjectList();
foreach  ($tstsmls as $tstsml) {
    echo $tstsml->Fullname;
    echo $tstsml->City;
}

Это первое, что я попробовал, но оно не сработало. Ошибку выдаёт Joomla: 0 - Cannot use object of type stdClass as array
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[решено] создать MySQL-запрос по красоте :)

Автор effrit

Ответов: 13
Просмотров: 1369
Последний ответ 30.09.2017, 16:58:21
от effrit
Запрос в бд

Автор sSeifeRr

Ответов: 7
Просмотров: 1330
Последний ответ 02.08.2017, 18:28:19
от sSeifeRr
sql запрос из материла Joomla

Автор xak400

Ответов: 1
Просмотров: 1179
Последний ответ 30.06.2017, 09:45:32
от SmokerMan
Как составить запрос с выбором данных из строки с разделителем?

Автор denism300

Ответов: 34
Просмотров: 2694
Последний ответ 20.11.2016, 21:48:07
от robert
Как после сохранения заменить текст/дескрипшн (сделать sql запрос)?

Автор Karyuudo

Ответов: 2
Просмотров: 1375
Последний ответ 09.09.2015, 13:41:54
от Karyuudo