![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 22.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich,
Mam pewien problem dotyczący PHP i MySQL'a. Wykonuję pewną aplikację w PHP i stanąłem w pewnym momencie. Mam powiedzmy 5 tabel, (które w skrócie przedstawiam poniżej): KOMENTARZE id_komentarza PK treść_komentarza data_dodania UZYTKOWNIK id_uzytkownika PK imię nazwisko SPRZĘT id_sprzętu PK nazwa_sprzętu KOMENTARZE_UZYTKOWNIKÓW id_użytkownika FK id_komentarza FK KOMENTARZE_SPRZETU id_sprzetu FK id_komentarza FK Problem polega na tym, że chcę, aby zalogowany użytkownik mógł dodawać komentarze dla konkretnych sprzętów. Mam wydobyte id_użytkownika i id_sprzętu. Potrzebuję jeszcze zdobyć id_komentarza, które dodawane jest automatycznie jako AUTOINCREMENT. Po wypełnieniu formularza dodającego komentarz i kliknięciu - "dodaj komentarz" powinny zostać zapisane dane do tabeli KOMENTARZE oraz do tabel pośrednich KOMENTARZE_UZYTKOWNIKOW i KOMENTARZE_SPRZETOW. Nie ma problemu z zapisem danych do tabeli KOMENTARZE, ale za to nie wiem jak zapisać dane do pozostałych w/w dwóch tabel pośrednich. Myślałem żeby stworzyć może jakiś trigger, ale nie wiem czy jest to dobre rozwiązanie, a poza tym żeby zapisać dane do tabel pośrednich - muszę znać id_komentarza, które w danym momencie zapisuję - i to jest największy chyba problem. W jaki sposób mogę podczas zapisywania tabeli, wyciągnąć jej id (id_komentarza), gdy id jest AUTOINCREMENT? Czy mógłby mi ktoś podpowiedzieć, w jaki sposób powinienem to wykonać? Z góry dzięki za pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
No to wlasnie moje rozwiazanie ci to zapewni.
W dodatku zakladasz unique index na (user_id, sprzet_id) i masz po komentarzu od usera do 1 sprzetu. Masz sprzet, do sprzetu mozna dodawac komentarze (tabela komentarze, a sprzet_id wskaze do ktorego sprzetu sie on odnosi). Dalej, kazdy komentarz ma autora - usera (wiec komentarze.user_id wskazuje na tego usera). I te 2 dodatkowe tabele sa ci zupelnie nie potrzebne. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 22.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
No to wlasnie moje rozwiazanie ci to zapewni. W dodatku zakladasz unique index na (user_id, sprzet_id) i masz po komentarzu od usera do 1 sprzetu. Masz sprzet, do sprzetu mozna dodawac komentarze (tabela komentarze, a sprzet_id wskaze do ktorego sprzetu sie on odnosi). Dalej, kazdy komentarz ma autora - usera (wiec komentarze.user_id wskazuje na tego usera). I te 2 dodatkowe tabele sa ci zupelnie nie potrzebne. W tej chwili nie mogę do tego za bardzo przysiąść, ale jutro zobaczę jak wyjdzie to, o czym mówisz. P.S Wiem, że to już nie jest ten temat, ale mam jeszcze jeden problem, do którego zupełnie nie wiem jak mam się zabrać. Mianowicie jak już się domyśliłeś - mam użytkownika, który ma jakieś pola typu imię, nazwisko, itp, itd i jeszcze pole zdjęcie. Są 2 sposoby przechowywania zdjęć w bd: jako blob albo varchar (który ma ścieżkę do pliku na dysku). Ja chcę wybrać drugie rozwiązanie ze względu na większą wydajność bazy. Potrzebuję napisać taki uploader plików, który doda mi plik w wybrane miejsce na dysku i do bazy dancyh do danej kolumny dopisze adres, gdzie plik się znajduje. Stworzyłem sobie już taki katalog na serwerze i pobrałem przez PHP ten adres z komórki ZDJĘCIE z bazy danych i przy każdym użytkowniku wyświetla mi odpowiednie zdjęcie (IMG:style_emoticons/default/smile.gif) Problem jest taki, że ja to zdjęcie ręcznie dodaję ,a rzecz jasna - musi dodawać go użytkownik - poprzez przycisk przeglądaj w formularzu - type=\"file\". No i zupełnie nie wiem jak to zrobić (IMG:style_emoticons/default/sad.gif) Może posiadasz takie gotowe rozwiązanie? Byłoby super i chyba już po moich problemach (IMG:style_emoticons/default/smile.gif) ------------------ Dobra, to LAST_INSERT_ID() działa (IMG:style_emoticons/default/smile.gif) Chciałbym jeszcze tylko dodać, że zamiast LAST_INSERT_ID() można jeszcze zastosować w tym przypadku takie coś:
Z grafikami sobie także już poradziłem. Dzięki Ten post edytował filipe 18.08.2009, 10:05:40 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 03:00 |