2010-10-30 10 views
1

À court d'idées ... Je dois regrouper toutes les entrées de la base de données. Il y a des champs ID, NAME, CLASS, CREATED. Sortie ressemblerait à ceci:regroupement par classe dans les groupes

<h2>3. Class</h2> 
<div class="cont"> 
3rd class entries.. 
</div> 

<h2>8. Class</h2> 
<div class="cont"> 
8th class entries.. 
</div> 

... and more 

Donc, s'il y a des entrées avec la classe 3, ils vont tous dans leur propre <div> avec leur propre cap - <h3>. La même chose avec 8, 9,10, 545,5357 etc. Les nombres dans <h3>...</h3> sont pris de la table, ainsi ils ne viennent pas d'un compteur comme $i++.

Comment y parvenir? J'espère que tu as eu mon idée.

Répondre

1

Quelque chose comme ça fera l'affaire ...

<?php  

    $rs = mysql_query('select id, name, class, created from mytable order by class ASC'); 
    while($row = mysql_fetch_assoc($rs)) { 
    $is_new_class = (!isset($last_class_num) || ($row['class'] != $last_class_num)); 
    if($is_new_class && isset($last_class_num)) { 
     echo "</div>"; 
    } 
    if($is_new_class) { 
     echo "<h2>{$row['class']}. Class</h2>"; 
     echo "<div class=\"cont\">"; 
    } 
    echo "NAME: {$row['name']}, <br/>"; 
    echo "CREATED: {$row['created']}"; 
    $last_class_num = $row['class']; 
    } 
    if(isset($last_class_num) { 
    echo "</div>"; 
    } 

[modifier: Au départ, je mal compris l'exemple donné par l'OP, donc je l'ai mis à jour la réponse à résoudre ce problème. De plus, j'ai corrigé certains types-os dans mon exemple original. Et nettoyé la syntaxe pour le rendre plus lisible. (désolé s'il y avait une confusion)]

+0

Merci! Travaillé parfaitement! – arturs