Détecter si une valeur n'est pas dans une liste (table) ?

Petit nouveau ! | 8 Messages

20 juil. 2011, 20:12

Bonjour à tous,

Je suis débutant en PHP et pas très doué semble-t-il...
Dans une liste (table), il y a un certain nombre de chiffres (15, 1, 84, 7, 28, 12, 83, 28, 33, 35, 37, 38, 38, 39, 39, 41, 42...)
J'aimerais savoir si le chiffre d'une variable ($variable=99 par exemple) ne se trouve pas dans la liste

J'ai réussi à créer une table avec une requête mysql mais maintenant je n'arrive pas à détecter si ce fameux chiffre se trouve dans ma table... :|
Voici ma requête pour la création de la table :
$sql = "SELECT numDep FROM dep_magasins";
$res=mysql_query($sql);

while ($row = mysql_fetch_array($res, MYSQL_NUM)) {
   printf("%s, ", $row[0]);
}
mysql_free_result($res);
$t=resultats($res);
echo $t;
J'ai lu par-ci par-là que GLOB pouvait m'aider mais je ne vois pas du tout comment l'utiliser...
A moins que vous n’ayez une autre idée ?
merci :)

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

20 juil. 2011, 22:20

Nope, glob ne t'aidera pas ici :)

Si tu n'as qu'une seule valeur à tester, le plus simple c'est d'ajouter une condition à ta requête sql pour qu'elle fasse le test directement :
"SELECT numDep FROM dep_magasins WHERE numDep = 99"
// ou encore
"SELECT COUNT(*) as nb FROM dep_magasins WHERE numDep = 99"
La première requête ne te retournera de résultat que s'il existe au moins un enregistrement dont la valeur est 99, la seconde va les compter et te retournera le nombre d'enregistrement trouvés (et si aucun, c'est que ta valeur n'existe pas :))

Si tu as plusieurs valeurs à tester, le mieux c'est de faire un tableau php à partir de tous tes numéros, puis de vérifier si la valeur que tu cherches est présente dans ce tableau avec la fonction inArray de php :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 8 Messages

21 juil. 2011, 00:10

Extra merci Ryle !

j'ai utilisé la première requête et ensuite je teste si la valeur est vide ou non.
merci :)