![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 30.05.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Zastanawiam się jakie podejście będzie najwłaściwsze dla komunikatów dla użytkownika (typu dodano artykuł, usnięto produkt, zły login lub hasło itd.).
Myślałem nad jakąś klasą Logger'a ale nie wiem czy to przypadkiem nie za dużo, pozatym Loggera o ile się nie myle stosuję się głownie do błędów aplikacji. Inny sposób o którym tylko słyszałem to zrobić kolekcje obiektów, ale nie bardzo wiem na czym to by miało polegać... Jezeli ktoś ma jakiś pomysł to będe wdzięczny? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Ostatnio czytałem, że fajnie pracuje się z wyjątkami. Może do Twojego celu by się nadawały?
Co do "kolekcje obiektów" to nawet nie słyszałem. |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Wyjątki przy informacji "Artykuł został dodany" (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif)
Może poprostu wykorzystaj javascriptowy alert(), A potem wrzucaj do debuggera. Coś na modłe
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 30.05.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Z wyjątkami pracuje się doskonale a i owszem, ale przy wyjątkach a nie komunikatach.
Hmmm pomysł z java jest całkiem ok, ale wydaje mi się troche na wyrost, napewno musi istnieć jakiś prosty przyjemny sposób na rozwiązanie problemu. Myślałem zeby zrobić coś takiego: dodawanie do loggera tych wiadomości, oczywiscie oznaczając je jako wiadomosc dla użytkownika i potem je wyswietlać w miejscu wywolania np. funkcji $logger->showMsg(), tylko jak oznaczać że wiadomość było już wyświetlona? Ma ktoś jakiś pomysł? Zwykla zmienna flagowa? Ale z drugiej strony czy Logger nie powinien złużyć do rapoertowania bardziej błędów dla admina niż wiadomości dla użytkownika? Ten post edytował br-design.pl 17.07.2006, 15:30:15 |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Ale z drugiej strony czy Logger nie powinien złużyć do rapoertowania bardziej błędów dla admina niż wiadomości dla użytkownika? To jak ci nazwa Logger nie pasuje to nadaj tej klasie nazwe: Messager i juz chyba bedzie ok (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) po co na sile tworzyc se problemy. nie pasuje nazwa to ją zmien i po sprawie.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 30.05.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Heh...
Tym tropem to mogę sobie zmienić wyjątki na powiadamiacze ;-) Logger to ogolnie przyjeta nazwa dla klasy która odpowiada za logowanie zdarzeń, nie ważne czy się nazywa Loging, Logger, Messager, Log itd. Chodzi mi o to że mieszać jedno z drugim, ale mogę sie przecież mylić. |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Tym tropem to mogę sobie zmienić wyjątki na powiadamiacze ; Nie, zdecydowanie idziemy innym tropem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Raz mowisz ze logger to bardziej dla admina niz wiadomosc dla usera,raz ze to ogolnie przyjeta nazwa dla czegos tam.... no sie zdecyduj. zrob klase dla logowania zdarzen, zrob klasy dla wiadomosci dla usera i juz. A jak chcesz polaczyc to polacz tylko rozdzielaj typami. Ja przykladowo mam polaczone, tj. w jednej klasie mam metody do komunikatow dla usera oraz logowanie do pliku. sa to metody podobne i czesciowo zalezne wiec je polaczym i jest mi z tym dobrze (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 384 Pomógł: 6 Dołączył: 11.09.2004 Skąd: Grodzisk Mazowiecki Ostrzeżenie: (0%) ![]() ![]() |
Cytat Hmmm pomysł z java jest całkiem ok, ale wydaje mi się troche na wyrost, napewno musi istnieć jakiś prosty przyjemny sposób na rozwiązanie problemu. java !== java script ! A co do problemu. U mnie jest klasa Template która dziedziczy po Smarty. Posiada ona metode displayMessage('Dodano news'); Cała filozofia (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) Ja rozwiązuje to bardzo prosto. Więc chętnie wysłucham jak robią to inni. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 30.05.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
@nospor
OK, Co do Loggera chodziło mi po prostu o rozwiązanie, nie wiedziałem czy mam takie komunikaty po prostu logować czy może inaczej je jakoś exportować. Wpadłem na jeszcze taki pomysł aby po prostu zapisywać komunikaty w obiekcie w zmiennej tablicy z którego się korzysta a potem je wyciągać 'po najświeższej', taki zalążek, co wy na to? A powiedz jeszcze, jak w swoim rozwiązaniu rozwiązujesz kwestie wyświetlenia odpowiedniej wiadomości? Bo wiadomo że nie wyświetlisz całego 'loga', wyświetlasz po prostu ostatnio dodaną czy w np. przypisujesz wydarzenia do wiadomości i potem to jakoś rozwiązujesz przy wyświetlaniu? @Strzałek Hehe, myślę że nie będe miał już problemu z wyświetleniem komunikatu ;-) Bardziej mi chodzi o sposób jego zapisywania... Ten post edytował br-design.pl 17.07.2006, 22:22:18 |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat A powiedz jeszcze, jak w swoim rozwiązaniu rozwiązujesz kwestie wyświetlenia odpowiedniej wiadomości? Bo wiadomo że nie wyświetlisz całego 'loga', wyświetlasz po prostu ostatnio dodaną czy w np. przypisujesz wydarzenia do wiadomości i potem to jakoś rozwiązujesz przy wyświetlaniu? Wiadomosci moga byc roznych typow. Moze byc kilka wiadomosci dla danego typu. W zaleznosci od typu roznie wyswietlam wiadomosci. jedne na czerwono (bledy), inne na zielono (komunikaty) i inne na inny kolor. Wyswietlam tyle wiadomosci ile bylo. sa tez wiadomosci ktore sa czystym logiem. W zaleznosci od ustawionych parametrow takie wiadomosci wyswietlam albo tylko do logow pisze |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 30.05.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
To ja poproszę wtedy o szybką lekcje php bo nie potrafie dojść do jednego.
Powiedz masz obiekt klasy news która ma funkcje wyświetlenie formularza do dodawania i po wysłaniu danych dodaje go oraz ma metode wyświetlania wiadomości (dla uproszczenia załużmy że w tym samej klasie a nie osobnej). Mając powiedzmy prostą stronę:
wysylasz formularz, dodaje się news, tworzy się wiadomość o tym fakcie, strona przeładowuje się i informacja umiera, chyba że zapisujesz ją w sesji, pliku lub w DB? Ten fakt że tak powiem mnie najbardziej zastanawia. |
|
|
![]()
Post
#12
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat tworzy się wiadomość o tym fakcie, strona przeładowuje się i informacja umiera, chyba że zapisujesz ją w sesji, pliku lub w DB W ktorym momencie napisalem ze mi sie strona przeladowuje po dodaniu wiadomosci? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) wiadomosc jest dodawana juz po przeladowaniu strony. wysylasz formualrz (strona sie przeladowuje), zapisujesz do bazy i w zaleznosci od tego czy sie udalo czy nie to tworzysz taka czy siaka wiadomosc. Potem masz jakies cudo co ci dodaje do wygenerowanej strony wiadomosci ktore sa zapisane. Jesli jednak z jakiegos powodu musisz znowu przeladowac strone to wiadomosci zapisujesz w sesji |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 30.05.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Ok, a co z problemem przeładowania?
Po takiej operacji jak ty mówisz, weźmy dla przykładu naszego newsa, bez przeładowania nie czyści się ani POST ani GET. Wieć po dodaniu tego newsa, użytkownik widzi nasz komunikat, pusty formularz na nowego newsa, ale wystarczy że odświeży strone i nawet się nie zoreintuje kiedy dodał drugi raz ten sam rekord. |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 109 Pomógł: 1 Dołączył: 19.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Strasznie komplikujesz proste rzeczy.
masz na stronie 3 akcje: - formularz (zawsze) - zapis newsa do bazy, nastepnie przekierowanie, zeby nie wyslac 2 raz posta - wyswietlasz komunikat, ktory trzymasz np. w sesji, po czym go usuwasz. |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Wczesniej przy programowaniu strukturalnym zastosowalem pewnien prosty mechanizm, ktory dzialal bardzo dobrze i calkiem wygodnie.
Mialem np. dodajNowoscFormularz i dodajNowosc. Pierwszy wyswietlal form, a drugi zapisywal w bazie - form kierowany byl do tego drugiego. Jezeli wszystko wyszlo ok robilem na koncu przekierowanie (header('Location: xyz.php?msg=Dodano Nowosc')). W pliku xyz.php mialem
Adrian. |
|
|
![]()
Post
#16
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Po takiej operacji jak ty mówisz, weźmy dla przykładu naszego newsa, bez przeładowania nie czyści się ani POST ani GET. Wieć po dodaniu tego newsa, użytkownik widzi nasz komunikat, pusty formularz na nowego newsa, ale wystarczy że odświeży strone i nawet się nie zoreintuje kiedy dodał drugi raz ten sam rekord. Tu masz cos jak zapobiegac odswierzaniu i to bez przekierowania: http://forum.php.pl/index.php?showtopic=44383 Pozatym problem z odswierzaniem ma sie nijak do komunikatow. Jesli jednak koniecznie chcesz robic przekierowanie to zapisz komuniakty do sesji, po przekierowaniu je odbierz, wyswietl i usun z sesji. No tu nie ma zadnej filozofii Cytat Jezeli wszystko wyszlo ok robilem na koncu przekierowanie (header('Location: xyz.php?msg=Dodano Nowosc')). @Prph taka metoda jest beznadziejna. A jak bedziesz chcial przekazac kilka komunikatow i beda za dlugie na url? Pomijam juz fakt ze ktos ci moze takiego linka spreparowac ze na Twojej stronie bedzie napisa: "Ta strona jest do.... kitu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) " albo jeszcze gorsze rzeczy i porazka totalna edit: z php5 to ma malo wspolnego. przenosze |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Jak dla mnie to klasa metoda dla wyswietlania. Ostatni serwis jaki robilem byl tak zaprojektowany(graficznie) ze w pliku index.php nad calym includowaniem itp moglem umiescic metode wyswietlajaca wiadomosci. Jesli wiadomosci nie bylo wszystko wygladalo w porzadku. Takze mala klasa i do wyswietlania i przekazywania wiadomosci.
A gdziekolwiek tam gdzie chcesz dodac tylko
Przewagatego uwazam jest taka, ze taka wiadomosc mozesz wyprintowac sobie gdzie tylko chcesz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 30.05.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
To ja ciągle czegoś nie rozumiem, jeżeli np. wyswietlasz wiadomosc w kodzie przed wywolaniem akcji to co wtedy? Wtedy nie ma jeszcze wiadomości...
Więc chyba trzeba najpierw wywołać akcje, zapisać wiadomość do sesji, przeładować stronę żeby wyczyścić REQUESTa i dopiero potem wyswietlic wiadomosc z sesji... Ten post edytował br-design.pl 18.07.2006, 13:33:32 |
|
|
![]()
Post
#19
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
teraz ja nie rozumiem. do kogo to pytanie? do mnie czy do thornag'a? W zasadzie to i tak bez roznicy.
Ty chyba mylisz pojecia "dodanie wiadomosci" i "wyswietlenie wiadomosci". Dodawac to se mozesz kiedy chcesz, przed zapisem formualrza, po zapisie formularza, ale wyswietlasz wtedy kiedy potrzebujesz. robisz przekierowanie - wyswietlaj po przekierowaniu. |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 30.05.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Pytanie do zainteresowanych: ;-)
No ale jak, przecież po przeładowaniu obiekt tworzy się na nowo i wszystkie wartości zmiennych idą w las. Więc nie można sobie przekierować a potem wyśwetlić zmiennej, chyba że jest to zmienna sesyjna, ale odwoływałem się do jego sposobu thornag'a: że wystarczy zmienić kolejność w jego przypadku i wszystko się posypię: tj. wpierw zrobię w kodzie:
a dopiero potem
To jeżeli nie zapiszę zmiennej do sesji i nie przeładuję strony to nic się nie pokaże. I druga kwestia w tym wypadku. Czy używać jednej zmiennej sesyjnej i przy każdym wydarzeniu napisywać ją? Ale wtedy możemy wyświetlić tylko jedną wiadomość. A jeżeli dla każdego komunikatu dawać inna nazwę zmiennej sesyjnej to jak z jej czyszczeniem? ------ Edit: OK, już mam rozwiązany problem ;-) Dzięki wszystkim za pomoc. Jakby co to rozwiązałem to tak: Przykładowa metoda dodawania danych:
Metody obsługujące komunikaty.
No i potem na stronie:
Ten post edytował br-design.pl 18.07.2006, 14:10:48 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 28.09.2025 - 09:41 |