Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Blokada na więcej niż jeden proces
atomek_16
post
Post #1





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 3.09.2004

Ostrzeżenie: (10%)
X----


Kochani!
Jak zrobić blokadę, aby np. przy update skrypt nie wykonał więcej niż 1 proces?

Chodzi mi o to, że na przykład ktoś edytuje artykuł i wciska "zmień". I jest funkcja update()
i aby była blokada, że może wykonać tylko i wyłącznie jeden proces i będzie on właśnie update?

Mam taki problem, że już drugi raz zdarzyło mi się, że przy updatowaniu pozmieniał wszystkie wpisy w bazie :/ mimo że miał warunek WHERE id_uzytkownika=$idusera AND numer_artykulu=$edytowany_artykul_numer

BARDZO WAS proszę o pomoc, życzliwe rady i jakby była możliwość o jakieś przykłady

Z poważaniem
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
SongoQ
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Temat wiele razy byl na tym forum, poszukaj. Najprosciej zrobic przeladowanie lub zapisywac w sesji ze juz taka czynosc zostala wykonana.


--------------------
Go to the top of the page
+Quote Post
atomek_16
post
Post #3





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 3.09.2004

Ostrzeżenie: (10%)
X----


Cytat(SongoQ @ 3.06.2006, 11:38 ) *
Temat wiele razy byl na tym forum, poszukaj. Najprosciej zrobic przeladowanie lub zapisywac w sesji ze juz taka czynosc zostala wykonana.


Właśnie o to chodzi, że jest zaraz po update();
echo "<script>location.href='index.php'</script>";

Skrypt działał przez kilka miesięcy bez zarzutu, aż nagle po jednej edycji jakiegoś użytkownika (trudno stwierdzić którego, bo wszystko się pozmieniało) edycji nie uległ tylko jeden artykuł, ale wszystkie (takie same tytuły, taki sam tekst, ta sama kategoria).

Skrypt nawet nie zdołał dojść do przekierowania lub sprawdzenia sesji.

Wykonał update (pomiając warunki WHERE) dla wszystkich wpisów w bazie, dopiero jak skończył wykonał przekierowanie.

I stąd moje pytanie czy jest jakaś możliwość nakazania przy UPDATE, aby wykonał daną czynność tylko i wyłącznie raz i zakończył.

Pozdrawiam
Go to the top of the page
+Quote Post
atomek_16
post
Post #4





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 3.09.2004

Ostrzeżenie: (10%)
X----


Aby było zabawniej ( :/ ) skrypt wykonał się w dziwaczny sposób.

Przykład:
Chcę zmienić tytuł, tekst i kategorię artykuły.

Tytuł: AAAA
Tekst: BBBB
Kategoria: CCCC
Id_artykulu (hidden): 101
Id_uzytkownika (hidden): 102

Update:

  1. <?php
  2. $zmiana = "UPDATE artykuly SET tytul='$tytul', kategoria='$kategoria', tekst='$tekst' WHERE id='$Id_artykulu' AND uzytkownik='$Id_uzytkownika'";
  3. $dokonaj = mysql_query($zmiana);
  4. ?>


Efekt w bazie danych:
Wszystkie rekordy maja zmieniony:
Tytul na AAAA
Tekst na BBBB
a KATEGORIA na , kategoria=
(dokładnie tak)

sad.gif
Go to the top of the page
+Quote Post
SongoQ
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
I stąd moje pytanie czy jest jakaś możliwość nakazania przy UPDATE, aby wykonał daną czynność tylko i wyłącznie raz i zakończył.


NIE

Cos nie chce mi sie wierzyc ze to to zapytanie tak Ci namieszalo. Przeciez warunek ogranicza zmiane. Dla pewnosci mozesz dodac LIMIT 1. Odnosnie przeladowania mowielem o header a nie js. Pokombinuj z sesja.


--------------------
Go to the top of the page
+Quote Post
atomek_16
post
Post #6





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 3.09.2004

Ostrzeżenie: (10%)
X----


Właśnie sad.gif mnie też w to trudno uwierzyć. Nie dość, że stało się, mimo warunków, to jeszcze (jak pisałem wyżej) wszystkie kolumny "kategoria" mają kawałek kodu z update, to znaczy:

, kategoria=

Wszystkie przyjęły taką wartość.

Jak zabezpieczy, aby nie działo się tak w przyszłości to nie mam pojęcia sad.gif
jest sprawdzenie sesji, są warunki, jest zaraz przekierowanie po update() i jest limit.
Go to the top of the page
+Quote Post
SongoQ
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
Wszystkie przyjęły taką wartość.

Hm moze ktos Ci psikusa zrobil. Przepatrz jeszcze raz kod bo moze jest jeszcze jakis blad.


--------------------
Go to the top of the page
+Quote Post
atomek_16
post
Post #8





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 3.09.2004

Ostrzeżenie: (10%)
X----


Cytat(SongoQ @ 3.06.2006, 12:08 ) *
Hm moze ktos Ci psikusa zrobil. Przepatrz jeszcze raz kod bo moze jest jeszcze jakis blad.


Na początku pierwsze co przyszło mi na myśl to właśnie to, że "ktoś zrobił psikusa". Jednak gdyby rzeczywiście tak było to czy męczył by się, aby wyedytować artykuł i wpisać sensową treść, kategorię i tytuł? (chodzi o to, że wszystkie wpisy zmieniły się podług tej zmiany).

Sprawdzałem skrypt jak się zachowuje na różnego rodzaju próby z wstawianiem przekombinowanego kodu php, java (wyłączona), html (wyłączony)... różne kombinacje.
:/

Przychodzi mi na myśl taka oto sytuacja:
W czasie edycji serwer działał poprawnie. Użytkownik wcisnął "zmień i musieli wyłączyć apache/mysql czy jak?
I pełne zapytanie nie poszło. Włączyli ponownie bez wyczyszczenia pamięci i wykonało się błędne zapytanie. Czy to możliwe?

Ten post edytował atomek_16 3.06.2006, 13:18:51
Go to the top of the page
+Quote Post
SongoQ
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Raczej cos takiego jest nie mozliwe, poniewaz musisz wyslac cale zapytanie zeby wykonac. Trudno stwierdzic co jest przyczyna.


--------------------
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 Aktualny czas: 21.08.2025 - 18:48