witam wszystkich
mam problem z zrobilem formularz danych w html ktory te dane wysyla do pliku php ktorzy laczy sie z baza i on zapisuje te informacje!
Problem jest taki ze aby prawidlowo wypelnic formularz musza byc niektore pola wypelnione a nie puste! w tym celu stworzylem tabele z polami z funckja NOT NULL ale jak sprawdzam to wysylajac pusty formularz to mi i tak tworzy sie pusty rekord bo chyba pomiedzy tymi znakami ' chyba nie niemam nic np. ''
wlasnie jaki nalezy dac system porownywania kodow ktory stwierdzi ze to '' jest rowne NULL (PUSTE)?
a tak na marginesie jakiego sie w polsce uzywa przewazne systemu do sql?
Mysql i problem z NULL'em
Re: Mysql i problem z NULL'em
Tu nie chodzi o system porównywania kodów. Tego typu rzeczy należy sprawdzić po stronie skryptu obsługującego formularz i w wypadku błędnego wypełnienia formularza należy zwrócić użytkownikowi odpowiedni komunikat.
Warunki zapisane w bazie danych mają na celu ostateczne sprawdzenie poprawności danych (zapobiegające ich niespójności) i nie powinny być wykorzystywane do sprawdzania danych z formularza.
Warunki zapisane w bazie danych mają na celu ostateczne sprawdzenie poprawności danych (zapobiegające ich niespójności) i nie powinny być wykorzystywane do sprawdzania danych z formularza.
Re: Mysql i problem z NULL'em
ok rozumiem ciebie i wiem o co chodzi ale formularz jest w html'u i takie rozwiazanie potrzebowało jednak php! tym problemem zajmie sie pozniej ale narazie mi oto chodzi ze te zmienne wyslane przez html juz niemoge zmienic lub poinformowac ze ma cos zmienic
Narazie mam takie problem zeby '' uznawalo jako NuLL
cos takiego wymyslilem i moznabyloby cos takiego zrobic
if($zmienna=='')
$zmienna='NULL'
ale wolalbym jednak cos w bazie porobic niz w php nadganiac kazda zmienna takim warunkiem nawet nie wiem czy by dzialal!
i jeszcze jedno jakiego systemu porównywania znakow w polscie sie uzywa w sql to jestem zielony
Narazie mam takie problem zeby '' uznawalo jako NuLL
cos takiego wymyslilem i moznabyloby cos takiego zrobic
if($zmienna=='')
$zmienna='NULL'
ale wolalbym jednak cos w bazie porobic niz w php nadganiac kazda zmienna takim warunkiem nawet nie wiem czy by dzialal!
i jeszcze jedno jakiego systemu porównywania znakow w polscie sie uzywa w sql to jestem zielony
Re: Mysql i problem z NULL'em
Wydaje mi się, że niestety trzeba dodać mniej więcej taki warunek do każdej zmiennej (ewentualnie można zrobić jakąś pętlę dla wszystkich zmiennych) - innego rozwiązania nie znam.
Ustawienie systemu porównywania znaków w MySQL powinno zależeć od kodowania danych tekstowych:
Jeżeli dane (lub strona) napisane są w kodowaniu UTF-8 to należy użyć:
utf8_general_ci - dla wielu języków lub
utf9_polish_ci - jedynie dla języka polskiego.
Jeżeli dane są w ISO-8859-2 należy użyć odpowiedniego kodowania latin2.
Na marginesie dodam, że system porównywania służy głównie do sortowania danych (patrz ORDER BY).
W uproszczeniu nazwy systemów w MySQL są postaci: xxx_yyy_zz
xxx - oznacza typ kodowania znaków (utf8 dla UTF-8, latin2 dla ISO-8859-2 i latin1 dla ISO-8859-1).
yyy - mówi dla jakiego języka konkretnie stosować porównywanie.
zz - mówi czy porównywanie ma się odbywać z uwzględnieniem wielkości liter (ci - bez rozróżniania wielkości liter).
Ustawienie systemu porównywania znaków w MySQL powinno zależeć od kodowania danych tekstowych:
Jeżeli dane (lub strona) napisane są w kodowaniu UTF-8 to należy użyć:
utf8_general_ci - dla wielu języków lub
utf9_polish_ci - jedynie dla języka polskiego.
Jeżeli dane są w ISO-8859-2 należy użyć odpowiedniego kodowania latin2.
Na marginesie dodam, że system porównywania służy głównie do sortowania danych (patrz ORDER BY).
W uproszczeniu nazwy systemów w MySQL są postaci: xxx_yyy_zz
xxx - oznacza typ kodowania znaków (utf8 dla UTF-8, latin2 dla ISO-8859-2 i latin1 dla ISO-8859-1).
yyy - mówi dla jakiego języka konkretnie stosować porównywanie.
zz - mówi czy porównywanie ma się odbywać z uwzględnieniem wielkości liter (ci - bez rozróżniania wielkości liter).
Re: Mysql i problem z NULL'em
dzieki wielkie
tylko jestem ciekawy po co dali ta funkcje NULL w sql jak nie mozna z niej korzystac?
myslalem ze pocos to jest tylko jakos trzeba dobrze skonfigurowac troche mnie zaskoczyles ale chyba nie jedno mnie zaskoczy w php i mysql
tylko jestem ciekawy po co dali ta funkcje NULL w sql jak nie mozna z niej korzystac?
myslalem ze pocos to jest tylko jakos trzeba dobrze skonfigurowac troche mnie zaskoczyles ale chyba nie jedno mnie zaskoczy w php i mysql
Re: Mysql i problem z NULL'em
Trochę mylisz pojęcia. NULL jest wartością, a specjalnym typem danych, zachowującym się w specyficzny sposób. Pusty ciąg który wysyłasz z formularza nie jest NULL tylko jest stringiem o długości zero.
W bazie NULL i NOT NULL służy do korekty danych i ułatwiania pisania zapytań a do sprawdzania ich poprawności wykorzystujesz PHP.
Jeśli pominiesz w zapytaniu jakieś wartości a są one zadeklarowane jako NOT NULL to SQL dokona Ci korekty i w tych polach zapisze pusty ciąg jeśli pole było np: VARCHAR lub 0 jeśli pole było np: INT. Jeśli pole zadeklarowane jest jako NULL to tylko i wyłącznie wstawienie w zapytaniu NULL lub pominięcie określonego pola spowoduje nie wstawienie niczego do bazy.
W bazie NULL i NOT NULL służy do korekty danych i ułatwiania pisania zapytań a do sprawdzania ich poprawności wykorzystujesz PHP.
Jeśli pominiesz w zapytaniu jakieś wartości a są one zadeklarowane jako NOT NULL to SQL dokona Ci korekty i w tych polach zapisze pusty ciąg jeśli pole było np: VARCHAR lub 0 jeśli pole było np: INT. Jeśli pole zadeklarowane jest jako NULL to tylko i wyłącznie wstawienie w zapytaniu NULL lub pominięcie określonego pola spowoduje nie wstawienie niczego do bazy.
Re: Mysql i problem z NULL'em
jeżeli już stawiasz taki warunek i przypisujesz zmiennej jakąś wartość w ' ' to chyba wiesz, że ciąg znaków między tymi ' ' jest jej przypisany, w tym wypadku jest to 'NULL'. Po prostu, jeżeli chcesz pustą zmienną to napisz $zmienna = '';123456789 pisze: cos takiego wymyslilem i moznabyloby cos takiego zrobic
[php]<?php
if($zmienna=='')
$zmienna='NULL'
?>[/php]
ale wolalbym jednak cos w bazie porobic niz w php nadganiac kazda zmienna takim warunkiem nawet nie wiem czy by dzialal!
i jeszcze jedno jakiego systemu porównywania znakow w polscie sie uzywa w sql to jestem zielony
Podobnie w przypadku "wkładania" informacji do bazy danych. Jeżeli NULL nie działa, spróbuj -> ''. I pamiętaj też o opcji default w bazie danych. Możesz już ustawić wartość domyślną przy tworzeniu tabeli:
[php]<?php
CREATE TABLE `tabela` (
....
`wiek` INTEGER DEFAULT '0',
...
);
?>[/php]
