Comment faire un tri sur la valeur ZERO

Résolu/Fermé
chicoquarte - 17 juil. 2011 à 19:44
 chicoquarte - 20 juil. 2011 à 07:50
Bonjour,
j'ai 3 valeurs dans une table sql (importée d'access) : 0 , -1 et NULL

je me sert d'un champ select pour trier leur affichage :
echo'<td><select id="filtre3" name="filtre3" >';
$array = Array( '' => '?', '-1' => 'oui', '0' => 'non' );
while( list( $value, $label ) = each( $array ) ){
$selected = (isset($_POST['filtre3']) and $_POST['filtre3'] == $value)?'selected="selected"':'';
echo '<option value="'.$value.'" '.$selected.'>'.$label.'</option>';
}
echo '</select></td>';

La valeur choisie devient une variable de filtre avec :
$filtre3=$_POST['filtre3'];

...et part compéter la requête SQL avec :
if ($filtre3) {$query .= ' AND tab_achats.prev_achat ='.$filtre3.' ' ;}


Le filtre marche super sur la valeur "-1"...mais me donne toutes les enregistrements lorsque je choisis '' (vide) ou 0 (zéro)
je m'arrache les tifs depuis 1h avec des double égal, des crochets, etc...sans succès !
Comment faire un tri sur la valeur ZERO ?????????
Ma gratitude infinie au premier qui me propose une solution

A voir également:

2 réponses

Un copain me propose d'ajouter une condition formaté comme ceci :
if($mavar == 0 ){echo "val 0 "}elseif($mavar == ''){echo 'NULL';}else{echo 'test -1 ok '; } nclure


Si je place sa $condition dans :
if (isset($_POST['filtre3'])) {$filtre3=$_POST['filtre3'];} $condition; }}

que je choisisse '' ou 0 : la réponse est val0

alors que si je place $condition dans la requête :
if ($filtre3) {$query .= ' AND tab_achats.prev_achat ='.$filtre3.' ' ; $condition}}

seul 'test-1' s'affiche...les autres echo passent à la trappe ???

le pire c'est que dans tous les cas, quand je choisis 0 ou '', la requête me rend tous les enregistrements : les 0 ET les -1 !!! c'est bien que le 0 n'est pas pris en compte ?
Je viens de remplacer tous les null de ma table par des 0...sans plus de succès :(
Bref, je patauge toujours !
0
décidément, je fais vivre ce fil :p
j'ai trouvé en testant sur les guillements
il suffisait de mettre " ' 0 ' " dans
$array = Array( ''=> 'tous','-1' => 'oui', "'0'" => 'non' );
0