Как получить данные из внешней базы данных? - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

СвернутьПрикрепленные теги

Теги не найдены

Страница 1 из 1

Как получить данные из внешней базы данных?

#1 Пользователь не на сайте   vinegredz ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 197
  • Регистрация: 17-Январь 14
  • Репутация: 3
  • IPB version:3.4.x
 

Отправлено 14 Март 2019 - 19:00

Здравствуйте!

Подскажите, пожалуйста, как исправить ошибку. Я пытаюсь забрать контент для таблицы из внешней базы данных (тоже IPS).

// Создал подключение к внешней базе данных (работает)
{{$connection = \IPS\Db::i( 'mydatabase ', array('sql_host' => 'localhost', 'sql_user' => 'user', 'sql_pass' => 'password', 'sql_database' => 'database', 'sql_port' => 3306, 'sql_socket' => '/var/lib/mysql/mysql.sock', 'sql_utf8mb4' => true,) );}}

// Получил данные из конкретного поля (работает)
{{$select = \IPS\Db::i( mydatabase )->select( '*', 'cms_custom_database_8', array( 'primary_id_field=?', 5231 ) )->first();}}
{$select['field_21']}

// Пытаюсь получить данные 
{{$table = new \IPS\Helpers\Table\Content('IPS\cms\Records8', $record->url(), array(array(\IPS\Db::i( mydatabase )->findInSet('field_21', array($model_id)))));}}
{$table|raw}


Получаю ошибку (Class 'IPS\cms\Records8' not found), что не существует класса IPS\cms\Records8, что логично, потому что этот класс есть только в другой установке IPB. Подставлял сюда класс, который существует для установки, из которой делается подключение, но тогда ошибка, что не найдена колонка field_21 в базе данных. Читал документацию, но не нашел что еще принимает этот параметр на входе. Весь код использую в шаблонах IPB Pages. И первая и вторая установки версии 4.3.6
0

#2 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 9 443
  • Регистрация: 20-Март 09
  • Репутация: 2 544
  • IPB version:3.1.x
 

Отправлено 14 Март 2019 - 19:10

А с чего должно быть такого класса? Этот класс имеет единственное название - IPS\cms\Records
0

#3 Пользователь не на сайте   Dmitriy427 ответил: »

 
 
  • Advanced
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 684
  • Регистрация: 15-Октябрь 11
  • Репутация: 197
  • Откуда:Россия, Тула
  • IPB version:I have no IPB
 

Отправлено 14 Март 2019 - 19:57

Вы не можете использовать класс \IPS\Helpers\Table\Content для работы со сторонней БД. Можете разместить скрипт на втором сайте и получить готовый HTML в другой скрипт, на первом, с помощью file_get_contents().
0

#4 Пользователь не на сайте   vinegredz ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 197
  • Регистрация: 17-Январь 14
  • Репутация: 3
  • IPB version:3.4.x
 

Отправлено 05 Апрель 2019 - 12:41

Сделал работающий вариант:

{{$servername = "localhost";}}
{{$database = "localhost";}}
{{$username = "localhost";}}
{{$password = "localhost";}}

{{$conn = mysqli_connect($servername, $username, $password, $database);}}
{{$conn-> query("SET NAMES utf8");}}
{{$sql = "SELECT * FROM cms_custom_database_13 WHERE record_approved = 1";}}
{{$result = mysqli_query($conn, $sql);}}
{{$orders_count = mysqli_num_rows($result);}}

{{if $orders_count > 0}}

    {{foreach $result as $row}}

          {$row['primary_id_field']}  

    {{endforeach}}

{{endif}}

{{mysqli_close($conn);}}


И по сути я могу управлять шаблоном вывода как захочется, но это не удобно, потому что приходится вносить правки в двух местах сразу.

Поэтому вопрос. Как мне выводить данные из внешней базы данных используя шаблон template_id = 3 таблицы cms_templates этой же внешней базы данных?

Или я слишком мудрю и есть способы проще без минусов?

Вариант с file_get_contents() я не осилил.
0

#5 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 9 443
  • Регистрация: 20-Март 09
  • Репутация: 2 544
  • IPB version:3.1.x
 

Отправлено 05 Апрель 2019 - 13:14

А чем класс форума из первого примера для работы с внешней бд не устраивает? Подключение можно вывести в отдельный файл который отрабатывает в обоих случаях, а в шаблоне использовать только запросы.

Ну можете создать файл, где происходит запросы, а в шаблоне обращаться к нему через file_get_contents.

А вообще, делайте по мере своих возможностей, если работает то не стоит усложнять себе задачу.
0

#6 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 9 443
  • Регистрация: 20-Март 09
  • Репутация: 2 544
  • IPB version:3.1.x
 

Отправлено 05 Апрель 2019 - 13:20

Кстати можно создать шаблон форума, встунуть туда ваш код и подключать его в нужном месте.
0

Сообщить об этой теме:


Страница 1 из 1


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2019 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна