Assemble news by grouping results by user class

Asked

Viewed 215 times

3

I am developing a news system where a certain user class will be able to post one or more news for everyone to see it works perfect, more for a better view would like these messages to be grouped by the class of the user who posted. I will give an example of how it is below: here I make a normal select:

SELECT a.id_salapostagem, a.titulo, a.mensagem, a.data_lancamento,  
b.descricao
FROM salapostagem a
INNER JOIN usuariotipo b on a.usuariotipo_id = b.id_usuariotipo 
WHERE a.cursograde_id = 0;

here is the answer I have:

id_salapostagem  |        titulo            |                                   mensagem                                             |     descricao
      6          |   teste de mensagem 01   |   teste de mensagem 01 esta mensagem vai aparecer para todo mundo 2015-12-09 16:15:21  |     Webmaster
      7          |   teste de mensagem 02   |   teste de mensagem 02 esta mensagem tbm vai aparecer para todos  2015-12-09 16:19:13  |     Webmaster
      12         |   teste de mensagem 03   |   teste de mensagem 03 esta mensagem vai aparecer para todo mundo 2015-12-09 16:15:21  |     administrador

This is the tie I make for news to appear

<?php
mysql_data_seek($sqlNot, '0');
while($not = mysql_fetch_array($sqlNot) ){
    if($_SESSION["usuariotipoid"] != 4 || $_SESSION["usuariotipoid"] != 5 || $_SESSION["usuariotipoid"] != 9){
    $Botao = "Seção: ".$not["descricao"]."";

}
    ?>
        <div class="nome" style="margin-top: 10px">ADMINISTRAÇÃO<div style="float: right"><?php echo $Botao; ?></div></div>
        <div class="disciplina ocultar" style="margin-top: 10px"><?php echo $not["titulo"]; ?> <div style="float: right"><?php echo $not["data_lancamento"]; ?></div></div>

        <div class="content mostrar" style="min-height: auto;">
            <?php echo $not["mensagem"]; ?>


        </div>  
        <?php
}

The news appears in the sequence in which they were posted that way:

| ADMINISTRAÇÃO                                Seção: Webmaster   |
| teste de mensagem 01                       2015-12-09 16:15:21  |
| teste de mensagem 01 esta mensagem vai aparecer para todo mundo |

| ADMINISTRAÇÃO                                Seção: Webmaster   |
| teste de mensagem 02                       2015-12-09 16:19:13  |
| teste de mensagem 02 esta mensagem vai aparecer para todo mundo |

| ADMINISTRAÇÃO                              Seção: administrador |
| teste de mensagem 03                       2015-12-09 16:15:21  |
| teste de mensagem 03 esta mensagem vai aparecer para todo mundo |

And I’d like you to show up like this:

| ADMINISTRAÇÃO                                Seção: Webmaster   |
| teste de mensagem 01                       2015-12-09 16:15:21  |
| teste de mensagem 01 esta mensagem vai aparecer para todo mundo |
|                                                                 |
| teste de mensagem 02                       2015-12-09 16:19:13  |
| teste de mensagem 02 esta mensagem vai aparecer para todo mundo |



| ADMINISTRAÇÃO                              Seção: administrador |
| teste de mensagem 03                       2015-12-09 16:15:21  |
| teste de mensagem 03 esta mensagem vai aparecer para todo mundo |

Now, I appreciate any help, because it’s hard to fix.

1 answer

2


One of the things is to add the field you want to sort in ORDER BY:

SELECT   a.id_salapostagem, a.titulo, a.mensagem, a.data_lancamento, b.descricao
FROM     salapostagem a
INNER    JOIN usuariotipo b on a.usuariotipo_id = b.id_usuariotipo 
WHERE    a.cursograde_id = 0
ORDER BY descricao

The other is to create a situation to display the title only once. For example something like this:

$titulo= '';

...

while($not = mysql_fetch_array($sqlNot) ){
   if( $titulo!= $not['descricao'] ) {
      echo 'ADMINISTRACAO            Secao: ' . $not['descricao'];
      $titulo=$not['descricao'];
   }

This is just an example, you would have to adapt to the correct field.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.