Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Dane z formularza są zawszę jako string, a powinny być jako int.
miniol
post
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 4
Dołączył: 25.03.2011

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


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ć.

Ten post edytował miniol 16.05.2012, 13:38:47
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Formularz zawsze wysyła dane jako string. Co ci to przeszkadza, bo nie bardzo rozumiem w czym masz problem.
Go to the top of the page
+Quote Post
RAV_8
post
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 2
Dołączył: 19.04.2012
Skąd: Olsztyn

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


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.
Go to the top of the page
+Quote Post
miniol
post
Post #4





Grupa: Zarejestrowani
Postów: 84
Pomógł: 4
Dołączył: 25.03.2011

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


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?

Ten post edytował miniol 16.05.2012, 14:15:14
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Powód edycji: [nospor]:
Go to the top of the page
+Quote Post
miniol
post
Post #6





Grupa: Zarejestrowani
Postów: 84
Pomógł: 4
Dołączył: 25.03.2011

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


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!
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
miniol
post
Post #8





Grupa: Zarejestrowani
Postów: 84
Pomógł: 4
Dołączył: 25.03.2011

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


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.

Ten post edytował miniol 16.05.2012, 14:58:16
Go to the top of the page
+Quote Post
BaN
post
Post #9





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

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


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

Ten post edytował BaN 16.05.2012, 23:14:27
Go to the top of the page
+Quote Post
miniol
post
Post #10





Grupa: Zarejestrowani
Postów: 84
Pomógł: 4
Dołączył: 25.03.2011

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


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.
Go to the top of the page
+Quote Post

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: 23.08.2025 - 01:13