Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

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

 

Подскажите, пожалуйста, как исправить ошибку. Я пытаюсь забрать контент для таблицы из внешней базы данных (тоже 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

Рекомендованные сообщения

Опубликовано:

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

Опубликовано:

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

  • 3 недели спустя...
Опубликовано:
  • Автор

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

УСТАРЕВШИЙ КОД
 

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

 

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

 

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

 

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

Опубликовано:

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

 

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

 

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

Опубликовано:

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

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.