Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jackson Lemos Moreira

preenchimento da tag select mysql

Recommended Posts

Olá Pessoal, boa noite!

Preciso da ajuda de vocês, não consigo uma solução para o meu problema.

 

Preciso preencher uma tag select com nomes de autores vindo do mysql, sem repetir a informação e ordenado.

 

Até aí tudo bem! A princípio é simples, usando GROUP BY autores e ORDER BY autores.

 

O problema é quando tenho vários autores em um mesmo registro separados por ponto-e-vírgula.

Ex.: Silva, JO.; Oliveira, S.; Andrade, C.; Santos, M.

 

Em outros registros posso ter somente um autor, e podendo repetir.

Ex: Santos, M.

Ex: Moreira, J.

 

Então, faço uma lista separando cada registro por ponto-e-vírgula

while($autores = $lstAutores->fetch()) {

$lista_de_autores .= $autores[autor].';';

}

 

O resultado deve ficar assim:

Moreira, J.

Santos, M.

Silva, JO.; Oliveira, S.; Andrade, C.; Santos, M.

 

Depois uso o EXPLODE:

$autores_selecionados = explode(";", $lista_de_autores);

 

Com o desmembramento, já se perde a função GROUP BY e ORDER BY.

 

Nesse ponto eu tenho a seguinte listagem indesejada.

Moreira, J.

Silva, JO.

Oliveira, S.

Andrade, C.

Santos, M.

Santos, M.

 

 

É possível depois desse processo, reagrupar e reorganizar de alguma forma?

 

Desde já agradeço a atenção!

 

Abraço!

Jackson

Compartilhar este post


Link para o post
Compartilhar em outros sites
Olá pessoal!


Daniel, deixo aqui a solução que encontrei.

Obrigado!

Jackson


/* LISTA DE AUTORES */

$array = array(

'Alex; Erica; Jackson; Pedro; Jose; Maria',

'Carlos; Sergio; Vera; Ana',

'Francisco; Denise; Nogueira',

'Erica; Jackson; Diana',

'Erica',

'Felipe; Sonia',

'Cristina; Lima; Chaves; Maria Cristina;',

'Teixeira',

'Roberto'

);


//separei os autores com implode

$todos_os_autores = implode("; ", $array); //NESTE PONTO NÃO DÁ PRA USAR O array_unique E sort


// Agora utilizo o explode para criar novamente array, e poder utilizar o array_unique e sort

$todos_os_autores_separados = explode("; ", $todos_os_autores);


//array_unique retira os autores repetidos

$result = array_unique($todos_os_autores_separados);


//o sort ordena a lista (que o colega Daniel citou)

sort($result, SORT_REGULAR);


//listagem final

while (list($autor_id, $autor) = each($result)) { $autor }

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.