Dzień dobry,
mój problem dotyczy przenoszenia zawartości rekordu z jednej tabeli do drugiej.
Zarejestrowany i zalogowany użytkownik wczytuje do bazy MySQL z formularza zdjęcie, jego nazwę i swoj nick.
Rejestracja użytkownika to wpisanie jego danych do bazy, a logowanie to wykorzystanie mechanizmu sesji.
Tabela Użytkownicy
Kolumny: id_uzytkownik (primary key, autoincrement), imie, nazwisko, login, haslo
**Tabela Zdjecia: **
Kolumny: id_zdjecia, nazwa_zdjecia, nick_uzytkownika, id_uzytkownik (foreign key od tabeli uzytkownicy)
Jak zapisać kod, aby id_uzytkownik z tabeli użytkownicy przenosiło się do kolumny id_uzytkownik w tabeli zdjecia powołując się na zmienne ?
Z formularza pobieram:
$nazwa=$_POST['nazwa_zdjecia'];
$autor=$_POST['nick'];
przykładowe polecenie: $sql="Insert into zdjecia (nazwa, nick, id_uzytkownik) values ($nazwa, $nick, i jak pobrać to id????).
próbowałam też: "Insert Into (nazwa, nick) Select (id_uzytkownik from uzytkownicy) i co dalej ???
Brakuje mi wiedzy, co dalej...
Utknęłam z projektem, a rozwiązania proponowane na różnych forach zawierają błędy lub nie pasują do mojej sytuacji.
Będę wdzięczna za pomoc. Dziękuję.
W trakcie logowania użytkownika wrzucaj jego id do sesji - dzięki temu będziesz w stanie w dowolnym momencie odwołać się do id aktualnie zalogowanego użytkownika z wykorzystaniem $_SESSION['userId']
.
Zauważ, że mamy też tutaj do czynienia z nieszkodliwą wersją problemu X/Y, ponieważ tak naprawdę kłopotem nie jest przenoszenie id z jednej tabeli do drugiej
(tak jak sugerujesz przez większość swojego postu), a odnajdywanie id aktualnie zalogowanego użytkownika
.
Pierwsza rzecz droga Izo to nie stosuj polskich nazw zmiennych, tabeli, pól w tabeli itd. Druga sprawa Tabela Zdjęcia. Rozpatrujemy tu dwa scenariusze:
- Użytkownik wrzuca czyjeś zdjecia i musi podpisac nick kto sie tam znajduje
- Uzytkownik wrzuca swoje zdjecia i ten nick to nick tego wlasnie uzytkownika
Przypadek 1 zostawiam bez zmian. Ale jesli masz przypadek 2 to NICK UZYTKOWNIKA powinien byc w tabeli USERS bo jak zmienisz nick to stare nicki pod zdjeciami beda caly czas. Zatem w tabeli Zdjecia powinno byc tylko:
Kolumny: id, nazwa_zdjecia, id_uzytkownik (foreign key od tabeli uzytkownicy)
Nie stosuj klucza z nazwa tabeli w stylu id_zdjecia czy id_uzytkownik to jest oczywiste i potem w relacjach bedziesz muaiala pisac. uzytkownik.id_uzytkownik zamiast uzytkownik.id co jest oczywiste z jaka tabela masz do czynienia.
Nastepnie po zalogowaniu uzytkownika robisz select * from users where login = 'login usera' and password = md5('password') i cale pobrane dane wstawiasz do $_SESSION['user_data']
Gdy to zrobisz bedziesz mofla dodac zdjecie w stylu
$sql="INSERT INTO zdjecia (nazwa, nick, id_uzytkownik) VALUES ($nazwa, $nick, $_SESSION['user_data']['id'])