Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
fspjonny

PHP RESOLVIDO Looping em tabela MySQL

Recommended Posts

Postado (editado)

Olá!

Eu preciso montar uma tela onde seja exibido uma lista de publicações ordendas a critério do usuário de acordo com cada categoria a qual a publicação pertence, por exemplo: essas Categorias (LIVROS, PERIÓDICOS e CAPÍTULOS DE LIVROS), o usuário irá ordenar conforme sua necessidade, por exemplo: 1º PERIÓDICOS, 2º LIVROS, etc...

 

Eu preciso que a tabela que contenha as publicações sejam listadas abaixo de cada categoria, sendo ordenadas cada uma  pela maior data de cada publicação em sua categoria.

 

Então pensei em fazer um laço para ler a ordem das categorias e montar na tela, e abaixo de cada categoria virá as publicações de cada categoria ordenadas como falei acima ordenadas pela maior data.

 

O problema é que no meu laço, isso só está sendo feito uma única vez e não repete para as demais categorias, e que são exibidas na tela vazias, veja(CAPÍTULOS DE LIVROS e PERIÓDICOS) .

image.png.702f4db020d87c95d552e384818d5f

Quando eu mudo a ordenação das categorias o mesmo ocorre.

 

image.png.b2f903a56fc7079593772a463d602b

nesse caso as categorias PERIÓDICOS e CAPÍTULOS DE LIVROS, não recebem os dados de suas publicações.

O código do laço é esse:

<?php
/* vai receber o titulo de cada categoria para fazer a SELECT*/
global $utf_tit_categ;

$ordenacao = "SELECT titulo_categoria FROM tblcatpesquisa ORDER BY posicao";
$relaciona = mysqli_query($conecta, $ordenacao);

/* tem a variável $rowcount que recebe o total de registros da tabela de CATEGORIAS */	
for($a=0; $a <= $rowcount; $a++){
	
$ordem = mysqli_fetch_assoc($relaciona);
	$utf_tit_categ = utf8_encode($ordem['titulo_categoria']); /*a Global vai receber o nome da categoria formatado em UTF8*/
	
/* aqui é montado a exibição do título de cada uma das CATEGORIAS contadas por $rowcount */
	echo "<div class='container bg-primary'><span class='font-weight-light text-white'>{$utf_tit_categ}</span></div>";

/* faço um Query para relacionar todas as publicações referentes a CATEGORIA do primeiro loop de FOR*/
	$seleciona_itens = "SELECT datapublicacao, titulo, linkexterno FROM publicacoes WHERE categoria='$utf_tit_categ' ORDER BY datapublicacao DESC";
	$executa_busca = mysqli_query($conecta, $seleciona_itens);
	while($item = mysqli_fetch_assoc($executa_busca)){
	$utf_tit_pesq = utf8_encode($item['titulo']);	
	echo "<div id='fundo'><span class='mx-3'>{$item['datapublicacao']} - {$utf_tit_pesq} - {$item['linkexterno']}</span></div>";
	}
	mysqli_free_result($executa_busca); /*Libero a Query para uma nova consulta*/

/* o laço deve voltar daqui até que $rowcount seja atingido */

}
mysqli_free_result($relaciona);	
?>

Não sei o que estou fazendo errado, ou então o que eu deixei de fazer.

Alguém poderia me auxiliar para resolver esse problema?

Grato a todos!.

Editado por DiF

Compartilhar este post


Link para o post
Compartilhar em outros sites

@fspjonny Olá,  não pude analisar seu código linha a linha.  Alias não sei se entendi o problema.

 

Mas veja se este artigo pode esclarecer algumas coisas sobre ordenação de resultados quando "usa um filtro"

 

https://coderdif.wordpress.com/2014/11/29/filtro-de-dados-com-checkbox-usando-ajax-e-php/

 

A parte que considero mais importante é a do php que faz a montagem da SQL para buscar os dados de acordo com o filtro selecionado.  

Compartilhar este post


Link para o post
Compartilhar em outros sites
5 horas atrás, DiF disse:

@fspjonny Olá,  não pude analisar seu código linha a linha.  Alias não sei se entendi o problema.

 

Mas veja se este artigo pode esclarecer algumas coisas sobre ordenação de resultados quando "usa um filtro"

 

https://coderdif.wordpress.com/2014/11/29/filtro-de-dados-com-checkbox-usando-ajax-e-php/

 

A parte que considero mais importante é a do php que faz a montagem da SQL para buscar os dados de acordo com o filtro selecionado.  

Obrigado vou ler o artigo, mas o problema é bem simples para um programador mais experiente, vou tentar ilustrar abaixo melhor minha dúvida.

Considere em negrito as categorias e em itálico as publicações por categorias a qual elas pertencem.

 

Livros 

   Teoria sobre alguma coisa....

   O saber de alguma coisa...

   A história de alguma coisa...

Periódicos

   A palavra....

   Aharus series humanos....

   Photo Bouletin...

Capítulos de Livros

   The Challenging...

   Evidências de ....

   Cuidado global...

 

Essa lista acima é criada de acordo com os dados cadastrados em duas tabelas diferentes, onde uma tabela é o cadastro de categorias e a outra tabela é o cadastro de publicações, onde a categoria da publicação é buscada na tabela de categorias e inserida na publicação que levará o nome a qual categoria ela pertence, ficando assim:

 

Categoria   Titulo da Pesquisa            link_externo                                  data_da_publicacao

    Livros       Teoria sobre alguma coisa - http://pt.wikipedia.com.br/teorias - 22/08/1999.

 

Isso fica exibido fixo em uma página do site, mas a ordem de exibição pode ser alterada de acordo com o que o usuário julga ser mais importante para ele entre todas as categorias que são cadastradas, pois quem organiza essas categorias é o bibliotecário que cadastra as publicações.

 

Então o problema que eu tenho é esse:

  • Ler a ordem em que o bibliotecário ordena as categorias.
  • separar as publicações por categoria e ordenar pela maior data para a menor data
  • Exibir o filtro com esse arranjo de Categorias/publicação.

Notei que a Query não faz buscas se a Categoria contiver acentos, por exemplo: Periódicos, o 'ó' com acento não retorna nada, mesmo com uso de LIKE %, mas se eu se removo o acento, ai a query me retorna todos os periódicos cadastrados.

 

Como eu disse lá no topo, um programador mais experiente faz isso com os pés nas costas, eu tô retornando agora a programar e estou com essa dificuldade de iniciante e com problemas de resolver essa lógica.

 

Obrigado e desculpe o longo texto, mas tive que contar essa história.

 

Grato.!

adicionado 6 minutos depois

Esqueci de mencionar que o visitante do site apenas lê o que a página de publicações dispõe, mas a ordem é o bibliotecário quem as dispõe ao público, através de um CPanel de manutenção do site.

 

Grato.!

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver o problema!

Como eu disse um programador mais experiente saberia fazer com os pés nas costas!

 

Fiquei com a pulga atrás da orelha com os acentos e fui atrás de verificar como isso afeta a Query, para minha surpresa é mais comum do que se pensa os problemas relacionados ao charset e a collation, sendo que eu os coloquei todo padronizado como utf8 e general_ci.

 

Resolvi o "problema" matando a variável global que recebia a categoria formatada para utf8 e passei a jogar direto na Query  como está cadastrada na tabela tabela, e deu certo todo o resto.

image.thumb.png.4eec20a405f1c627b6488d173d83ed8d.png

 

se eu entro na manutenção e altero a ordem de "importância" das categorias o resultado acompanha todo o resto.

 

image.thumb.png.b0f08b6079027bcec53dc87ffb1cffc7.png

 

Agradeço muito ao DiF, pela consideração em ajudar e agradeço a todos pela atenção e me desculpem o vacilo, mas é que ando meio enferrujado e estou voltando a ativa aos poucos.

 

Abraço a todos!

adicionado 9 minutos depois

Gostaria de marcar o tópico como resolvido.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@fspjonny

Obrigado por compartilhar a solução! Iria ver com calma amanha mas  fico feliz que tenha conseguido achar o problema. A persistência e busca de conhecimento é o que separa os melhores programadores dos metidos "à".

Parabéns. :thumbsup:

Att, Moderador DiF

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×