![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 28.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Problem wyglada tak, dodaja se rekordy, znajduje ostatnie id
ale jak mam to wpisac do inserta zeby sie dobrze nazwa pliku zapisala? 1/do tabeli chcialbym wrzucic nazwe skladajaca sie z ID rekordu i _cyfry od 1 do 4 czyli np 60_1.jpg 60_2.jpg itd, w przypadku inserta czesc _1.jpg _2.jpg itd moze byc zdefiniowana recznie bo sa tylko cztery wiec nie ma duzo roboty, ale jak polaczyc otrzymane id z ta koncowka? 2/ do folderu chcialbym wrzucic plik tez o takiej samej nazwie oczywiscie, ale tym razem chcialbym wykorzystac iteracje od 1 do 4 3/ no i kwestia kolejna - czy musze dopisywac .jpg za kazdym razem? jak nie dodam to zapisuja sie bez rozszerzen wiec lipa - jakie jest z tego wyjscie? 4/ czy da rade jakos zrobic z jednym Insertem tylko? bo teraz wrzucam czesc, potem odczytuje id rekordu i dopiero wrzucam reszte z id w nazwie (przynajmniej takie bylo zalozenie ![]() Probowalem laczenia tych dwoch zmiennych na rozne sposoby, z ' , ", kropka i to w kilku kombinacjach, ale nie trafilem na poprawna konfiguracje :/ Dopiero kilka dni grzebie w php wiec napewno o czyms nie wiem albo przeoczylem Prosze o pomoc bo mnie juz szlag trafia kod (fragment ktory dotyczy mojego problemu)
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 209 Pomógł: 37 Dołączył: 27.02.2008 Skąd: Kwidzyn Ostrzeżenie: (0%) ![]() ![]() |
nie bardzo mogę połapać się, o co dokładnie ci chodzi (może to przez tą późną porę
![]() Kod <?php (...) $new_id=10; //założmy ze akurat tak jest $sql="INSERT INTO tabela (id, nazwa) VALUES ($new_id, '".$new_id."_1.jpg'"; mysql_query($sql); (...) ?> To w wyniku wstawi ci do tabeli rekord o id 10 i nazwie "10_1.jpg" Mam nadzieje, ze załapałeś ideę łączenia. tak naprawdę ten insert jest stringiem, czyli musisz do niego elegancko dołączyć zmienną za pomocą właśnie kropek o których wspomniałeś.. Ten post edytował nitek 28.02.2008, 00:00:29 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 28.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
dzieki wielkie
o to chodzilo, i smiga chociaz cos mi dzisiaj przestalo dzialac mysql_insert_id() :/ pokazuje mi ciagle 0 :/
a jak zrobie po insert:
albo
to dostaje "Resource id #3" ![]() moze ktos ma pomysl czemu? ![]() wszystko sie ladnie pieknie dodaje tylko nie moze znalezc tego last id w zaden sposob? moze cos trzeba w bazie przestawic czy jak? pole id jest auto_increment i nie jest BIGINT ![]() ![]() Ten post edytował wupasek 28.02.2008, 03:45:08 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 209 Pomógł: 37 Dołączył: 27.02.2008 Skąd: Kwidzyn Ostrzeżenie: (0%) ![]() ![]() |
Jasne że mam pomysł dlaczego...
Jeśli dopiero zaczynasz przygodę z php, polecam lekturę strony php.net! i stamtąd od razu się dowiesz: "mysql_insert_id — Podaje numer ID wygenerowany podczas ostatniej operacji INSERT" czyli nie ma szans, żeby odczytać to id, przed wykonaniem zapytania.. Jeśli koniecznie chcesz mieć bieżace id w nazwie pliku, ostatecznie mógłbyś wyciągnąć przed insertem ostatnie największe id (selectem), dodać do tego jeden i miałbyś aktualnie wstawiane id - ale to rozwiązanie 'mało eleganckie'... Inne rozwiązanie, to wykonanie po insercie update, który zaktualizuje ci pole z nazwą o właściwe id (właśnie wykorzystując mysql_insert_id()) -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 21 Dołączył: 1.09.2006 Skąd: Edinburgh Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 28.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Jasne że mam pomysł dlaczego... Jeśli dopiero zaczynasz przygodę z php, polecam lekturę strony php.net! i stamtąd od razu się dowiesz: "mysql_insert_id — Podaje numer ID wygenerowany podczas ostatniej operacji INSERT" czyli nie ma szans, żeby odczytać to id, przed wykonaniem zapytania.. Jeśli koniecznie chcesz mieć bieżace id w nazwie pliku, ostatecznie mógłbyś wyciągnąć przed insertem ostatnie największe id (selectem), dodać do tego jeden i miałbyś aktualnie wstawiane id - ale to rozwiązanie 'mało eleganckie'... Inne rozwiązanie, to wykonanie po insercie update, który zaktualizuje ci pole z nazwą o właściwe id (właśnie wykorzystując mysql_insert_id()) staram sie czytac forum i odpowiednie zrodla (m.in.php.net, "Vademecum profesjonalisty") zanim poprosze o pomoc a to INSERT nie wystarczy? zreszta po jego usunieciu i zrobieniu najpierw Select Last_ID() a potem Insert nadal dostaje Resourde ID #3 ![]() ![]()
a teraz sprobowalem tego SELECT LAST_INSERT_ID() AS last_id i nadal dostaje Resource Id # 3 za kazdym razem dodam ze auto_increment wynosi ok 80 w tej chwili
caly kod wyglada tak:
HEEELPPP ![]() Ten post edytował wupasek 28.02.2008, 10:56:58 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 209 Pomógł: 37 Dołączył: 27.02.2008 Skąd: Kwidzyn Ostrzeżenie: (0%) ![]() ![]() |
Jeśli nie działa ci ta funkcja (osobiście nigdy jej nie używałem), to spróbuj odczytać najwyższe id i dodać do neigo jeden w ten sposób:
Kod $w = mysql_query("SELECT max(id) AS last_id "); $r = mysql_fetch_object ($w); $last_id=$r->last_id; $new_id=$last_id+1; btw: po wykonaniu mysql_query nie będziesz miał dostępnego last_id z twojego zapytania.. musisz ją potem przypisać do zmiennej za pomocą mysql_fetch_object... Ten post edytował nitek 28.02.2008, 11:18:02 -------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 28.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
ok, dzieki
zaraz sprobuje Ten post edytował wupasek 28.02.2008, 11:48:49 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 209 Pomógł: 37 Dołączył: 27.02.2008 Skąd: Kwidzyn Ostrzeżenie: (0%) ![]() ![]() |
dodam, że jest to rozwiązanie mało eleganckie, bo nie masz żadnej gwarancji (szczególnie jeśli będzie dużo insertów jednocześnie), że nic się nie rozsypie...
Powinieneś wymyślić jakoś inaczej nazywanie zdjęć.. przykładowo możesz generować jakąś losową liczbę, wstawiać ją do tabeli obok id i do niej dopisywać swoje _1.jpg, _2.jpg itd... Sam już nie wiem - może ktoś ma jakiś lepszy pomysł rozwiązania tego problemu? ![]() Ten post edytował nitek 28.02.2008, 11:49:06 -------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 28.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
zadzialalo, ale dopiero to co na koncu napisales (max(id))
tylko, ze auto increment moze miec wartosc wyzsza niz max id wiec nie moge tego zastosowac ;( a reszta nie dziala select last_id zwraca albo 0 albo resource id 3 moze sprobuje zrobic pierwszego inserta z danymi z formularza, potem mysql_insert_id a potem update samych nazw zdjec? to czy moze to wygladac tak mniej wiecej INSERT INTO ogloszenia_auta VALUES (NULL, 'rodzaj', NOW(), '', '', '' itd wszystkie pozozostale rekordy puste); $last_id = mysql_insert_id(); UPDATE (tu jeszcze nie wiem co ale zaraz poszukam ![]() tylko czy moze byc insert i zaraz potem update? czy update moze byc tylko po select? Ten post edytował wupasek 28.02.2008, 12:12:56 |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 209 Pomógł: 37 Dołączył: 27.02.2008 Skąd: Kwidzyn Ostrzeżenie: (0%) ![]() ![]() |
koncepcje masz dobrą...
po insercie będziesz mógł wyciągnąć wstawione przed chwilą id, a potem zrobić update'a - pisałem o tym w pierwszym moim poście w tym temacie... co do update: Kod mysql_query("INSERT INTO .... $wstawione_id=mysql_insert_id(); mysql_query("update tabela set nazwa_foto='xxx' where id=$wstawione_id"; coś w tym stylu... -------------------- |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 28.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
dzieki wielkie mistrzu za pomoc
smiga jak nalezy ![]() Ten post edytował wupasek 28.02.2008, 12:52:06 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 27.06.2025 - 03:23 |