Aller au contenu

lister des données sql...


Sujets conseillés

Posté

Salut à tous et à toutes =)

Bon...j'ai beau chercher...j'y arrive pas alors je m'en remets à vos connaissances :whistling:

Je m'explique :

J'ai une bdd (extraordinaire) et à l'intérieur...une table! (de plus en plus extraordinaire), et cetet table contient des "articles" qui ont chacun attaché un "genre" (ou "catégorie" si vous voulez) afin de pouvoir les classer par groupe.

Mon but était de lister sur une page tous les titres des articles(leur lien en fait...mais c'est compliqué). Ca c'est bon ca marchait.

Mais maintenant, je voudrais les lister en les classant par "genre", donc en cherchant les différents genres des articles dans la bdd, et en affichant sous chaque genre les articles en rapport. (je ne les écris pas manuellement, car de nouveaux peuvent apparaitre, do'ù l'intérêt de chercher les différents genre dans la bdd, puis d'ensuite les lister avec les articles qui leurs sont associés).

Vous me suivez ? Bon =)

Pour l'instant j'étais parti sur ça :

mysql_connect('***','***','***');
mysql_select_db("***");
$sql_genre = mysql_query("SELECT genre FROM `pc-info_tutoriaux` ")or die(mysql_error());
mysql_close();

while($arr = mysql_fetch_array($sql_genre))
{
echo '<h5>'.$arr.'</h5>';
mysql_connect('***','***','***');
mysql_select_db("***");
$donnees_sql = mysql_query(" SELECT * FROM `pc-info_tutoriaux` WHERE genre='$arr' ") or die(mysql_error());
mysql_close();
while($donnees = mysql_fetch_array($donnees_sql))
{
echo '<div class="tutoriaux"><p><a href="index.php?p=tutos&id='.$value['id'].'">'.$value['titre'].'</a></p></div>';

}

Mais de toute évidence ça ne marche pas, non seulement parce-que tout ce que ca me renvoit c'est "array" mais aussi parce-qu'en faisant comme ca...je vais avoir plusieurs fois le même genre dans mon array...et donc afficher plusieurs fois les listes des articles y correpondant...

So...help me please :(

Merci d'avance ;)

Posté

sur ta premiere requete, tu veux la liste exhaistive des genres mais de manière unique? alors rajoutes "DISTINCT" qui va te supprimer les doublons quand tu cherches 1 seul champs en résultat.

SELECT DISTINCT genre FROM pc-info_tutoriaux

Posté
sur ta premiere requete, tu veux la liste exhaistive des genres mais de manière unique? alors rajoutes "DISTINCT" qui va te supprimer les doublons quand tu cherches 1 seul champs en résultat.

SELECT DISTINCT genre FROM `pc<span style='color:orange'>-info_tutoriaux'

tiens, y'a un bout de css qui traine dans ta requête....^^

J'essaie et je te dis ça =)

Essai effectué : bah, de toutes évidence les doublons ont en effet disparu...mais tout ce qui apparait c'est toujours "array array array(etc etc...)"

Posté

C'est drole le bug du css, j'ai essayé de l'enlever, mais j'ai pas réussi !

Pour la 2e requete, il faut préciser quel element du tableau tu veux selectionner :

SELECT * FROM `pc-info_tutoriaux` WHERE genre='$arr[0]'

Posté (modifié)
C'est drole le bug du css, j'ai essayé de l'enlever, mais j'ai pas réussi !

Pour la 2e requete, il faut préciser quel element du tableau tu veux selectionner :

SELECT * FROM `pc<span style='color:orange'><span style='color:orange'><span style='color:orange'><span style='color:orange'><span style='color:orange'><span style='color:orange'><span style='color:orange'>-info_tutoriaux` WHERE genre='$arr[0]'

Ok...mais comme le tableau ne récupere que "genre", je me suis dit qu'il ne contenait qu'une donnée...m'enfin bref j'ai buggué :P

Le bug du css vient du site en fait ;) C'est parce-que la balise s'arrette au ' car il y a un autre ' avant...du coup ce qui est apres est sectioné...'fin bref c'est plus une balise ^^

Je test et te dit si ca marche ;-)

edit : donc, apres m'être battu avec mysql qui voulait pas de '$arr[0]' dans la requete etc...voici le code qui fonctionne (ca peut servir a d'autres ) :

mysql_connect('***','***','***');
mysql_select_db("***");
$sql_genre = mysql_query("SELECT DISTINCT genre FROM `pc-info_tutoriaux` ")or die(mysql_error());
mysql_close();

while($arr = mysql_fetch_array($sql_genre))
{
echo '<h5>'.$arr[0].'</h5>';
mysql_connect('***','***','***');
mysql_select_db("***");
$varr = addslashes($arr[0]);
$donnees_sql = mysql_query(" SELECT * FROM `pc-info_tutoriaux` WHERE genre='$varr' ") or die(mysql_error());
mysql_close();
while($value = mysql_fetch_array($donnees_sql))
{
echo '<div class="tutoriaux"><p><a href="index.php?p=tutos&id='.$value['id'].'">'.$value['titre'].'</a></p></div>';

}

}

Voilà, merci bien à toi ;-)

Modifié par Troll
Posté (modifié)

Pour info tu peux obtenir le même résultat en une seule query en elevant le distinct et en faisant un "ORDER BY genre", puis en bouclant simplement sur le fetch_array (quand "genre" change dans l'array par rapport à l'array précédent, alors tu met le code qui sépare deux genres).

Modifié par lepidosteus
Posté
Pour info tu peux obtenir le même résultat en une seule query en elevant le distinct et en faisant un "ORDER BY genre", puis en bouclant simplement sur le fetch_array (quand "genre" change dans l'array par rapport à l'array précédent, alors tu met le code qui sépare deux genres).

Ok je note =) Mais maintenant je vais pas tout recommencer :P

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...