test variable NULL

marih
Invité n'ayant pas de compte PHPfrance

29 déc. 2012, 20:06

Bonjour,
je souhaite tester une variable vide et je n'y arrive pas.
J'écris:
if (empty($Noms))
	 	echo("vide"); 
else
		echo("pas vide"); 
// suite
Quand $Noms contient un mot çà marche, quand il est vide il le voit plein !
La variable est définie par "Noms varchar(250)" dans un create table.

Remarque si dans phpMySQL je coche la case "NULL" du descriptif de cette zone dans la table ça marche.
par ailleurs la table est chargée par ftp depuis un fichier .txt. Plusieurs essais avec des colonnes sans rien ou avec \n même punition.

A votre avis que faut-il faire ?
merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

29 déc. 2012, 20:34

Salut,

As tu affiché le contenue de cette variable ?
Est ce que cela ne correspond pas a une des valeurs indiquées dans la doc ? http://php.net/empty


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 130 Messages

29 déc. 2012, 21:15

Affiche le contenu de ta variable pour voir ce qu'elle contient.

ViPHP
ViPHP | 928 Messages

30 déc. 2012, 02:49

Ta variable n'est probablement pas vide, fait un var_dump($Noms) et dit nous ce que ça affiche.

marih
Invité n'ayant pas de compte PHPfrance

30 déc. 2012, 11:08

Bonjour à tous,
oui j'ai testé le contenu qui "apparait vide" mais qu'il trouve "non vide".

L'utilisation de var_dump($Noms); donne: string(1) " " et pourtant la zone est tjrs "non vide".

Le résultat est bien surprenant car en fait il n'y a rien dans cette zone et pourtant le test "empty" aussi bien que la comparaison par
if ($Noms == "") donne le même résultat.

Ce qui m'intrigue aussi c'est que quand je coche la case NULL de ce mot directement dans phpMySQL alors le système semble "forcer" la zone à NULL , et alors ça marche...!

Merci de votre aide.

marih
Invité n'ayant pas de compte PHPfrance

30 déc. 2012, 11:33

Complément d'info: si je force $Noms = ""; avant le test ça fonctionne bien.
Par conséquent la zone NULL dans le fichier n'est pas considérée comme NULL !
Incompréhensible !
Par ailleurs j'ai plusieurs zones dans ce cas .
Cela doit venir du chargement de la table. Mais là aussi j'ai essayé en chargeant avec des \n pour les zones vides ou rien, c'est pareil dans les 2 cas.

ViPHP
xTG
ViPHP | 7331 Messages

30 déc. 2012, 11:48

Tu as ta réponse avec le var_dump : String(1) donc un caractère.
Et entre les guillemets on voit bien un espace.
Cette variable n'est pas vide du tout ! ;)

Comment indiques-tu un NULL dans ton fichier txt ?

marih
Invité n'ayant pas de compte PHPfrance

30 déc. 2012, 12:47

dans le fichier txt, j'ai essayé soit en ne mettant rien dans la colonne, soit en mettant " \n".
Dans les 2 cas il n'y a rien de visible qd j'affiche la table sous phpAdmin et dans les deux cas il trouve quelque chose mais quoi ? puisque var_dump fournit un "blanc" mais que même un if($Noms == " " ) ne trouve pas !

marih
Invité n'ayant pas de compte PHPfrance

30 déc. 2012, 14:01

j'ai codé BINARY dans le create pour la colonne concernée et çà marche maintenant !
le test NULL se fait maintenant.
merci de votre aide
SUPER !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

30 déc. 2012, 15:52

Il faut voir la structure de ton fichier et comment tu fait l'insertion, c'est. Ce moment qu'il faut traiter les données pour insérer un null si la chaîne est nulle.


@+
Il en faut peu pour être heureux ......