Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> user chce ustawic kolejnosc,, i drugie user chce usunac zdjecie
AxZx
post 9.03.2006, 21:37:19
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

Ostrzeżenie: (0%)
-----


witam

mam 2 sporne kwestie nad ktorymi sie zastanawiam - wynikaja one z usuniecia zdjecia przez usera
zdjecie jest fizycznie zapisywane na serwerze, oraz jego dane oraz dodatkowe info w bazie,

1) jak ma wygladac bezpieczna procedura usuwania?
(chodzi mi juz o sam skrypt)
najpierw usuniecie danych z bazy a pozniej fizycznie z dysku?
czy na odwrot?
a co jesli ktoras z operacji nie wykona sie poprawnie?
bedzie taka sytuacja ze bedzie albo samo zdjecie bez wpisu w bazie albo sam wpis w bazie bez zdjecia (questionmark.gif?)

2) teraz kolejnosc zdjecia..
w tabeli mam kolumne zdjecie_kolejnosc - wedlug tej wartosci sa sortowane zdjecia na stronie
jezeli user usunie zdjecie ze srodka trzeba chyba od nowa przypisac kazdemu zdjeciu nowa wartosc zdjecie_kolejnosc
(?)
czy takie rozwiazanie bedzie dobre?

  1. <?php
  2. $i=0;
  3. $zap = $sql->query('SELECT * FROM zdjecia ORDER BY zdjecie_kolejnosc ASC');
  4. while($dane = $sql->fetch_assoc($zap)){
  5. $i++;
  6. $sql->query('UPDATE zdjecia SET zdjecie_kolejnosc = '.$i.' WHERE zdjecie_id = '.$dane1['zdjecie_id'].' LIMIT 1');
  7. }
  8.  
  9. ?>


z gory dzieki za jakies wskazowki
pozdrawiam

Ten post edytował AxZx 9.03.2006, 21:38:00


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
konys
post 9.03.2006, 23:30:39
Post #2





Grupa: Zarejestrowani
Postów: 100
Pomógł: 7
Dołączył: 5.11.2005

Ostrzeżenie: (0%)
-----


1.
Cytat
jak ma wygladac bezpieczna procedura usuwania?
(chodzi mi juz o sam skrypt)
najpierw usuniecie danych z bazy a pozniej fizycznie z dysku?
czy na odwrot?

Chodzi o zachowanie spójności między danymi przechowywanymi na dysku, a danymi przechowywanymi w bazie. Kolejność usuwania danych będzie identyczna z kolejnością ich łączenia (jeśli pobierasz dane zdjęcia z katalogu, po czym szukasz informacji o nim w bazie (na podstawie np. nazwy pliku), najpierw powinieneś usunąć zdjęcie, następnie dane z bazy). Jeśli zaś pobierasz info o pliku z bazy a następnie wyświetlasz zdjęcie, usuń w pierwszej kolejności rekord w bazie.
Cytat
a co jesli ktoras z operacji nie wykona sie poprawnie?

Uruchom w cronie skrypt oczyszczający bazę z niepotrzebnych rekordów (w pierwszym przypadku) lub niepotrzebnych zdjęć (w drugim).
2. Jeśli użytkownik wyrzuci zdjęcie ze środka, kolejność jest nadal zachowana, nie musisz nic update'ować. Bardziej obrazowo: po wyrzuceniu 3 z ciągu (1,2,3,4,5) otrzymujesz (1,2,4,5) i zdjęcia są odpowiednio posortowane.
Go to the top of the page
+Quote Post
AxZx
post 10.03.2006, 07:13:28
Post #3





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

Ostrzeżenie: (0%)
-----


tak, sa dalej posortowane, ale moze to popsuc mi skrypt do zmiany tej kolejnosci


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
konys
post 10.03.2006, 09:55:15
Post #4





Grupa: Zarejestrowani
Postów: 100
Pomógł: 7
Dołączył: 5.11.2005

Ostrzeżenie: (0%)
-----


Skoro musisz mieć zdjęcia ustawione w kolejności zwiększającej się o 1, wykonaj przy kasowaniu zapytania:
  1. <?php
  2. $qr = 'SELECT zdjecie_kolejnosc FROM zdjecia WHERE zdjecie_id='.$id_kasowanego_zdjecia;
  3. $res = mysql_query($qr) or die($qr.' '.mysql_error());
  4. if( mysql_num_rows($res) ){
  5.  list($kolejnosc) = mysql_fetch_array($res);
  6.  $qr2 = 'UPDATE zdjecia SET zdjecie_kolejnosc=zdjecie_kolejnosc-1 WHERE zdjecie_kolejnosc>'.$kolejnosc;
  7.  $res2 = mysql_query($qr2) or die($qr2.' '.mysql_error());
  8.  
  9. ?>

A skrypt:
  1. <?php
  2. $i=0;
  3. $zap = $sql->query('SELECT * FROM zdjecia ORDER BY zdjecie_kolejnosc ASC');
  4. while($dane = $sql->fetch_assoc($zap)){
  5. $i++;
  6. $sql->query('UPDATE zdjecia SET zdjecie_kolejnosc = '.$i.' WHERE zdjecie_id = '.$dane1['zdjecie_id'].' LIMIT 1');
  7. }
  8. ?>

umieść w cronie.
Go to the top of the page
+Quote Post
AxZx
post 10.03.2006, 10:54:58
Post #5





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

Ostrzeżenie: (0%)
-----


o widzisz, wlasnie o to mi chodzilo, myslalem o tym ale sie za to nie zabralem
dzieki

a ten drugi kod (moj - ktory wczesniej podalem) wrzucic do crona zeby robil sobie w nocu w cenu ewentualnego sprawdzenia czy nie ma bledow - albo poprawienie bledow, tak?


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 11.08.2025 - 06:52