Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Kolejność wykonywania kodu
Forum PHP.pl > Forum > Przedszkole
markonix
Witam.

  1. SELECT
  2.  
  3. UPDATE


Czy jest możliwość manipulacji kolejnością, tak aby ten SELECT wykonywał się na końcu/jako drugi.
Pobiera on wartość liczbową, którą zmienia kod znajdujący się poniżej.
Dokładnie jest to licznik nieprzeczytanych wiadomości - użytkownik przeczyta wiadomość ale nadal widnieje 1 nieprzeczytana i dopiero znika po odświeżeniu.

Oczywiście ajax tu by spełnił zadanie ale chce go uniknąć z mniej czy bardziej oczywistych powodów.
Może flush()? Jeśli tak to w jaki sposób bo próbowałem różnych kombinacji i nic.
d3ut3r
Najpierw wykonaj update a później select.
markonix
czarodziej.gif trochę humoru nie wieczór nie zaszkodzi smile.gif

Problem nierozwiązany.
d3ut3r
Ja nie widzę w tym nic śmiesznego smile.gif koleś klika na wiadomość którą chce odczytać robisz update w bazie że wiadomość o id=x odczytana, a dopiero później pobierasz liczbę nieprzeczytanych wiadomości. Chociaż po głębszym zastanowieniu to bardzo dużo zależy jak to wszystko jest zbudowane.
thek
Pytanie... Czy jest sens? I tak zapytanie musisz wykonać i sprawdzić jego powodzenie. Już samo to wymusi na Tobie użycie przynajmniej mysql(i)_affected_rows() lub podobnej konstrukcji w PDO. Czy jedno zapytanie więcej zrobi tu różnicę jakąś? A nawet jeśli, to jak mniemam znasz liczbę lub id owych nieprzeczytanych i chyba zmniejszyć licznik ich o liczbę otrzymaną z wspomnianej wyżej funkcji nie jest trudne?
markonix
Problem rozchodzi się o manipulacje kolejnością wykonywanego kodu - tylko.
Fakt, faktem dałem to w dział przedszkole ale mógłbyś d3ut3r się domyśleć, że problem jest trochę bardziej skomplikowany (np. po moim stażu).
Nie mam możliwości, a przynajmniej będzie to trudne aby przestawić kolejność kodu.
Jest licznik, potem jest update.
Flush ze sleep opóźnia pojawienie się licznika ale i tak pokazuje wartość początkową.
nospor
Cytat
Nie mam możliwości, a przynajmniej będzie to trudne aby przestawić kolejność kodu.
No to masz problem. ALbo przestawisz kod albo masz jak masz.

Cytat
ale mógłbyś d3ut3r się domyśleć, że problem jest trochę bardziej skomplikowany
Niby czemu miał się tego domyślić? Już nie raz tutaj użytkownicy podawali "super hiper skomplikowane" kody, gdzie wystarczylo pół minuty poprawek. Nikt tutaj w myślach nie czyta i teksty jak ten:
Cytat
trochę humoru nie wieczór nie zaszkodzi

Problem nierozwiązany.
naprawdę sprawy nam nie ułatwiają.
markonix
Mógł się domyśleć bo mówię o manipulacji kolejnością, podałem przykład z flush itp.
Dla każdego chyba jest oczywiste, że kolejność jest od góry do dołu.

Cytat
No to masz problem.

Dzięki, tyle wiedziałem zanim napisałem temat.
tehaha
Cytat(markonix @ 25.10.2010, 13:15:36 ) *
Mógł się domyśleć bo mówię o manipulacji kolejnością, podałem przykład z flush itp.

a może ta manipulacja kolejnością wcale nie jest potrzebna, z Twojego dotychczasowego opisu problem wydaje się banalny, jak dla mnie to próbujesz przekombinować cały problem, ale najlepiej wklej kod to będzie wiadomo o co chodzi

co do tej manipulacji tutaj możesz o tym poczytać http://php.net/manual/en/control-structures.goto.php, ale jestem przekonany, że Twój problem da się łatwiej rozwiązać
nospor
Cytat
No to masz problem.

Dzięki, tyle wiedziałem zanim napisałem temat.
No nie do konca. Jak pisales temat to myslales ze w magiczny sposob można zmienic kolejnosc. Ja ci wyjasnilem ze nie smile.gif
markonix
Nie, raczej nie.

Kod tu nic nie zmieni.
Wygląda tak.
MENU w którym jest ta wartość
TREŚĆ STRONY
UPDATE

Jasne. Mogę dać kod odpowiedzialny za modyfikacje bazy nad menu.
Potem jednak musiałbym powtórzyć resztę kodu który coś tam wyświetla pod menu, w treści strony (rozbić na dwie części).

Chciałem to po prostu zrobić, tak aby licznik aktualizował się jako ostatni. Flush, LOW PRIORITY się chyba nie zdają.
A liczyłem, że rozwiązanie jest proste bo czytałem o nim w jakimś tutorialu z tym, że dosyć dawno.
Mam jeszcze w pamięci mniej więcej taką konstrukcję:
Cytat
{
tu wstaw kod, który ma wykonać się na końcu
}
tu reszta kodu

I komentarz "czasami mamy potrzebę zmiany kolejności wykonywania kodu".
Być może chodziło o flush, z tym, że on już zapamiętuje wartości wykonane przez selecta, a nie wykonuje go na końcu.
Jeśli takie jest działanie tej funkcji, a nie ma innego rozwiązania to ok. Poddaję się i zmieniam kolejność albo stosuje ajax.

nospor w jakimś stopniu jednak się da..
tehaha
a sprawdziłeś to? http://php.net/manual/en/control-structures.goto.php, swoją drogą dziwne, że z takim stażem kompletnie pomieszałeś kod wykonawczy z szablonem i teraz najprostsze operacje są bardzo skomplikowane
nospor
Cytat
nospor w jakimś stopniu jednak się da..
Widzisz, masz złą logkię aplikacji.
Najpierw należy wykonywać akcje, a dopiero potem wyświetlać informacje. A ty masz to wszystko pomieszane, stąd masz problem.
markonix
Niestety to gotowy system, zakodowany w dużej mierze i żeby zastosować w nim system szablonów musiałbym go napisać od nowa.
Goto, zaraz poczytam.

Edit: chyba jednak nie przetestuje (dostępne od php 5.3), ale w teorii myślę że by to zadziałało więc dziękuje i tak. Ciekawy pomysł.
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.