Ik heb een nieuws-module waarbij de gebruiker kan invullen tussen welke periode het artikel getoond moet worden.
Indien ze dit niet willen gaat wordt er een standaard tijds aanduiding gegeven, 0000-00-00 00:00:00

Nu werkt dit op zich goed. Alleen als ik een bepaalde taal maar wil tonen gaat het mis.
Ik werk met Codeigniter en active record queries. Desalniettemin kan ik gewoon normale queries gebruiken of een combo hiervan.

Onderstaand de query en het resultaat hiervan in objecten.
Ik kom er niet meer uit.


SELECT `news_id`, `news_publishdate`, `news_startdate`, `news_enddate`, `news_order_id`, `news_status`, `news_posterid`, `news_tags`, `news_translation_id`, `news_translation_intro_title`, `news_translation_intro_text`, `news_translation_intro_image`, `news_translation_detail_title`, `news_translation_detail_text`, `news_translation_detail_image`, `news_translation_newsid`, `news_translation_localeid`, `locale_id`, `locale_code`, `locale_name`, `locale_active`
FROM (`module_news`)
JOIN `module_news_translations` ON `module_news_translations`.`news_translation_newsid`  = `module_news`.`news_id`
JOIN `locales` ON `locales`.`locale_id`  = `module_news_translations`.`news_translation_localeid`
WHERE `news_startdate` <= '2014-08-11 00:00:00' AND news_enddate >= '2014-08-11 00:00:00'
OR `news_startdate` = '0000-00-00 00:00:00' OR news_enddate = '0000-00-00 00:00:00'
AND `news_translation_localeid` = '1'
AND `locale_id` = '1'
AND `news_status` =  '1'
ORDER BY `news_order_id` ASC
LIMIT 10
Array
(
    [0] => stdClass Object
        (
            [news_id] => 4
            [news_publishdate] => 2014-05-21 00:00:00
            [news_startdate] => 0000-00-00 00:00:00
            [news_enddate] => 0000-00-00 00:00:00
            [news_order_id] => 2
            [news_status] => 1
            [news_posterid] => 1
            [news_tags] =>
            [news_translation_id] => 5
            [news_translation_intro_title] => item 1
            [news_translation_intro_text] => Item 1
            [news_translation_intro_image] => 
            [news_translation_detail_title] => Item 1
            [news_translation_detail_text] => Item 1
            [news_translation_detail_image] => 
            [news_translation_newsid] => 4
            [news_translation_localeid] => 1
            [locale_id] => 1
            [locale_code] => nl_NL
            [locale_name] => Dutch
            [locale_active] => 1
        )

    [1] => stdClass Object
        (
            [news_id] => 4
            [news_publishdate] => 2014-05-21 00:00:00
            [news_startdate] => 0000-00-00 00:00:00
            [news_enddate] => 0000-00-00 00:00:00
            [news_order_id] => 2
            [news_status] => 1
            [news_posterid] => 1
            [news_tags] =>
            [news_translation_id] => 6
            [news_translation_intro_title] => Item 1
            [news_translation_intro_text] => Item 1
            [news_translation_intro_image] => 
            [news_translation_detail_title] => News item 1
            [news_translation_detail_text] => ''           
            [news_translation_detail_image] => 
            [news_translation_newsid] => 4
            [news_translation_localeid] => 2
            [locale_id] => 2
            [locale_code] => en_GB
            [locale_name] => English
            [locale_active] => 1
        )

)
Bedankt allemaal voor de hulp.

Ik denk dat het een "fout" is in Navicat. Wat ik invoer is gewoon NULL, ik denk dat dit wordt gezien al string en niet als NULL waarde maar als 'NULL'.

Daarnaast ga ik de MySQL ref. even bekijken en doorlezen, hier steek ik natuurlijk nog weer wat van op.
Toch vindt ik Erwin zijn reactie erg bot, het is niet dat ik het niet probeerde het was dus meer een onkunde van mijn beheer-tool. PHPmyAdmin heb ik ook maar had dat niet geprobeerd omdat ik andere dingen aan het doen was op dat bepaalde moment.

Al met al is het gelukt.

Ik zeg, topic dicht.
Ik denk dat Erwin het zeer zeker niet bot heeft bedoeld hoor.
Het is ook niet dat ik hier nu op reageer om je te bekeren tot wat wij zeggen "zo moet het".
Las het topic door, en had ooit in een talk gehoord over die vreemde datums en nog wat ongein wat mysql allemaal kan. Dus dacht in eerste instantie aan strict modes, dus denk zal even voor je meedenken hoe dat ook alweer zat.

Overigens in phpmyadmin heb je dit "probleem" ook. Als je je mysql server al die dingen,laten we zeggen minder exotisch instelt, dan kom je later niet voor vreemde verrassingen te staan. Nogmaals geen bashing richting mysql, ook niet een overtuiging verhaal dat het allemaal beter moet, maar meer een tip dat het beter kan. ;)
Ik ben ook zeker niet boos o.i.d hoor. Alleen de manier van praten vond ik wat apart.
Ik ben zo blij als een vogel met een werkende module.
Ik hou het een klein beetje open:
Wat er gebeurd bij een NULL invoer op een kolom die niet nullable is:
- als er een default waarde is hou die aan
- genereer een fout als geen default waarde is ingesteld

Ook als je bij een nullable column een default waarde hebt toegevoegd wordt die ingevoerd als NULL wordt ingevoerd.

Erwin zijn reactie is (zelfs) niet (een beetje) bot, maar gewoon recht dooruit:
Ik kan me niet voorstellen dat Navicat afdwingt dat kolommen not nullable zijn danwel een verplichte default hebben

Excuses als het bot overkomt, dat was niet de intentie. Hoewel ik toegeef dat het bij mij nog wel eens irritatie opwekt als mensen met verstand van zaken te horen krijgen dat wat ze zeggen 'niet kan', waardoor het kan zijn dat soms een reactie wat harder overkomt dan strikt noodzakelijk.
Geen probleem Erwin. Het kon misschien wel maar ik kreeg het niet voor mekaar.
Eind goed al goed.

Reageren