Page 1 sur 1

Trier les valeurs uniques d'un tableau

Posté : 03 janv. 2009, 21:06
par beninsky
Bonjour tout le monde j'essaie de trier les valeurs uniques d'un tableau que je récupère à partir d'une base de données mais impossible d'afficher ce que je souhaite.

J'ai essayé avec la commande array_unique et une fonction while et cela n'est pas concluant.

Voici déjà ce que cela m'affiche lorsque je récupère le tableau dans ma base de données, peut-être que je m'y prend mal ?
<?php

$answer = mysql_query("SELECT genre FROM films");

while ($data = mysql_fetch_array($answer)) {

print_r ($data);

}
?>
ce qui affiche :
Array ( [0] => Horreur [genre] => Horreur )
Array ( [0] => Horreur [genre] => Horreur )
Array ( [0] => Horreur [genre] => Horreur )
Array ( [0] => Comédie [genre] => Comédie )
Array ( [0] => Action [genre] => Action )
Array ( [0] => Drame [genre] => Drame )
Array ( [0] => Horreur [genre] => Horreur )
Array ( [0] => Horreur [genre] => Horreur )
Array ( [0] => Fantastique [genre] => Fantastique )

etc...
Pourquoi les [0] => à chaque fois ?

Et comment faire pour récupérer tout ça dans un seul tableau ?

Merci

Posté : 03 janv. 2009, 22:12
par blof
Extrait du manuel pour mysql_fetch_array() :
Valeurs de retour

Retourne un tableau de chaînes qui correspond à la ligne récupérée ou FALSE s'il n'y a plus de lignes.
Le type de tableau retourné dépend de la définition du paramètre result_type .
En utilisant MYSQL_BOTH (défaut), vous récupérerez un tableau contenant des indices associatifs et numériques.
En utilisant MYSQL_ASSOC, vous ne récupérerez que les indices associatifs (comme le fonctionnement
de la fonction mysql_fetch_assoc()), en utilisant MYSQL_NUM, vous ne récupérerez que les indices numériques
(comme le fonctionnement de la fonction mysql_fetch_row()).
Donc MYSQL_BOTH étant par défaut, tu récupères "un tableau contenant des indices associatifs et numériques".
( donc $data['genre'] et $data[0] )

Si tu ne veux qu'un "tableau associatif" ajoute l'option MYSQL_ASSOC ou utilise la fonction mysql_fetch_assoc().

Sinon, pour ton problème, tu peux le traiter directement dans la requête :
$answer = mysql_query("SELECT DISTINCT genre FROM films");

Posté : 04 janv. 2009, 01:15
par beninsky
Merci beaucoup!!!! Cela marche parfaitement.