Newsgroup: it.comp.www.php
Titolo: controllare con php che un campo date mysql sia vuoto

Salve a tutti,
mi sono imbattuto in una cosa che sono sicuro si risolverà con la solita 
botta in testa e la frase "ma perchè non c'ho pensato prima??".
In sostanza ho un campo date in mysql e nel codice php vorrei 
controllare che questo campo sia valorizzato. In caso contrario il div 
che contiene l'informazione non deve essere mostrato.
Io ho scritto:
if(is_null($campo) || $campo == '' || $campo == '0000-00-00' || $campo 
== NULL )
	{
		$stringa = '';
	}
	else
	{
$stringa = '<div style="'.$styleDiv.'">'.$descrizione.': '.$campo.'</div>';
	}
Questo non solo mi mostra sempre il div, ma me lo riempie con una data 
che è sempre pari a 30 novembre 1999.
Vi chiedo: come mai un campo data vuoto (che so per certo essere vuoto) 
mi viene interpretato invece come un campo valorizzato e con data 30 
novembre 1999?
Voi come controllate i campi date?
Grazie a tutti per tirate d'orecchio che vorrete farmi :)
Franz

 Franz
hai fatto un var_dump($campo)?
che viene fuori?
solitamente i campi data 'vuoti' puntano al 1 gennaio 1970, il 30
novembre 99 non l'ho mai sentito

 novembre 99 non l'ho mai sentito
l'ho fatto...viene fuori NULL.
Anch'io sapevo del 1.1.1970...ma a me continua a stampare a video
30 novembre 1999.
Non capisco...l'hosting è su Aruba...magari c'è qualcosa che non va con 
le impostazioni di MySQL?
Oppure davvero si tratterà di una sciocchezza che però non riesco a vedere.
Grazie comunque per la risposta
Franz

 novembre 99 non l'ho mai sentito
Allora...
se io faccio un var_dump direttamente sull'elemento dell'array di 
mysql_fetch_assoc ottengo
var_dump($news['data_inizio'])  -->  Risultato: NULL
se invece nella funzione che ho costruito gli do il campo generico $campo
var_dump($campo) ---> Risultato:  string(16) "30 novembre 1999"
Per inciso la banale funzione �:
function hideNullFields($descrizione,$campo, $styleDiv)
{
	$stringa = '';
 
	if(is_null($campo) || $campo == '' || $campo == '0000-00-00' || $campo 
=== NULL)
	{
		$stringa = '';
	}
	else
	{
		$stringa = '<div style="'.$styleDiv.'">'.$descrizione.': 
'.$campo.'</div>';
	}
 
	return $stringa;
 
}
Franz

	}
Il codice è corretto, anche se io l'avrei scritto - per paranoia - come
	if (is_null($campo)||(''==$campo)||('0000-00-00'==$campo))
	{
		$stringa = '';
	}
...rimane da verificare il codice che chiama quella funzione.
Leonardo
-- 
Enough, enough!  But, stranger, ere we part,
Glancing farewell to each nefarious bier,
This warning would I beg you take to heart:
There is an end to e'en the worst career!


Ecco la chiamata:
echo hideNullFields('Data fine bando', 
formatDate($row_bandi['data_fine']), 
'color:#419127;font-weight:bold;margin-bottom:10px;font-size:11px;display:block;')
Ti prego dimmi che ho scritto una cazzata, perchè davvero non capisco da 
dove esca questa data.
Ovviamente la query al db è:
$query_bandi = "SELECT * FROM bandi WHERE bandi.attivo = 1";
Grazie mille
Franz


Lo sapevoooooooo!!!
Era una cretinata.
  Il problema stava nella funzione formatDate all'interno della chiamata.
Non gli facevo controllare che fosse vuoto il campo prima di formattare 
la data.
Meno male va...
:)
Franz

Lo sapevoooooooo!!!
Avete assistito all'effetto "papera di gomma" (anche noto come "effetto
orsacchiotto") < 
http://c2.com/cgi/wiki?RubberDucking
 >
Leonardo quack quack



Lol io ho il pinguino gnu/linux (notare che cito anche gnu o stallman
mi uccide) in cartoncino, va bene uguale?


:( :(
quack!
:(
Franz

:(
Veramente la papera di gomma in questo caso ero stato io :-)
Leonardo
