Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Podmiana pustych stringów na null, Przekazanie nazwy zmiennej
markonix
post
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


  1. function empty_to_null($array = array())
  2. {
  3. print_r($array);
  4. $new_array = array();
  5. foreach($array as $value)
  6. $new_array[TUTAJ NAZWA ZMIENNEJ] = $value == '' ? NULL : $value;
  7. return $new_array;
  8. }
  9.  
  10. extract(empty_to_null($zmienna1, $zmienna2));


Czy ktoś ma pomysł na działanie takowej funkcji.
Przydałaby mi się ona przed dodawaniem wielu pól numerycznych gdzie nie chce rzutowania na INT czyli zmieniania pustej wartości na 0.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Ale ja mówię o serwerowej wersji. Widok jest generowany na podstawie tego, co dajesz na wejściu do generatora formularza. A typ można przecież określić jako parametr elementu formularza. Zresztą najczęściej wszelkie generatory wymagają go, by określić z jakim typem pola mamy do czynienia ( input wszak może już teraz przyjąć: hidden, radio, text, checkbox). Dodanie kolejnych to nie problem. Nowe typy jednakże są obsługiwane jedynie client-side i po stronie serwera też muszą być walidowane. Teraz wystarczy jedynie zdefiniować abstrakcyjną klasę bazową Field z paroma własnościami i metodami, z której będziesz dziedziczył tworząc textarea czy input. Jedną z własności abstrakcyjnych będzie zapewne type i metody setType, getType, isValid. To właśnie w tej ostatniej sobie walidację ładnie na podstawie ustalonej dla danego pola formularza własności Type sprawdzisz. Jak? Z requesta bindujesz do zdefiniowanego formularza wartości z $_POST i przeprowadzasz walidację. Jeśli jest Ok, to zapis i forward na jakąś stronę... Jeśli nie, bindujesz form do widoku i wyświetlasz. Zauważ, że tutaj wszystko się dzieje server-side. Nic nie robisz po stronie klienta. A sam formularz to byłby zapewne kolejny obiekt, który trzymałby po prostu obiekty klas dziedziczonych po Field. To co chcesz zrobić, byłoby albo osobnym obiektem, albo związane z obiektem kasy Validation, jeśli taką przewidujesz.
Powód edycji: [thek]: Taka informacja... input type="number" obsługuje Opera i Chrome. Fx pewnie niedługo dołączy.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.12.2025 - 13:20