![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 1 Dołączył: 17.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Piszę aplikacje w symfony. Chcę zaaktualizacować zawartość rekordu w bazie danych w tabeli kategorie. Dane do akcji przychodzą z js.
(UPDATE kategorie SET nazwa="1", id_rodzica="1" WHERE id_kategori = "1") Powyżej to kod akcjii którym to załatwiam. Wszystko działa poprawnie kiedy dane które są różne niż te w bazie. Jeżeli w tabeli jest 1, 1, 1 i robię update na 1,1,3 wtedy będzie success. A jeżeli w tabeli jest 1,1,1 i zmieniam na 1,1,1 wtedy jest error. Jak to załatwić. Przecież nie będę najpierw wyciagał z bazy danych porównywał na poziomie akcji tych danych z tym co chce zapisać i jeżeli są różne to dopiero wykonywać update. Coś robię źle? Pozdrawiam
Powód edycji: [strife]: Dodanie tagu
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 605 Pomógł: 96 Dołączył: 22.10.2004 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
Przenoszę na forum frameworki.
Masz jakieś logi? Tryb debugowania w symfony włączony? Treśc błędu masz? -------------------- Najczęstsze błędy | Jak poprawnie zadać pytanie? | Serwer PHP - od czego zacząć?
SQL Injection | Hashowanie haseł | Jak działają sesje, przykłady ___ The world is yours ... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 1 Dołączył: 17.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
raczkuje w tym temacie
![]() dopiero zaczynam używać symfony. Mam xampp + php + mysql i na tym symfony 1.4 nie mam zielonego pojęcia czy są jakieś logi od tego a jak są to w jakim katalgou. Nie zagłębiałem się jeszcze tak bardzo |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 605 Pomógł: 96 Dołączył: 22.10.2004 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
Z tego co pamiętam w Symfony masz możliwość włączenia tryb debugowania (http://stackoverflow.com/questions/5276415...vely-in-symfony). Taki fajny debug bar powinieneś mieć.
Potem firebug'iem możesz sobie tego request'a podejrzeć, może w tym trybie sf coś wywali. I jeszcze filelogger można włączyć: http://stackoverflow.com/questions/8160352...ing-not-working -------------------- Najczęstsze błędy | Jak poprawnie zadać pytanie? | Serwer PHP - od czego zacząć?
SQL Injection | Hashowanie haseł | Jak działają sesje, przykłady ___ The world is yours ... |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 1 Dołączył: 17.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
dzięki. Jutro obaczaje temat. Jak by co to usłyszenia
![]() |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 7 Dołączył: 6.09.2011 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Aby włączyć taki debug bar dodaj "_dev" po nazwie aplikacji:
np frontend_dev.php lub backend_dev.php itp... a w Firebugu po zainstalowaniu przejdź w zakładkę Sieć, a następnie XHR... Wszystko widać jak na dłoni... -------------------- Pomogłem? Kliknij "Pomógł".
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 1 Dołączył: 17.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
No faktycznie. _dev. Ale nie uzyskałem nic satysfakcjującego. Może dlatego, że wszystko działa za pośrednicwem js. Najpierw waliduje dane z formularzy i wysyłam dane ajaxem do akcji. Czyli widze tylko co zwróciło mi js czyli {"type":"error"}
Ten post edytował Papub 10.02.2012, 00:30:24 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 395 Pomógł: 80 Dołączył: 24.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Można skonfigurować symfony aby żadania ajaxowe zwracały panel debugowania, tylko że samemu trzeba go stworzyć i wysyłać z akcji. Dużo łatwiej i szybkiej można sprawdzic logi a dokładnie frontend_dev.log, na początku najlepiej go wyczyścić a potem przesłać żądanie ajaxowe i sprawdzić co zostało zapisane.
Przy wysyłaniu danych ajaxem url postaci: /artykul/wyswietl powinien zwierać prefix /frontend_dev.php/artykul/wyslij i tylko w środowisku deweloperskim w produkcyjnym należy go usunąć. -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 7 Dołączył: 10.03.2011 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Zobacz w dokumentacji co zwraca doUpdate()
![]() |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 1 Dołączył: 17.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nie doszukałem się w dokumentacji.
Zrobiłem coś takiego:
i w firebugu sprawdziłem że gdy doda się prawidłowo zwraca {"type":1} a gdy ponownie dodam nie zmienione dane {"type":0} w środowisku developerskim do góry w pasku nie zwraca żadnych błędów. - a w sumie doczytałem, że podana liczba to liczba zmodyfikowanych wierszy. Wiec źle do tego podszedłem. W sumie chodzi mi nie o liczbe wierszy albo czy w ogóle coś zostało zmodyfikowane. Bardziej mi zależy na pozyskaniu informacji czy procedura updatu przebiegła prawidłowo. Czy podczas updatu nie nastąpił jakiś błąd. Żebym na partyzanta nie wyświetlił informacji użytkownikowi że dane zostały zaaktualizowane a tak na prawę okazałoby się że wystąpił błąd podczas updatu Ten post edytował Papub 10.02.2012, 13:15:01 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 7 Dołączył: 6.09.2011 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Pobierz dane, wykonaj na nich zmianę i zapisz metodą save. Jedynie taką metodę widzę bez konieczności nadpisywania klas itp. Wtedy możesz w warunku sprawdzić czy save się wykonał prawidłowo. Jeżeli ktoś widzi inne rozwiązanie to proszę bardzo...
-------------------- Pomogłem? Kliknij "Pomógł".
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 1 Dołączył: 17.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
A update nie ma takiego warunku? Bez sesnu to. Zaoszczędzę jedno zapytanie robiąc np. surowe zapytanie
![]() Ten post edytował Papub 10.02.2012, 22:39:10 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 7 Dołączył: 6.09.2011 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
No jeżeli tak, to wejdź do metody doUpdate a następnie doUpdate z klasy Base... Przeanalizuj te matody i sam zobaczysz
-------------------- Pomogłem? Kliknij "Pomógł".
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 1 Dołączył: 17.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
A inni też tak robią? Bo jeżeli to jest ogólnie przyjęta zasada to też w to wejde
![]() ![]() |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 7 Dołączył: 6.09.2011 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czy inni też tak robią... Wiem jedno, że jeżeli chcesz mieć pewność, że aktualizacja została wykonana poprawnie, to możesz tak postąpić... wtedy będziesz miał pewność, że dane zaktualizowano prawidłowo sprawdzając co zwraca funkcja save(). Ewentualnie jakoś samemu napisać metodę, która podczas aktualizacji będzie sprawdzać ilość zaktualizowanych rekordów (mimo tego, że dane aktualizujące będą takie same jak dane przechowywane w bazie). Wtedy sprawdzisz czy ilość rekordów jest większa od 0 (dobrze zaktualizowane)... Jakoś nie mam pomysłu jak wykonać to przy użyciu Propela bez kombinowania z jednym zapytaniem... W grę wchodzi też możliwość "z palca" wpisania zapytania aktualizującego i sprawdzenie później czy zwróci jeden czy zero... Szkoda, że inni się nie wypowiedzą, bo prawdę powiedziawszy też jestem ciekaw czy jest możliwość załatwienia tego w taki sposób w jaki myślisz.
-------------------- Pomogłem? Kliknij "Pomógł".
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 1 Dołączył: 17.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
No właśnie nie doszukałem się w dokumentacji szczegółowego opisu funkcji doUpdate. Swoją drogą po co ktoś piszesz taką funkcję której nie da się sprawdzić pod kontem prawidłowego działania. W sumie dla mnie satysfakcjonuje mnie odpowiedź 0 i 1 zwracane przez doUpdate bo nie ma innej możliwości żeby 0 pokazywało co innego niż to że wprowadzane dane są takie same. Tylko jaka jest gwarancja że zawsze 1 będzie oznaczało że wszystko poszło ok itd. No ale dzięki bardzo za chęć pomocy. Może coś jeszcze w necie wyszperam. Pozdrawiam
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 08:24 |