Autor Zpráva
janaK
Profil *
Dobrý den, už několik hodin řeším vkládání záznamu do databáze přes formulář v html, a vkládání obsluhuju pomocí PHP. Problém mám s hodnotami NULL, uživatel totiž nemusí zadat některé položky ve formuláři a tím pádem potřebuji do databáze vložit hodnotu NULL.

tzn. pokud není hodnota zadána...if ($date == null){$date = 'null';} else {$date = $_POST["date"];}
-> tak nastavím promennou na hodnotu null, v opačném případě ji přiřadím hodnotu z formuláře.

dále pak použiji dotaz ..
$prikaz=MySQL_Query("INSERT INTO game (name, type, date, registration) VALUES ('$name', '$type', '$date', '$registration');");

jenže při vkládání hodnoty NULL do políčka v databázi, která je číselného nebo datumového typu, mi to nefunguje :-( vůbec nevím jak to řešit, do příkazu asi těžko budu vkládat nějakou funkci.. nebo ano? zkoušela jsem i místo apostrofů uvozovky s lomítkama ale nic...
Fantasta
Profil
zkus if ($date == "")

Hodnotu null v podmínce jsem neviděl ;)
lamka2
Profil
$date=$_POST["date"];
if(empty($date)) $date="";
potom staci klasicky insert a null sa vlozi same ale musis mat v databazy nastavene aby mohlo byt aj null
janaK
Profil *
tohle mi nepomůže, ty hodnoty null mi fungují, problém je v tom, že v insertu nesmí být hodnota NULL v uvozovkách či apostrofech, jinak to neuloží...
jde o to, že když dám:
$date = 2008-05-05
INSERT INTO game( name, date ) VALUES ( '$name', '$date') - funguje, datum musí být v uvozovkách,

ale když, uživatel tu hodnotu nezdadá tzn.
$date = Null
INSERT INTO game( name, date ) VALUES ( '$name', '$date') - nefunguje

$date = Null
INSERT INTO game( name, date ) VALUES ( '$name', $date) - funguje, odstranila jsem uvozovky u date, vkládá se tam null hodnota, ta musí být bez uvozovek, ale pokud $date nabyde datumu, insert nebude fungovat znovu :-(
Fantasta
Profil
$date = Null
INSERT INTO game( name, date ) VALUES ( '$name', '$date') - nefunguje

Ono taky jestli máš v databázi datum, tak výchozí budou nuly - 0000-00-00, tak tudíž hodnota Null tam neplatí.

Nevím proč tam mermomocí chceš dávat 'Null'

if ($date == '"" {$date = "'';} nebo snad i

if ($date == '"" {$date = "0000-00-00'';}
janaK
Profil *
no ty prázdný uvozovky mi do toho políčka s datum taky nejdou, takže jedině ty nuly... to mě nenapadlo! takhle bych to vyřešit mohla! i časem! tak díkec!!!!
Densha
Profil *
...VALUES('NULL' ... v INSERTU znamená, že se do databáze uloží řetězec s obsahem NULL, tedy znaky N-U-L-L (proto to také nefunguje jinde, než nad řetězcovými typy), ne hodnota NULL, ta musí být zapsána bez apostrofů, tedy ...VALUES(NULL, 'blah', 'blah'....
BetaCam
Profil
janaK
Tohle by šlo možná řešit i normální podmínkou :

("INSERT INTO game( name, date ) VALUES ( '$name', ".($date === NULL ? FALSE : '\''.$date.'\'').")");


za funkčnost a správnost v tuto hodinu neručím.
cahik
Profil *
vzdyt reseni tu JanaK v podstate napsala sama, jen je potreba to hodit do podminky v phpcku. proste pokud bude promenna $date prazdna tak pouzijes verzi INSERT INTO game( name, date ) VALUES ( '$name', $date) no a pokud bude obsahovat datum tak INSERT INTO game( name, date ) VALUES ( '$name', '$date'). obycejna podminka if else,vubec nic sloziteho.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0