Jackson Lemos Moreira 1 Denunciar post Postado Julho 11, 2015 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
DanielAndrade 28 Denunciar post Postado Julho 11, 2015 Sim... vc pode jogar tudo num array e reordenar com sorting... http://php.net/manual/pt_BR/array.sorting.php No caso vc teria que por todos os registros em posições de array e depois ordenar da melhor maneira Compartilhar este post Link para o post Compartilhar em outros sites
Jackson Lemos Moreira 1 Denunciar post Postado Julho 12, 2015 Obrigado Daniel!! Acho q antes de reordenar, preciso retirar as repetições. Ainda estou na dúvida de como fazer, vou seguir sua dica, e ver mais na documentação. Abs Compartilhar este post Link para o post Compartilhar em outros sites
Jackson Lemos Moreira 1 Denunciar post Postado Julho 13, 2015 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