Créer des groupes de données selon variable commune

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Créer des groupes de données selon variable commune

Re: Créer des groupes de données selon variable commune

par alexp777 » 23 juil. 2011, 15:27

salut merci beaucoup pour ton aide et ton temps.

J'ai fait des essais avec ton code, mais sauf erreur de ma part ça ne liste pas tous les différents titres sous l'industrie commune, mais ça les listes les uns en dessous des autres comme ceci :

INDUSTRIE 1
Titre 1, source1

INDUSTRIE 2
Titre2, source2

INDUSTRIE1
Titre3, source3

alors que ce que je voudrais c'est :

INDUSTRIE 1
Titre 1, source1
Titre3, source3

INDUSTRIE 2
Titre2, source2

est ce que je me serais trompé à un endroit ?

Voici mon code :

Code : Tout sélectionner

<ul id="liste"> <?php require "config-local.php"; mysql_connect(DB_HOST,DB_LOGIN,DB_PASS); mysql_select_db(DB_BDD); $sql = 'SELECT * FROM news GROUP BY date DESC, industrie ASC'; $req = mysql_query($sql); $indus = ' '; while ($data = mysql_fetch_assoc($req)) { if ($indus !== $data['industrie']) { echo '<h2>Industrie : '.$data['industrie'].'</h2>'; $indus = $data['industrie']; } echo "<h3> <img src='images2/pdf.gif' align='absmiddle'> <a href='images/press/{$data["autre"]}.pdf' target='_blank'>{$data["autre"]}</a></h3><br>"; echo "<li>{$data["Titre"]}<br>{$data["source"]}</li>"; } mysql_free_result($req); ?> </ul>
Merci encore pour ton aide.

a+
Alex

Re: Créer des groupes de données selon variable commune

par moogli » 22 juil. 2011, 15:15

salut,

avec un order by tu peu déjà les trier par industrie, sachant que tu peux ordonner sur plusieurs champs a doit pouvoir aller (order by champdate DESC, industrie ASC par exemple).

J'en profite pour te dire que le mot date est un mot réservé SQL et que le fait d'avoir un champ qui se nomme ainsi peux poser problème, il serait mieux de la nommer autrement (par exemple datenews, c'est plus parlant et y a plus de soucis :) )


après il va falloir organiser une "césure" dans le code php pour avoir un affichage conforme a ce que tu souhaite.

par exemple
<?php
$sql = 'select les champs que tu veux from table ordre by champdate DESC, industrie ASC';
$req = mysql_query($sql);
$indus = '';
while ($data = mysql_fetch_assoc($req)) {
if ($indus !== $data['industrie']) {
echo '<h2>Industrie : '.$data['industrie'].'</h2>';
$indus = $data['industrie'];
}
echo 'affiachge des infos que tu veux';
}
mysql_free_result($req);
?>
avec ça tu ne va avoir l'industrie de marquée qu'une seule fois avec en dessous la liste.

a tester pour la requête SQL, car la ça trie par date et dans les dates par industrie, tu peux virer la condition date si pas utile ;)

@+

Créer des groupes de données selon variable commune

par alexp777 » 22 juil. 2011, 09:10

Salut à tous,

petit débutant, voici ma situation :

Table news avec 6 champs : id, titre, contenu, source, date, industrie

Je souhaite faire apparaître les données en les regroupant par industrie:

INDUSTRIE1
Titre1, source1
Titre2, source2
....

INDUSTRIE2
Titre3, source3
Titre4, source4
....

est ce qu'il faut passer par la fonction GROUP BY ? j'ai fait des essais mais infructeux.

Merci d'avance pour votre aide.