Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
vinegredz

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

Recommended Posts

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

{{$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() я не осилил.

Share this post


Link to post
Share on other sites

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...