Mam taką sprawę:
w bazie mam userów, którzy mają przypisaną do siebie własną bazę danych. Logując sie do panelu ustawiane są jego dane, tak, aby zostały pobrane tylko jego informacje. W przypadku 1 usera to nie ma problemu. Wszystko działa.
Jak zrobić, bądź z czego skorzystać aby udało się zalogować 2 i więcej userom w tym samym czasie?
Będę wdzięczny za podpowiedzi.

- Rejestracja:ponad 17 lat
- Ostatnio:około 8 godzin
- Lokalizacja:Warszawa
- Postów:2251
Wklej kod już masz - wtedy pomożemy. W czym dokładnie tkwi problem przy 2 i więcej użytkownikach? I co oznacza tekst "w bazie mam userów, którzy mają przypisaną do siebie własną bazę danych" ? Każdy user ma własną całą bazę i własne tabelki? Czy może chodziło Ci o jedną bazę i różne dane z różnych tabel?
Kod jest długi... :)
Już tłumaczę.
Do strony xxxx.pl podpięta jest baza danych, która zawiera userów. Userzy mogą się logować do panelu i zmieniać tam swoje dane. Wynik widoczny jest na subdomenie danego użytkownika, np. u12.xxxx.pl
I teraz: do zmiany tych danych służy jeden panel. Każdy z użytkowników ma swoją bazę danych, osobną niż baza danych strony. Logując się do panelu zmieniam dane do logowania i system pobiera dane usera z własnej bazy.
Jeśli zaloguje się 2 user to te dane się zmieniają i 1 (już zalogowany) dostaje inne dane.. I tu mam zagwozdkę - jak to zrobić, aby kilku userów w tym samym czasie było zalogowanych i widziało dane tylko ze swoich baz.
NickOver napisał(a):
używać zmiennych?
Rozwiń!?
- Rejestracja:prawie 9 lat
- Ostatnio:około 2 lata
- Postów:430
Przypisać dane logowania i serwery do zmiennych/obiektów. Możliwe że jestem przygłupi albo Ty nie potrafisz wytłumaczyć swojego problemu.
Dla mnie to wygląda tak:
User się loguje i pobierają się jego dane z jakiejś lokalnej bazy danych. Więc przypisz pobrane dane do jakiejś zmiennej/tablicy/obiektu i za ich pomocą nawiązuj połączenie z innymi bazami.
Chyba coś przekombinowaleś. Dam Ci dobrą radę - nie utrudniaj sobie życia i nie kombinuj tam, gdzie nie trzeba.
Utwórz tabelę użytkowników, każdemu nadaj unikalne id - numer identyfikujący. W rej tabeli przechowuj podstawowe dane użytkowników, login, hasło etc.
Utwórz drugą tabelę zawierającą konfigurację, którą ustawia sobie użytkownik. Dodaj do tej tabelki kolumnę user_id, która posłuży do utworzenia klucza obcego łączącego tę tabelę z tabelą użytkowników po ich numerze id.
W apce robisz logowanie (np w sesji) i pobierasz konfiguracje dla zalogowanego użytkownika.
Jeśli użytkownik nie ma zapisanej żadnej konfiguracji (zapytanie do bazy zwraca null) to wyświetlaj mu jakąś podstawową konfigurację. Np zapisaną w zmiennych, klasie pomocniczej lub w osobnej tabeli 'default_configurations'.
I tyle. W żadnym razie nie trzeba osobnych baz danych dla każdego użytkownika. Zobacz jakiś tutorial na yt.
Tak, każdy użytkownik ma swoją bazę danych ze względu na to, że w każdej bazie znajduje się 10-20 tabel a i użytkowników jest kilkunastu na początek - potem kilkuset nawet. Trzymanie takiej ilości tabel w 1 bazie nie może być - takie założenia. Dlatego każdy user ma swoją bazę db12345 - gdzie nr to jego id.
Jakby było to takie proste to bym tu wątka nie wstawiał ;)
- Rejestracja:prawie 9 lat
- Ostatnio:około 2 lata
- Postów:430
Miałem bazy gdzie było ponad 20 milionów wierszy i daję głowę że działało to lepiej niż pierdyliard baz danych. Myślałem że masz te bazy rozsiane po różnych serwerach, ale jeśli nie, to tworzenie nowej bazy per user jest jednych z głupszych rzeczy o jakich słyszałem.