Skocz do zawartości
  • Zarejestruj się
  • 0
cherro0125

Dodanie rekordu do innej bazy danych w chwili rejestracji na forum

Pytanie

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.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

9 odpowiedzi na to pytanie

Polecane posty

  • 0
$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) );
	}

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0
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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 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?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Rozumiem. 

Jeszcze tylko chciałem się dowiedzieć jak najprościej mieć dostęp do wszelkich pól obiektu $member. 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

W jakim sensie?

Robisz normalnie $member-> ...

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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 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

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Dalej wywołuje to błąd:

 

Spoiler

0nTe93s.png

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Jednak działa. 😄  Nie zauważyłem, że miałem złą ścieżkę do socketu MySQL'a. 

  • Like 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×

Ważne informacje

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.