Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] filtrowanie danych z formularza problem z zero i null
kayman
post 17.06.2014, 01:01:36
Post #1





Grupa: Zarejestrowani
Postów: 556
Pomógł: 40
Dołączył: 20.07.2012
Skąd: Warszawa

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


  1.  
  2. function filterInt($value) {
  3. if ($value === '')
  4. return 'NULL';
  5. if (intval($value) === 0)
  6. return 0;
  7. return intval($value);
  8. }
  9.  
  10. function filterDouble($value) {
  11. $value = str_replace(',', '.', $value);
  12. if ($value === '')
  13. return 'NULL';
  14. if (doubleval($value) === 0)
  15. return 0;
  16. return doubleval($value);
  17. }
  18.  
  19.  


chodzi o to by jednoznacznie uzyskać null dla niewypełnionego pola w formularzu, zero dla wpisanego zera, wartość dla wartości

coś pokręciłem i działa to dziwnie

z góry dziękuję za pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
nospor
post 17.06.2014, 06:35:49
Post #2





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




Cytat
coś pokręciłem i działa to dziwnie
A czym ta dziwnosc się objawia?

ps:
return 'NULL';
Jesli potem wkladasz to bezposrednio do zapytania, to 'NULL' jest jak najbardziej ok. Jesli jednak obrabiasz to w php, to ma byc NULL a nie 'NULL'.
No i zakladam, że nie bierzesz liczb w zapytaniu w apostrofy bo wtedy faktycznie bedzie to dziwnie dzialac....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kayman
post 17.06.2014, 13:10:26
Post #3





Grupa: Zarejestrowani
Postów: 556
Pomógł: 40
Dołączył: 20.07.2012
Skąd: Warszawa

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


dziwne działanie się objawie tym ze potrafi zwrócić zero przy niewypełnionym polu albo null przy wpisanym zero smile.gif

to są filtry między formularzem a zapytaniem do bazy, jest jeszcze typu text i bool dla checkboxa ale te działają poprawnie

generalnie chodzi o to by przy edycji danych formularz był wypełniony dokładnie tak jak w czasie ostatniego zapisu więc tam gdzie było wpisane zero ma być zero a gdzie niewypełnione to niewypełnione, wartość to wartość

gdzieś zapewne jest banalny błąd ale ja go nie widzę smile.gif
Go to the top of the page
+Quote Post
nospor
post 17.06.2014, 13:15:26
Post #4





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




No to pokaz dla jakich liczb zwraca ci bledne dane, oraz pokaz caly kod, jak tego uzywasz, skad bierzesz dane źrodlowe, co robisz z danymi ktore zwracają te funkcje.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kayman
post 17.06.2014, 13:29:55
Post #5





Grupa: Zarejestrowani
Postów: 556
Pomógł: 40
Dołączył: 20.07.2012
Skąd: Warszawa

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


staram się przebudować tę klasę

http://forum.php.pl/index.php?showtopic=223892&hl=
Go to the top of the page
+Quote Post
nospor
post 17.06.2014, 13:39:05
Post #6





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




Powtorze jeszcze raz, bo widze umiejetnosc czytania ze zrozumieniem jest ci obca wink.gif

No to pokaz dla jakich liczb zwraca ci bledne dane, oraz pokaz caly kod, jak tego uzywasz, skad bierzesz dane źrodlowe, co robisz z danymi ktore zwracają te funkcje.
Nie interesuje mnie co starasz sie przebudowac. Napisalem, co mnie interesuje i interesują mnie aktualne dane, a nie jakas klasa z innego tematu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kayman
post 17.06.2014, 14:07:06
Post #7





Grupa: Zarejestrowani
Postów: 556
Pomógł: 40
Dołączył: 20.07.2012
Skąd: Warszawa

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


ale tu nie ma nic więcej, formularze maja po kilkadziesiąt i więcej pól wiec wklejenie kodu to taki sobie pomysł, generalnie ta klasa co podałem buduje zapytanie

ale przykład:

pole tekstowe w formularzu wpisane ma zero (nie to inne znaki bo js dopuszcza tylko wartość int lub puste pole inaczej nie można wysłać formularza) -> po filtrowaniu do bazy trafia null (questionmark.gifquestionmark.gif)

  1.  
  2.  
  3. $a = filterInt($_POST['nazwa_pola']);
  4.  
  5.  
  6. $sql = "insert into tabela set nazwa_pola = $a";
  7.  
Go to the top of the page
+Quote Post
nospor
post 17.06.2014, 14:11:18
Post #8





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




var_dump($_POST['nazwa_pola']);
Czy to, na pewno zwraca ci 0 z liczbą znakow 1? Pokaz wynik przykładowego var_dump

A najlepiej zrob tak:
  1.  
  2. var_dump($_POST['nazwa_pola']);
  3. $a = filterInt($_POST['nazwa_pola']);

To bedziesz wiedzial dokladnie co masz przed a co masz po i bedziesz wiedzial gdzie lezy blad.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kayman
post 17.06.2014, 14:31:15
Post #9





Grupa: Zarejestrowani
Postów: 556
Pomógł: 40
Dołączył: 20.07.2012
Skąd: Warszawa

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


tak zrobię, dzięki za pomoc
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:42