Tri sans répétition en php/mysql

  • Auteur de la discussion marsien
  • Date de début

marsien

Grand Maître
Salut,

Je rencontre un petit souci (blocage !) pour coder une fonction php. Par ex, imaginons ma base de données, avec un champ "catégorie" me permettant de définir une catégorie d'appartenance aux données stockées dans cette base. Il y aura par ex : 3 données de la catégorie 1, 7 de la catégorie 2 et 12 de la catégorie 3.

Ce que je voudrais, c'est faire un menu déroulant listant mes 3 catégories, mais sans répéter 3 fois la catégorie 1, 7 fois la 2 et 12 dois la 3...

Or mes compétences en php étant limitées, je ne vois pas comment m'en sortir en partant de ce code :
[cpp]<?php
$retour = mysql_query('SELECT categorie FROM lien ORDER BY categorie');
while ($donnees = mysql_fetch_array($retour))
{
echo '<option value="' . $donnees['categorie'] . '">' . $donnees['categorie'] . '</option>';
}
?>[/cpp]

Merci de votre aide
 

boub popsyteam

Grand Maître
Dans ta requete SQL "GROUP BY" au lieux de "ORDER BY" ;)
 

marsien

Grand Maître
Merci Boub, c'est exactement ce que je voulais faire :D

Ce qui me rassure, c'est que je ne connaissais effectivement pas cette fonction ; ce qui me fait peur, c'est d'imaginer tout ce que je ne sais pas encore ;)
 

zeb

Modérateur
[strike]:lol: Dis marsien, tu l'as devant le nez sans le voir depuis combien de temps ?[/strike]

Sinon, tu souhaites peut-être quand même trier tes données. Tu as deux possiblités, dont celle de boubpopsyteam :
Code:
SELECT categorie FROM lien GROUP BY categorie ORDER BY categorie
SELECT DISTINCT categorie FROM lien ORDER BY categorie
Enjoy!

Edit: Ah bas grilled.
 

marsien

Grand Maître
Merci Zeb,

C'est ce que j'avais fait aussi, car effectivement je veux aussi trier mes données.

La 2e solution est également très intéressante, je la garde sous le coude ! :)

PS : j'ai un gros nez qui me masque la vue :o
:D
 

Johan_et_Pirlouit

Grand Maître

C'est la question essentielle : il ne faut pas se demander si on peu le faire, mais plutôt comment ;).. C'est vrai que cette exploration peut parfois paraître abyssale au premier abord, mais c'est comme explorer les limites des infinis : ça reste toujours très relatif..


Ah ? Je ne suis pas seul ? :whistle:

:merci:
 

mokacola

Nouveau membre
Salut à vous,

Vos réponses mon beaucoup aidé pour mon projet, mais je bloque à nouveau pourriez vous m'aider?
Je cherche tout comme marsien à trier sans répétition mais je voudrais en plus compter le nombres de répetitions.
Voici le code que j'ai modifier de maniere à compter les répetitions mais il ne compte que la repetition du premier champ.

Le code :
[cpp]
<?
$SQL = "SELECT code_postal FROM clients GROUP BY code_postal";
$result = mysql_query($SQL) or die("La requête $SQL a échoué : ".mysql_error());
$rep = mysql_num_rows($result);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
printf("%s : %s <br>", $row["code_postal"], $rep);
}
?>
[/cpp]
la table mysql :
clients
nom | prenom | code_postal
nom1 | prenom1 | cp1
nom2 | prenom2 | cp1
nom3 | prenom3 | cp2
nom3 | prenom3 | cp3

et ca me donne :

cp1 : 2
cp2 : 2
cp3 : 2


Merci par avance pour votre aide et bonne vacances si c'est votre cas :)
 

zeb

Modérateur
Vu comment tu as dû t'amuser à mettre des couleurs, tu vas être déçu :

Vous devez être connecté pour voir les images.
 

mushu06

Nouveau membre
bonjour,
je me suis mis depuis peu a php (enfin peut être que c un peu pousser de dire ca :s ) j'arrive a gérer un peu ma base de donnée difficilement et en faisant de longue recherche sur le net mais la je but un peu . snif

voila mon pb qui semble être grosso gentil modérateur le meme que celui de depart .

je suis en train de faire mon port folio et ca me soul de créer des pages à chaque fois alors pour faire mon cv j'ai créer une BD . je voudrais lors de l'appel de ma base de donnée trier les différents éléments de mon cv en fonction de leur type qui n'est identifier que dans la bd .

en gros si je créer une cat dans la bd je veux la voir apparaitre dans mon listing :

realisation portrait :
. rea 1
. rea 2
. rea 3

realisation carte postal
. rea 1
. rea 2
. rea 3

realisation bidule
. rea 1
. rea 2
. rea 3


... et ainsi de suite. j'ai donc essayer différente variable et fonction mais je pense que ca dois etre plus poussé que se que je pensais :(

j'ai essayer la fonction group by mais ce que ça me donne c uniquement les premières ligne de chaque cat.
realisation portrait :
. rea 1


realisation carte postal
. rea 1


realisation bidule
. rea 1


voila le bout de code que j'ai tenté (je sais que c un peu simpliste mais je pensais que cela fonctionnerais :
[cpp]
<?php

$requete="select * FROM CV GROUP BY categorie ";
$result=mysql_query($requete);
while ($row=mysql_fetch_array($result))
{
?>

<h3><?php echo $row['categorie']; ?> </h3>
<?php echo $row['date']; ?> <?php echo $row['titre']; ?>
<br/>


<?php
}echo mysql_error()
?>

[/cpp]

merci d'avance pour votre aide
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 135
Messages
6 718 107
Membres
1 586 397
Dernier membre
Chachabidou
Partager cette page
Haut