Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dane z formularza są zawszę jako string, a powinny być jako int.
Forum PHP.pl > Forum > Przedszkole
miniol
Kiedy wpisuję w polu formularza (<input type="text" />) jakiś ciąg tekstowy i sprawdzam potem czy jest to string, czy integer pokazuje mi, że jest to string i jest ok, ale jeśli wpiszę w formularzu 10 to chciałbym, żeby potem php wykryło te dane jako integer, a nie jako string. Jak to ugryźć?

Podejrzewam, że jest jakaś prosta metoda, żeby to wykryć.
nospor
Formularz zawsze wysyła dane jako string. Co ci to przeszkadza, bo nie bardzo rozumiem w czym masz problem.
RAV_8
Jeśli tak bardzo zależy Ci na typie INT, możesz zrobić tak:
  1. $przyklad = (int) $_POST['przyklad']


Choć podobnie jak nospor nie rozumiem założenia tej operacji.
miniol
Chodzi o to, że na podstawie typu danych, lądują one odpowiednio w różnych tablicach i są w różny sposób przetwarzane.
Spośród 10tys pól losowane są 3-4 pola które muszą zostać uzupełnione. Dlatego ręczne przypisanie typu danych dla każdego pola jest nierealne. Jednym razem może to być np: Nazwisko (wtedy musi być string) a innym razem może to być rok, wtedy powinno być jako int.

RAV_8 o ile rozumiem, to Twoje rozwiązanie zamienia mi ciąg na int. A nie zależy mi na tym, żeby zmieniać typ danych, tylko chcę go rozpoznać.

Jest jakiś pomysł na jakiś warunek?
nospor
No ale przecież jak wysyłasz pola to chyba sam wiesz czym to pole jest. A skoro wiesz czym jest to naprawdę nie widzę żadnego problemu.

Cytat
RAV_8 o ile rozumiem, to Twoje rozwiązanie zamienia mi ciąg na int. A nie zależy mi na tym, żeby zmieniać typ danych, tylko chcę go rozpoznać. Jest jakiś pomysł na jakiś warunek?

is_numeric - manual
miniol
Cytat(nospor @ 16.05.2012, 15:15:55 ) *
No ale przecież jak wysyłasz pola to chyba sam wiesz czym to pole jest. A skoro wiesz czym jest to naprawdę nie widzę żadnego problemu.
No właśnie nie zupełnie. Za każdym razem jest to pole zupełnie inne. W każdym razie is_numeric jest tym czego szukałem. Dzięki!
nospor
Cytat
No właśnie nie zupełnie. Za każdym razem jest to pole zupełnie inne.
No to oprócz pola, wysyłaj również info o tym polu np. przy pomocy pola hidden

Cytat
W każdym razie is_numeric jest tym czego szukałem.
Przecież ktoś zamiast nazwiska może wpisać 1992 i co? I będziesz myślał że to pole to był rok a nie nazwisko.
miniol
Chodzi o to, że pola są pobierane z API (konkretnie chodzi o allegro webapi - czyli kategorię i jego atrybuty) i nie mam na nie zbyt wielkiego wpływu. Na podstawie tych typów danych trzeba wygenerować odpowiednią tablicę i wprowadzić ją albo do 'fvalue-string' => '' albo do 'fvalue-int' => ''.
Jedyne co zwraca mi api przy pobieraniu atrybutów to informacje o tym, czy pole formularza będzie listą rozwijaną, czy polem tekstowym. I tak oto powstaje mi pole tekstowe z rokiem wydania oraz pole tekstowe np z nazwiskiem. Teraz muszę to odpowiednio wstawić do 'fvalue-string' => '' albo do 'fvalue-int' => ''.

Jeżeli ktoś w rubryce Nazwisko wpisze 1992, to już API wychwyci ten błąd.

Ja osobiście nie widzę innego sensownego rozwiązania. Ale też nie twierdzę, że takowego nie ma.
BaN
Nie wiem dokładnie jaką metodę webAPI Allegro wywołujesz, ale Allegro przekazuje również dane o typie pól formularzy. Jeżeli wywołujesz doGetSellFormFieldsForCategory, to zgodnie z dokumentacją:
Cytat
sell-form-type | int
Określenie typu pola w formularzu sprzedaży (1 - string, 2 - integer, 3 - float, 4 - combobox, 5 - radiobutton, 6 - checkbox, 7 - image (base64Binary), 8 - text (textarea), 9 - datetime (Unix time), 13 - date).

Jeżeli zaś inną metodę, to sprawdź w dokumentacji, z tego co pamiętam były zwracane typy pól jakie są wymagane
miniol
Cytat(BaN @ 17.05.2012, 00:12:55 ) *
Nie wiem dokładnie jaką metodę webAPI Allegro wywołujesz, ale Allegro przekazuje również dane o typie pól formularzy. Jeżeli wywołujesz doGetSellFormFieldsForCategory, to zgodnie z dokumentacją:

Jeżeli zaś inną metodę, to sprawdź w dokumentacji, z tego co pamiętam były zwracane typy pól jakie są wymagane

O kurde faktycznie. Nie zauważyłem wcześniej, bo kopiowałem po części kod już z innej funkcji.
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.