Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy jest możliwy tymczasowy INSERT ?
Forum PHP.pl > Forum > Bazy danych > MySQL
Black-Berry
Mam prostą tabelę dla przykładu news_table a w jakieś pola (nie mają znaczenia bo chodzi głównie o ID):
Kod
ID | title | content | creation_date | expire_date

No i teraz problem jest taki:
Każdy news ma na serwerze swój folderek na obrazki którego nazwa zawiera ID z bazy np folder media/news_12/. Jeśli updatujemy jakiś wpis to nie ma problemu bo zczytujemy sobie z bazy numerek. Problem pojawia się kiedy chcemy dodać wpis. Użytkownik znajdujący się w panelu dodawania newsa uploaduje obrazek na serwer ale system nie wie do jakiego folderu wgrać obrazek ponieważ wpis w bazie nie istnieje. Wpisu nie można stworzyć przed dodaniem obrazka bo w przypadku anulacji w bazie danych siedziałby niepotrzebny wpis.

Moje pytanie:
Czy można utwożyć wpis który usunie się np po 15 minutach jeśli nie zostanie będzie na nim wykonana np komenda UPDATE albo jakaś inna? Coś bez CRONA ?
Może jest lepszy sposób rozwiązania tego problemu o którym nie pomyślałem?

Bardzo prosze o posty i pozdrawiam.
mike
1. "anulacji" a cóż to znaczy? Nie ma takiego słowa.
2. Najpierw dodawaj do bazy wpis a później zapisuj obrazek. Będziesz miał aktualny identyfikator.
wookieb
Mike Zawsze się musisz czepiać. http://www.sjp.pl/co/anulacja

A bez crona nie da się usunąć wpisu.
Black-Berry
haha.gif No ale własnie w tym istota problemu. Użytkownik uploaduje obrazek zanim wpis istnieje w bazie.
wookieb
Możesz zrobić tak, że uploudujesz zdjecie do katalogu tymczasowego. Zapisujesz sciezke do zdjecia w input hidden i potem przy zapisie newsa mozesz przeniesc zdjecie do nowego katalogu.

Cronem sprawdzasz w tymczasowym katalogu czy sa jakies pliki starsze niz np 5 godzin. Jak tam to usuwasz.
nithajasz
Kwestia ustawienia czynności.

Lub możesz po prostu nadawać folderowi (lub obrazek wrzucać do folderu tymczasowego), tymczasową nazwę a po dodaniu do bazy zmieniać nazwę folderu na poprawną.
Black-Berry
No i właśnie tu jest cały problem jeszcze większy. Nie pisałem wcześniej żeby nie zarzucać treścią. Opcja z tymczasowym folderem u mnie nie może zadziałać bo:

Mam edytor TinyMCE. Napisałem sobie plugin który wrzuca obrazki do Tiniego. Tak więc po uploadzie jeśli obrazek trafia do folderu tymczasowego to później trzeba by całą treść z tiniego parsować i zamieniać ścieżki tymczasowe na właściwe.

Chciałbym tego uniknąć. Mam nadzieję że ktoś ma rozwiązanie lepsze niż foldery tymczasowe.
wookieb
Wiec moze zostac opcja ze zapisany bedzie najpierw news. Ale przy kazdym uruchomieniu jakiejs strony (zalozmy listy newsow) uruchomisz zapytanie usuwajce wpisy starsze niz 15 minut. Nie jest to jakos wielce obciazajace. ale jezeli chcesz uniknac crona to jest to najlepsze rozwiązanie.
Black-Berry
No cóż. Pociąga to też za sobą jakieś konsekwencje bo trzeba w bazie dodać flagę temp_news zeby przypadkiem nie traktowac newsa jako istniejącego. Widzę że nie ma idealnych rozwiązań na takie coś :/
dr_bonzo
Cytat
No cóż. Pociąga to też za sobą jakieś konsekwencje bo trzeba w bazie dodać flagę temp_news zeby przypadkiem nie traktowac newsa jako istniejącego. Widzę że nie ma idealnych rozwiązań na takie coś :/

Nosz qwa, chlopie, idealne to by bylo jakby baza sama sie domyslila co ty chcesz zrobic. Dla mnie to wlasnie jest idealne rozwiazanie dla tego problemu.

A czemu crona nie chcesz uzyc? przeciez do takich zadan doskonale sie nadaje.
Przy tworzeniu nowego newsa wrzucasz rekord do bazy + oznaczasz ze nie jest jeszcze zapisany, a cronem usuwasz "niezapisane" newsy.
Uzywam tego przy tworzeniu produktow w sklepie - bo tez musze od razu obrazki dodawac.
Black-Berry
trzeba ciągle poszukiwać najdoskonalszych rozwiązań. Nie da się to się nie da. Rozumiem. Jest jednak szansa że ktoś wpadł na lepszy sposób niż mi przyszedł do głowy. Przyznasz że warto czasem popytać ludzi. smile.gif
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.