![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 1 Dołączył: 7.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Robię galerię. Chciałbym aby każde nowe dodane zdjęcie do bazy, w tabeli miało nazwę odpowiadająca jego ID. Czyli jeśli zdjęcie jest z wiersza o ID 24 to w rubryce FILE_NAME ma być 24.jpg
Aby to uzyskać chcialem przy wykonywaniu skryptu, aby pobieralo ostatnie najwyzsze ID z tabeli i po dodaniu 1 utworzyło wymaganą nazwę pliku. Niestety oba powyższe wyświetlają mi 'Resource id #13' .... ... taki nie wyświetla kompletnie nic. Co robię źle ? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 516 Pomógł: 63 Dołączył: 27.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Jeśli nadajesz nazwę plikowi zaraz po wykonaniu INSERTa do bazy to najlepszym wyjściem będzie mysql_insert_id
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 1 Dołączył: 7.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
gitbejbe dziękuję (IMG:style_emoticons/default/smile.gif) )
Jeśli nadajesz nazwę plikowi zaraz po wykonaniu INSERTa do bazy to najlepszym wyjściem będzie mysql_insert_id Przy takim rozwiązaniu
Wszystkie dodane za jednym razem zdjęcia mają nazwę 0.jpg chociaż zakres USER_ID to od 1 do 3. |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
mysql_insert_id jest jedynym prawidłowym rozwiązaniem w tej sytuacji. To, że otrzymujesz 0 wynika pewnie z tego, że wywołujesz tą funkcję przed dodaniem rekordu do bazy, a powinieneś po.
Rozwiązanie podane przez ~gitbejbe wykrzaczy się na banalnym przypadku. Przypuśćmy, że ID ostatniego użytkownika to 10. Z jakiegoś powodu go kasujesz, więc aktualnie największe ID to 9. Dodajesz nowego użytkownika - otrzymuje on ID 11, a fotka (czy co tam masz) ID 10 (9 + 1). W tym momencie numeracja użytkownik-fotka całkowicie Ci się rozjeżdża. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 516 Pomógł: 63 Dołączył: 27.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
a jak na jego stronie, ten skrypt jest dostepny dla zwykłych śmietelnikow ? tzn ze w tym samym czasie zdjęcia moze wrzucic kilka osob ? mysql_insert_id nadal bedzie dobrze dzialac ?
wydaje mi sie, że najpewniej byłoby najpierw dodać rekord do bazy tak aby pojawiło się te id, i dopiero w 2 zapytaniu wyszukac ten rekord po jakimś parametrze i jego id przypisac do nazwy fotki. Poprawcie mnie jeśli się mylę |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
a jak na jego stronie, ten skrypt jest dostepny dla zwykłych śmietelnikow ? tzn ze w tym samym czasie zdjęcia moze wrzucic kilka osob ? mysql_insert_id nadal bedzie dobrze dzialac ? wydaje mi sie, że najpewniej byłoby najpierw dodać rekord do bazy tak aby pojawiło się te id, i dopiero w 2 zapytaniu wyszukac ten rekord po jakimś parametrze i jego id przypisac do nazwy fotki. Poprawcie mnie jeśli się mylę Mylisz się. |
|
|
![]() ![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 1 Dołączył: 7.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Rozwiązanie podane przez ~gitbejbe wykrzaczy się na banalnym przypadku. Przypuśćmy, że ID ostatniego użytkownika to 10. Z jakiegoś powodu go kasujesz, więc aktualnie największe ID to 9. Dodajesz nowego użytkownika - otrzymuje on ID 11, a fotka (czy co tam masz) ID 10 (9 + 1). W tym momencie numeracja użytkownik-fotka całkowicie Ci się rozjeżdża. Tak! Nie pomyślałem o tym mimo iż możliwość usuwania zdjęć jest w kodzie. Dzięki za zwrócenie uwagi, bo użycie pierwotnego sposobu pozbywa tego problemu tylko jeśli zostaną usunięte z bazy wcześniej dodane foty, a nie ta ostatnia. mysql_insert_id jest jedynym prawidłowym rozwiązaniem w tej sytuacji. To, że otrzymujesz 0 wynika pewnie z tego, że wywołujesz tą funkcję przed dodaniem rekordu do bazy, a powinieneś po. I tutaj także dziękuję. Przetestowałem i działa elegancko. Wielki + dla Ciebie. Pozdrawiam Ten post edytował wbeatn 22.08.2013, 18:33:37 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 02:15 |