Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Porównanie pobranych z formularza danych do NULLa
Forum PHP.pl > Forum > PHP
beel
Pobieram trzy wartości w JavaScript, dwie daty i jeden numeric (kwota). Jeśli nic nie zostanie wprowadzone to gdy porównam numeric do NULL'a, wie, że nic nie podano i odpowiednio reaguje (czyli do zapytania SQL wstawia NULLa), z datami niestety już to nie działa wstawia mi w zapytaniu coś takiego:
  1. data = ''

a chciałbym aby było:
  1. data = NULL

Kod wygląda tak:
  1. $dataZaw = $_POST['sUGO_DATA'];
  2. $kwota = $_POST['sUGO_KWOTA'];
  3. $terminSpl = $_POST['sUGO_TERMIN'];
  4.  
  5.  
  6. if (!is_int($_SESSION['S_tabSelectUgoda']))
  7. {
  8. if ($dataZaw == NULL)
  9. $sKomendaSQL = "UPDATE ugody SET data_umowy=NULL, termin_sp='$terminSpl', kwota=$kwota WHERE ug_id_proc = $cid";
  10. if ($terminSpl == NULL)
  11. $sKomendaSQL = "UPDATE ugody SET data_umowy='$dataZaw', termin_sp=NULL, kwota=$kwota WHERE ug_id_proc = $cid";
  12. if ($kwota == NULL)
  13. $sKomendaSQL = "UPDATE ugody SET data_umowy='$dataZaw', termin_sp='$terminSpl', kwota=NULL WHERE ug_id_proc = $cid";
  14. else
  15. $sKomendaSQL = "UPDATE ugody SET data_umowy='$dataZaw', termin_sp='$terminSpl', kwota=$kwota WHERE ug_id_proc = $cid";
  16. ...
  17. ...
Fifi209
A w bazie masz ustawione, że data może być null?
beel
Tak, mam odhaczone opcje NOT NULL.
Zresztą jak ręcznie wklepię zapytanie z NULLami (dla daty, terminu i kwoty) to przechodzi.
nospor
Twoje IFy są bez sensu.
Robiąc IFa pod IFem bez żadnych else, wykona się każdy IF pokolei (jeśli tylko jest prawdziwy) nadpisując poprzedniego IFa
A już najlepszy jest ostatni IF, gdzie dałeś ELSE. W takim przypadku zawsze ci się wykona ten ostatni IF lub ELSE i tu już na 100% masz nadpisywane zapytanie z poprzednich IF
by_ikar
Kod
$dataZaw = !is_null($_POST['sUGO_DATA']) ? $_POST['sUGO_DATA'] : NULL;
$kwota = !is_null($_POST['sUGO_KWOTA']) ? $_POST['sUGO_KWOTA'] : NULL;;
$terminSpl = !is_null($_POST['sUGO_TERMIN']) ? $_POST['sUGO_TERMIN'] : NULL;;


Generalnie, lepiej napisać dla czegoś takiego funkcje/metodę, ponieważ wiele razy będziesz się powtarzał, a tak w swojej funkcji/metodzie będziesz mógł dorzucić od razu jakąś domyślną wartość, escapowanie itp itd. przykładowo:

Kod
function getPost($keyName, $default = null)
{
    return !isset($_POST[$keyName]) || is_null($_POST[$keyName]) ? $default : $_POST[$keyName];
}


I wtedy już tylko bezpośrednio w zapytaniu:

Kod
$sKomendaSQL = "UPDATE ugody SET data_umowy='".getPost('sUGO_DATA')."', termin_sp='".getPost('sUGO_TERMIN')."', kwota='".getPost('sUGO_KWOTA')."' WHERE ug_id_proc = $cid";


Czy coś. Od tego masz funkcje, klasy i tym podobne, żeby nie pisać x razy tego samego.
beel
Pomyślę nad ostatnią propozycją, dzięki.
A co do przedostatniej podpowiedzi, no tak, ostro dałem ciała z IFami.

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