![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
witam
taki dziwny problem mam, nie wiem czy sam go stworzyłem czy po prostu nie da się tego tak łatwo zrobić. mam 6 różnych formularzy, 6 różnych modeli czyli 6 różnych tabel w bazie. w kontrolerze chciałbym to w jednym miejscu zapisywać, ale tak, żebym nie musiał tam podawać, które dane zapisuje. po prostu wszystkie dane muszą być zapisane. problem w tym, że w formularzu mam checkboxa, który ma wartość 0 lub 1. dane zapisuje w ten sposób:
problem w tym, że gdy ten checkbox jest odznaczony (ma wartość 0) to nie występuje on w tabeli z parametrami - w bazie nie są zapisywane dane, że ktoś odhaczył tego checkboxa (czyli powinno zapisać się 0). jak mógłbym to inaczej zrobić? -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 222 Pomógł: 35 Dołączył: 6.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Może rozwiąż to za pomocą JS ? Zrób hidden_tag i zapisuj do niego w zdarzeniu 'onclick' wartość 'checked' z checkboxa.
![]() -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
chciałem unikać JS jak tylko się da, no ale jak innego wyjścia to tak właśnie zrobię.
właściwie to już zrobiłem i działa:) dziękuje za pomoc. jednak gdyby było inne lepsze rozwiązanie (raczej po stronie php) to bardzo chętnie zmienię. -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 149 Pomógł: 12 Dołączył: 3.03.2008 Skąd: łódzkie Ostrzeżenie: (0%) ![]() ![]() |
A nie możesz ustawić domyślnej wartości na 0 w tej kolumnie w bazie
![]() -------------------- "Jeden człowiek nie zmieni świata, ale jeden człowiek może przekazać informację która zmieni świat." - David Icke
| PAMIĘTAJ, JESTEŚ POLAKIEM !!! | Jam jest Polska, Ojczyzna Twoja, ziemia Ojców, z której wzrosłeś. Wszystko, czym jesteś, po Bogu - mnie zawdzięczasz!! |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
ustawiłem. ale co to da?
widzę jakie są wykonywane zapytania i właśnie dlatego poszukuję jakiegoś rozwiązania. po prostu jak nie jest zaznaczony ten checkbox to w zapytanie nie pojawia się coś takiego jak status = 0. -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 149 Pomógł: 12 Dołączył: 3.03.2008 Skąd: łódzkie Ostrzeżenie: (0%) ![]() ![]() |
Ty no ale ja chyba czegoś nie kumam.
Przecież jak mam sobie tabelę jakąś przykładową, powiedzmy, `produkt`: | id | nazwa | cena | widoczny | <- jeśli widoczny to ma jeden, jeśli nie to zero. I teraz dając:
Normalnie dodaje mi rekord do bazy. Mowa o bazie MySQL. Więc jeśli metoda $dane->fromArray($this->getRequest()->getParameterHolder()->getAll(), BasePeer::TYPE_FIELDNAME); buduje Ci zapytanie bez pola przechowującego wartość tego checkboxa, bo nie zaznaczony jest nie przesyłany to i tak ta kolumna powinna być wypełniona domyślną wartością :/ Chyba, że to jest jakaś dziwna właściwość Propela :/ A może spróbuj w konfiguracji yml wpisać domyślną wartość tego pola (jeśli jest w ogóle taka opcja). -------------------- "Jeden człowiek nie zmieni świata, ale jeden człowiek może przekazać informację która zmieni świat." - David Icke
| PAMIĘTAJ, JESTEŚ POLAKIEM !!! | Jam jest Polska, Ojczyzna Twoja, ziemia Ojców, z której wzrosłeś. Wszystko, czym jesteś, po Bogu - mnie zawdzięczasz!! |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Czy w schema.yml dajesz pole typu boolean, czy tinyint/integer?
-------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
Ty no ale ja chyba czegoś nie kumam. Przecież jak mam sobie tabelę jakąś przykładową, powiedzmy, `produkt`: | id | nazwa | cena | widoczny | <- jeśli widoczny to ma jeden, jeśli nie to zero. I teraz dając:
Normalnie dodaje mi rekord do bazy. Mowa o bazie MySQL. Więc jeśli metoda $dane->fromArray($this->getRequest()->getParameterHolder()->getAll(), BasePeer::TYPE_FIELDNAME); buduje Ci zapytanie bez pola przechowującego wartość tego checkboxa, bo nie zaznaczony jest nie przesyłany to i tak ta kolumna powinna być wypełniona domyślną wartością :/ Chyba, że to jest jakaś dziwna właściwość Propela :/ A może spróbuj w konfiguracji yml wpisać domyślną wartość tego pola (jeśli jest w ogóle taka opcja). podczas insertu okej, no ale ja pisałem przecież, że chodzi mi o Update:) Czy w schema.yml dajesz pole typu boolean, czy tinyint/integer? boolean. -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 149 Pomógł: 12 Dołączył: 3.03.2008 Skąd: łódzkie Ostrzeżenie: (0%) ![]() ![]() |
Aaa, no chyba, że tak no i jawnie tego nie napisałeś, a z tego co napisałeś wczoraj w nocy nie dałem rady się domyślić, że mowa o Update
![]() -------------------- "Jeden człowiek nie zmieni świata, ale jeden człowiek może przekazać informację która zmieni świat." - David Icke
| PAMIĘTAJ, JESTEŚ POLAKIEM !!! | Jam jest Polska, Ojczyzna Twoja, ziemia Ojców, z której wzrosłeś. Wszystko, czym jesteś, po Bogu - mnie zawdzięczasz!! |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Możesz nadpisać metodę save, tak aby w razie braku parametru nadawala mu wartość 0
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
chyba nie będzie to takie proste.
na podstawie parametru przesłanego z URL (lub innego) tworze odpowiedni model.
więc jak? musiałbym każdemu modelowi taką metodę pisać. przy określonej ilości, powiedzmy 5 to jeszcze znośne jest. ale jak za kilka miesięcy wprowadzę kolejny model to takich poprawek może być więcej. bo to nie byłoby jedyne miejsce gdzie muszę to zmieniać. hmm ale tak sobie myślę, że to mógłby być dobry pomysł. nie tyle dobry co jedyny rozsądny:) przy braku innych prostszych - mniej inwazyjnych w modele. dzięki -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 36 Dołączył: 31.03.2006 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
wiedziałem, że musi być jakieś proste, normalne rozwiązanie:)
dzięki wielkie! -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 3 Dołączył: 8.05.2007 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Ja osobiście stosuję JEDNO pole hidden, które zawiera id wszystkich checkboxów z wartością (1)
Dzięki temu wykonuję potem tylko dwa zapytania SQL, przy aktualizacji - 1-sze zeruje wartości z tego pola hidden - 2-gie wstawia wartości "1" na zaznaczonych polach. Trochę więcej zabawy jest przy stronnicowaniu (trzeba wiedzieć jeszcze które ID wolno ruszać, czyli dochodzi drugie pole HIDDEN, a w update dodajemy "where id in ()"), ale takie rozwiązanie wydaje mi się najbardziej optymalne pod kątem zapytań SQL i łatwości wykonania. |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
a ja wykonuje tylko jedno zapytanie update....
![]() -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 3 Dołączył: 8.05.2007 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Jeden update zmienia Ci dwa rodzaje wartości? Podrzuć takie zapytanie, chętnie się douczę.
![]() |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
ja pisze na temat - w tym temacie wykonuje się jedno zapytanie, jak zostało przedstawione nie potrzeba więcej.
-------------------- aplikacje internetowe | Symfony
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 3.07.2025 - 18:54 |