Jump to content
  • 0

Dodanie rekordu do innej bazy danych w chwili rejestracji na forum


Go to solution Solved by Spanner,

Question

Hej!

Czy istnieje jakiś prosty sposób na dodanie do tabeli w innej bazie danych rekordu (e-mail,nazwa, id usera oraz id rangi podanych podczas rejestracji) podczas zarejestrowania konta na forum? 

Chodzi tutaj o zaoszczędzenie czasu podczas logowania na serwerze wykorzystującym drugą bazę. (Do tej pory odbywało się to przy pomocy skryptu serwera który przepatrywał najpierw tabel userów w bazie forum i potem ew. sobie ją dodawał do swojej bazy).

 

Pozdrawiam.

Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 0
  • Administrator
  • Solution
$connection = \IPS\Db::i( 'external', array(
            'sql_host'        => 'localhost',
            'sql_user'        => 'user',
            'sql_pass'        => 'haslo',
            'sql_database'    => 'baza',
            'sql_port'        => 3306,
            'sql_socket'    => '/var/lib/mysql.sock',
            'sql_utf8mb4'    => true,
        ) );

        $new_id = \IPS\Db::i()->insert( 'Accounts', array(
            'Email' => $email,
            'ForumUserID' => $id,
            'Name' =>$name,
            'PrimaryForumGroup'=> $primary_group_id) );
	}

a co to ma być?

ten kod powinien wyglądać inaczej:

        $new_id = \IPS\Db::i('external', array(
            'sql_host'        => 'localhost',
            'sql_user'        => 'user',
            'sql_pass'        => 'haslo',
            'sql_database'    => 'baza',
            'sql_port'        => 3306,
            'sql_socket'    => '/var/lib/mysql.sock',
            'sql_utf8mb4'    => true,
        ))->insert( 'Accounts', array(
            'Email' => $email,
            'ForumUserID' => $id,
            'Name' =>$name,
            'PrimaryForumGroup'=> $primary_group_id) );
	}

 

Link to post
Share on other sites
  • 0
  • Administrator
2 minuty temu, cherro0125 napisał:

Hej!

Czy istnieje jakiś prosty sposób na dodanie do tabeli w innej bazie danych rekordu (e-mail,nazwa, id usera oraz id rangi podanych podczas rejestracji) podczas zarejestrowania konta na forum? 

Chodzi tutaj o zaoszczędzenie czasu podczas logowania na serwerze wykorzystującym drugą bazę. (Do tej pory odbywało się to przy pomocy skryptu serwera który przepatrywał najpierw tabel userów w bazie forum i potem ew. sobie ją dodawał do swojej bazy).

 

Pozdrawiam.

Tak, nawet kilka sposobów 🙂

jeśli ma to służyć do logowania to najprościej będzie Ci napisać login handler, który będzie łączył obie strony. Na tej drugiej stronie tworzysz aplikację do logowania OAuth'em czy coś i łączysz obie strony.

Możesz też napisać swoją aplikację i wtedy napisać własne zdarzenie dla onCreate (member account) i tam dodawać rekordy do innej bazy

Link to post
Share on other sites
  • 0

Czyli przy stworzeniu appki wywołuje handler pod event onCreate który zwróci mi obiekt konta użytkownika po jego utworzeniu? Czy może to całkowicie przeciąża funkcje tworzenia nowego konta na forum i trzeba obsłużyć wtedy tez tworzenie konta na forum?

Link to post
Share on other sites
  • 0
  • Administrator

nic nie musisz przeciążać. W narzędziach developera wchodzisz na zakładkę Extensions -> core i tworzysz rozszerzenie MemberSync. Skrypt utworzy plik i odpowiednie metody, które sobie możesz zaadoptować wg. swojej koncepcji

Link to post
Share on other sites
  • 0
  • Administrator

W jakim sensie?

Robisz normalnie $member-> ...

a pola znajdziesz w bazie danych chyba że masz dev tools to wygeneruje Ci klasę pośrednią 🙂

Link to post
Share on other sites
  • 0
public function onCreateAccount( $member )
	{
        $id = $member->member_id;
        $email = $member->email;
        $primary_group_id = $member->member_group_id;
        $name = $member->name;
        $connection = \IPS\Db::i( 'external', array(
            'sql_host'        => 'localhost',
            'sql_user'        => 'user',
            'sql_pass'        => 'haslo',
            'sql_database'    => 'baza',
            'sql_port'        => 3306,
            'sql_socket'    => '/var/lib/mysql.sock',
            'sql_utf8mb4'    => true,
        ) );

        $new_id = \IPS\Db::i()->insert( 'Accounts', array(
            'Email' => $email,
            'ForumUserID' => $id,
            'Name' =>$name,
            'PrimaryForumGroup'=> $primary_group_id) );
	}

Coś jest nie tak w tej funkcji? Bo przy próbie dodania użytkownika wyskakuje błąd: 

Spoiler

9kSnDOa.png

 

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
  • Dołącz do pierwszego newslettera Invision Community

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.