Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] filtrowanie danych z formularza problem z zero i null
Forum PHP.pl > Forum > Przedszkole
kayman
  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
nospor
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....
kayman
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
nospor
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.
kayman
staram się przebudować tę klasę

http://forum.php.pl/index.php?showtopic=223892&hl=
nospor
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
kayman
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.  
nospor
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.
kayman
tak zrobię, dzięki za pomoc
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.