Mostrom
15.09.2010, 19:06:00
Witam! W MySql mam 2 tabele:
-`users` (czyli zarejestrowani użytkownicy mojego serwisu)
-`dane` (dane odnoszące się do tych użytkowników zdefiniowane przeze mnie PRZED ich rejestracją)
Ideą tego programu jest to, żeby każdy zarejestrowany użytkownik widział TYLKO swoje dane, które wcześniej ja wprowadziłem.
I teraz tak: muszę jakoś połączyć ich konta z moimi danymi. Tylko jak??
Chciałbym robić to dynamicznie w PHP. Myślałem o tym, żeby w formularzu w jednej option liście były osoby zarejestrowane, a w drugiej liście moje dane i jakoś równolegle łączyć te listy. Tylko nawet jeśli tak zrobię to co dalej? Gdzie zapisywać dane o powiązaniu?
naitsabes
15.09.2010, 19:28:39
a jakie to sa dane ? Nie wygodniej w tableli users zamiescic te informacje ?
Mostrom
15.09.2010, 19:33:28
nie, bo w dane na temat jednej osoby znajduja sie tak naprawdę w kilku tabelach, wa wiec jest tego sporo, po za tym nazwy tych tabel z danymi są szczegółowo zaprojektowane, nie mogłoby być inaczej.
Za to w każdej tabeli z danymi umieściłem pole id z auto_increment, więc w kązdej tabeli ta sama komórka odpowiada temu samemu userowi.
naitsabes
15.09.2010, 19:45:52
nom, a pozniej wczytaj dane z kilku tabel po id, powinno wystarczyc ^^
Mostrom
15.09.2010, 19:51:34
1) Nie moge tak po prostu wczytywać po id, bo ja nie wiem co za debil mi sie zarejestruje na stronie, a nóż jakiś bot. To ja muszę przypisać dane ID z tabeli users do ID tabeli z danymi. Jak??
2) W takim razie chcąc kasować użytkowników Auto increment też musi się cofać, zęby nie narobić kaszy w bazie. Co trzeba dodać przy zapytaniu dotyczącym kasowania wierszy przy polu ID?
naitsabes
15.09.2010, 20:38:39
Cytat(Mostrom @ 15.09.2010, 20:51:34 )

1) Nie moge tak po prostu wczytywać po id, bo ja nie wiem co za debil mi sie zarejestruje na stronie, a nóż jakiś bot. To ja muszę przypisać dane ID z tabeli users do ID tabeli z danymi. Jak??
2) W takim razie chcąc kasować użytkowników Auto increment też musi się cofać, zęby nie narobić kaszy w bazie. Co trzeba dodać przy zapytaniu dotyczącym kasowania wierszy przy polu ID?
nie widze sensu wczytywania uzytkownikow po id.. nie lepiej po 'nick' ? Wtedy problem nie bedzie problemem ^^
Mostrom
17.09.2010, 17:16:22
Ale jeśli nick nie będzie taki sam, albo imie albo nazwisko wpisane przez delikwenta będzie się różniło przez byle zmiane kodowania danych?
naitsabes
17.09.2010, 18:26:19
szyfruj tylko passy ^^ a reszta np. general_ci ;]
dariuszp
17.09.2010, 19:22:52
Nie wiem po co Ty kombinujesz. Dodaj klucze obce do tabeli z użytkownikami z regułą ON DELETE CASCADE, ON UPDATE CASCADE. W ten sposób będziesz miał powiązania a tabela z danymi użytkownika a jak np usuniesz użytkownika to i jego dane znikną.
Tu tak na szybko znalazłem w google
http://blog.zeromski.com.pl/2009/01/mysql-...db-klucze-obce/Ja dzięki tym powiązaniom mam tak że w wypadku gdy usunę witrynę z systemu to znika z bazy WSZYSTKO co z tą witryną jest powiązane (takie zarządzanie projektami w cms'ie).
Kolejna rzecz. Przecież możesz po prostu dodać do tabeli pole 'public' albo coś takiego i ustawiać tam 0/1. Dzięki temu będzie wiadomo czy dane pole wyświetlić albo nie. Wtedy każdy użytkownik może decydować co pokazać innym. Ewentualnie zrobić tabelę gdzie będą tylko informacje jakie pole może być pokazane albo nie, robisz join i po kłopocie.
Sposobów jest wiele.
Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.