Siga-nos em...
Follow us on Twitter Follow us on Facebook Watch us on YouTube
Registro

Alpha Servers
Resultados 1 a 7 de 7
  1. #1



    Avatar de Renato
    Data de Ingresso
    Nov 2010
    Localização
    Imperyus
    Posts
    1.099
    Agradecido
    2519
    Agradeceu
    492
    Peso da Avaliação
    30

    Padrão Agenda telefonica separada por letra

    Estou fazendo uma agenda telefônica e a exibição separa os nomes por letra (parecido com a agenda telefônica do android - BEM PARECIDO).
    Quanto à parte visual, está tranquilo. Segue meu código HTML para entenderem:

    Código HTML:
    <ul>
    	<li id=""><a name="a" class="title">A</a>
    		<ul>
    			<li><a href="#">Alex</a></li>
    		</ul>
    	</li>
    	<li id="b"><a name="b" class="title">B</a>
    		<ul>
    			<li><a href="#">Bruno</a></li>
    		</ul>
    	</li>
    	<li id="c"><a name="c" class="title">c</a>
    		<ul>
    			<li><a href="#">Carlos</a></li>
    		</ul>
    	</li>
    	<li id="d"><a name="d" class="title">d</a>
    		<ul>
    			<li><a href="#">Denis</a></li>
    		</ul>
    	</li>
    	<li id="e"><a name="e" class="title">E</a>
    		<ul>
    			<li><a href="#">Eduardo</a></li>
    		</ul>
    	</li>
    	<li id="f"><a name="f" class="title">f</a>
    		<ul>
    			<li><a href="#">Fernando</a></li>
    		</ul>
    	</li>
    	<li id="g"><a name="g" class="title">g</a>
    		<ul>
    			<li><a href="#">Gustavo</a></li>
    		</ul>
    	</li>
    	<li id="h"><a name="h" class="title">h</a>
    		<ul>
    			<li><a href="#">Heloisa</a></li>
    		</ul>
    	</li>
    	<li id="i"><a name="i" class="title">i</a>
    		<ul>
    			<li><a href="#">Igor</a></li>
    		</ul>
    	</li>
    	<li id="j"><a name="j" class="title">j</a>
    		<ul>
    			<li><a href="#">Joel</a></li>
    		</ul>
    	</li>
    	<li id="k"><a name="k" class="title">k</a>
    		<ul>
    			<li><a href="#">Karine</a></li>
    		</ul>
    	</li>
    	<li id="l"><a name="l" class="title">l</a>
    		<ul>
    			<li><a href="#">Leandro</a></li>
    		</ul>
    	</li>
    	<li id="m"><a name="m" class="title">m</a>
    		<ul>
    			<li><a href="#">Marcos</a></li>
    		</ul>
    	</li>
    	<li id="n"><a name="n" class="title">n</a>
    		<ul>
    			<li><a href="#">Nivaldo</a></li>
    		</ul>
    	</li>
    	<li id="o"><a name="o" class="title">o</a>
    		<ul>
    			<li><a href="#">Otavio</a></li>
    		</ul>
    	</li>
    	<li id="p"><a name="p" class="title">p</a>
    		<ul>
    			<li><a href="#">Pedro</a></li>
    		</ul>
    	</li>
    	<li id="q"><a name="q" class="title">q</a>
    		<ul>
    			<li><a href="#">Quezia</a></li>
    		</ul>
    	</li>
    	<li id="r"><a name="r" class="title">r</a>
    		<ul>
    			<li><a href="#">Renato</a></li>
    		</ul>
    	</li>
    	<li id="s"><a name="s" class="title">s</a>
    		<ul>
    			<li><a href="#">Sandra</a></li>
    		</ul>
    	</li>
    	<li id="t"><a name="t" class="title">t</a>
    		<ul>
    			<li><a href="#">Thiago</a></li>
    		</ul>
    	</li>
    	<li id="u"><a name="u" class="title">u</a>
    		<ul>
    			<li><a href="#">Ulisses</a></li>
    		</ul>
    	</li>
    	<li id="v"><a name="v" class="title">v</a>
    		<ul>
    			<li><a href="#">Victor</a></li>
    		</ul>
    	</li>
    	<li id="w"><a name="w" class="title">w</a>
    		<ul>
    			<li><a href="#">Wagner</a></li>
    		</ul>
    	</li>
    	<li id="x"><a name="x" class="title">x</a>
    		<ul>
    			<li><a href="#">Xavier</a></li>
    		</ul>
    	</li>
    	<li id="y"><a name="y" class="title">y</a>
    		<ul>
    			<li><a href="#">Yago</a></li>
    		</ul>
    	</li>
    	<li id="z"><a name="z" class="title">z</a>
    		<ul>
    			<li><a href="#">Zoroastro</a></li>
    		</ul>
    	</li>
    </ul>
    Como podem ver, na exibição será separado.
    Após dar 1 select na tabela phonebook para pegar todos os "contatos" salvos, isso me retorna um array. Até ai tudo bem.
    Agora, como manipular os dados desse array pra separar variáveis contendo os dados por letra, pra eu poder estampar cada variável no seu respectivo lugar no html?

    No caso, vai ficar assim o HTML:

    Código HTML:
    <ul>
    	<li id=""><a name="a" class="title">A</a>
    		<ul>
    			{@A_LIST}
    		</ul>
    	</li>
    	<li id="b"><a name="b" class="title">B</a>
    		<ul>
    			{@B_LIST}
    		</ul>
    	</li>
    	<li id="c"><a name="c" class="title">c</a>
    		<ul>
    			{@C_LIST}
    		</ul>
    	</li>
    	<li id="d"><a name="d" class="title">d</a>
    		<ul>
    			{@D_LIST}
    		</ul>
    	</li>
    	<li id="e"><a name="e" class="title">E</a>
    		<ul>
    			{@E_LIST}
    		</ul>
    	</li>
    	<li id="f"><a name="f" class="title">f</a>
    		<ul>
    			{@F_LIST}
    		</ul>
    	</li>
    	<li id="g"><a name="g" class="title">g</a>
    		<ul>
    			{@G_LIST}
    		</ul>
    	</li>
    	<li id="h"><a name="h" class="title">h</a>
    		<ul>
    			{@H_LIST}
    		</ul>
    	</li>
    	<li id="i"><a name="i" class="title">i</a>
    		<ul>
    			{@I_LIST}
    		</ul>
    	</li>
    	<li id="j"><a name="j" class="title">j</a>
    		<ul>
    			{@J_LIST}
    		</ul>
    	</li>
    	<li id="k"><a name="k" class="title">k</a>
    		<ul>
    			{@K_LIST}
    		</ul>
    	</li>
    	<li id="l"><a name="l" class="title">l</a>
    		<ul>
    			{@L_LIST}
    		</ul>
    	</li>
    	<li id="m"><a name="m" class="title">m</a>
    		<ul>
    			{@M_LIST}
    		</ul>
    	</li>
    	<li id="n"><a name="n" class="title">n</a>
    		<ul>
    			{@N_LIST}
    		</ul>
    	</li>
    	<li id="o"><a name="o" class="title">o</a>
    		<ul>
    			{@O_LIST}
    		</ul>
    	</li>
    	<li id="p"><a name="p" class="title">p</a>
    		<ul>
    			{@P_LIST}
    		</ul>
    	</li>
    	<li id="q"><a name="q" class="title">q</a>
    		<ul>
    			{@Q_LIST}
    		</ul>
    	</li>
    	<li id="r"><a name="r" class="title">r</a>
    		<ul>
    			{@R_LIST}
    		</ul>
    	</li>
    	<li id="s"><a name="s" class="title">s</a>
    		<ul>
    			{@S_LIST}
    		</ul>
    	</li>
    	<li id="t"><a name="t" class="title">t</a>
    		<ul>
    			{@T_LIST}
    		</ul>
    	</li>
    	<li id="u"><a name="u" class="title">u</a>
    		<ul>
    			{@U_LIST}
    		</ul>
    	</li>
    	<li id="v"><a name="v" class="title">v</a>
    		<ul>
    			{@V_LIST}
    		</ul>
    	</li>
    	<li id="w"><a name="w" class="title">w</a>
    		<ul>
    			{@W_LIST}
    		</ul>
    	</li>
    	<li id="x"><a name="x" class="title">x</a>
    		<ul>
    			{@X_LIST}
    		</ul>
    	</li>
    	<li id="y"><a name="y" class="title">y</a>
    		<ul>
    			{@Y_LIST}
    		</ul>
    	</li>
    	<li id="z"><a name="z" class="title">z</a>
    		<ul>
    			{@Z_LIST}
    		</ul>
    	</li>
    </ul>
    Eu poderia fazer diversos "selects", um pra cada letra, usando a string "LIKE" na query e depois fazer um laço pra pegar os dados do fetch, mas isso deixaria o código enorme e lento (cheio de consultas), e não quero isso. Preciso fazer isso com apenas uma consulta ao sql e com esses dados, manipular e separar os valores.

    Estive pensando em usar str_split pra separar no array, mas estou meio perdido.
    Alguém tem alguma ideia?
    Última edição por Hunter; 22-11-2013 às 10:08 PM.

  2. #2



    Avatar de Renato
    Data de Ingresso
    Nov 2010
    Localização
    Imperyus
    Posts
    1.099
    Agradecido
    2519
    Agradeceu
    492
    Peso da Avaliação
    30

    Padrão

    Podem fechar o tópico, já consegui resolver.

    Ficou assim:

    Código PHP:
                            $cache = new rv_cache();
                            
    $phonebook $cache->read('phonebook-list');
                            if(!
    $phonebook) {
                                
    $query $rv_sql->my_query('SELECT DISTINCT LEFT(name, 1) AS start FROM phonebook ORDER BY name');
                                if(!
    $query) {
                                    exit(
    'Erro ao realizar consulta no banco de dados!');
                                }
                                else {
                                    
    $return null;
                                    while(
    $letter $rv_sql->my_fetch_object($query)) {
                                      
    $letters[] = $letter->start;
                                    }
                                    foreach(
    $letters AS $letter) {
                                    
    $return .= '<li id="'.strtolower($letter).'"><a name="'.strtolower($letter).'" class="title">'.strtoupper($letter).'</a>';                        
                                        
    $name_list $rv_sql->my_query ('SELECT name FROM phonebook WHERE name LIKE "'.$letter.'%" ORDER BY name');
                                        while (
    $n $rv_sql->my_fetch_object($name_list)) {
                                         
                                        
    $return .= '<ul>
                                                        <li><a href="#">'
    .$n->name.'</a></li>
                                                    </ul>'
    ;
                                        }
                                        
    $return .= '</li>';    
                                    }
                                }
                                
    $cache->save('phonebook-list'$return'1440 minutes');
                                
    $rv_tpl->set('PHONEBOOK_LIST',$return);
                            }
                            else {
                                
    $rv_tpl->set('PHONEBOOK_LIST',$phonebook);
                            }        
                            
    $rv_tpl->Open('Phonebook'); 
    Código HTML:
    <ul>
    {@PHONEBOOK_LIST}
    </ul>
    Encontrei o jeito de fazer em: [Somente usuários registrados podem vem os links. ]


    Mensagem de moderação:
    Tópico Fechado a pedido do autor.
    Caso queira reabrir por favor me envie uma MP solicitando.
    Última edição por Hunter; 22-11-2013 às 10:09 PM.

  3. O Seguinte Usuário Agradeceu Renato Por este Post Útil:


  4. #3



    Avatar de Ayrton Ricardo
    Data de Ingresso
    May 2012
    Localização
    Joao Pessoa - PB
    Idade
    28
    Posts
    1.379
    Agradecido
    262
    Agradeceu
    171
    Peso da Avaliação
    26

    Padrão

    Primeiramente desculpe postar em um tópico já fechado, mas infelizmente só vi agora, e já vou dar-lhe algumas dicas, apenas para disseminar conhecimento

    Este código está "feio demais", motivo: "Contém o html junto ao php", hoje em dia isto é considerado "feio", ou melhor, incorreto, pois deve haver uma separação das coisas(front and back), porque se prestar atenção, você está usando um foreach e dentro dele um WHILE, duas estruturas pesadas se forem encadeadas...

    ->Uma dica para separar as coisas que daria era, o php gerar um JSON que iria para o front, que seria tratado pelo JS, populando assim toda a lista.

    Não estou criticando, apenas tentando auxiliar e disseminando conhecimento. Como percebi que está usando classes, então acredito eu que separar as "funções que cada um fará" é o melhor em se tratando de Orientação a Objeto.



    Dica de leitura: PHP com JSon, e JavaScript com JSon.
    Leiam, todo desenvolvedor PHP precisa conhecer: Hidden Content .




  5. O Seguinte Usuário Agradeceu Ayrton Ricardo Por este Post Útil:


  6. #4



    Avatar de Renato
    Data de Ingresso
    Nov 2010
    Localização
    Imperyus
    Posts
    1.099
    Agradecido
    2519
    Agradeceu
    492
    Peso da Avaliação
    30

    Padrão

    Então Ayrton, o problema é que eu utilizo um sistema de templates (similar ao do daldegam e ao do erick-master), que "estampa" os valores no html.
    Assim sendo, ao finalizar o script, eu preciso ter todo o código HTML "salvo" em uma variável para poder setá-la na TAG do sistema de templates, o que inviabiliza o uso de JSON.

    Alguma sugestão?

  7. O Seguinte Usuário Agradeceu Renato Por este Post Útil:


  8. #5



    Avatar de Ayrton Ricardo
    Data de Ingresso
    May 2012
    Localização
    Joao Pessoa - PB
    Idade
    28
    Posts
    1.379
    Agradecido
    262
    Agradeceu
    171
    Peso da Avaliação
    26

    Padrão

    Citação Postado originalmente por Renatiinn Ver Post
    Então Ayrton, o problema é que eu utilizo um sistema de templates (similar ao do daldegam e ao do erick-master), que "estampa" os valores no html.
    Assim sendo, ao finalizar o script, eu preciso ter todo o código HTML "salvo" em uma variável para poder setá-la na TAG do sistema de templates, o que inviabiliza o uso de JSON.

    Alguma sugestão?
    Quanto a isto é simples(também uso sistema semelhante). Você com js pode usar uma ID pro conteúdo. ex: <content id="conteudo"></content> e com o js você substitui o texto anterior pelos dados vindo do json...
    ex:
    sua variável php = $conteudoLista = '<content id="conteudo">{@CONTATOS}</content>';
    (iria imprimir a $conteudoLista)....
    js:

    $("#conteudo").text("");
    $("#conteudo").populate();

    Ao invés de usar o <ul><li> no php(que é a parte de back end), você faria no JS(que é a parte do front-end)... Deixando ainda no template a marcação de onde vai ficar cada coisa.

    Outra dica, porém a mesma ^^' É deixar salvo um arquivo json. Porque? Porque ele pode funcionar como um sistema de "cache" pra não ficar indo no banco toda vez que der um f5/atualizada, e o js leria o arquivo e faria uns foreachzinhos que criariam sua lista ^^'(esta dica pensei direito e não sei se é viavel pro que quer, mas já auxilia em outros pontos)...

    (não posso esclarecer com código agora, pois estou no trabalho '-' ), mas assim que der faço um rapidinho pra entender minha ideia .-.)
    (parabéns pela iniciativa de discutir, o// é sempre bom melhorarmos, todos).
    Leiam, todo desenvolvedor PHP precisa conhecer: Hidden Content .




  9. #6



    Avatar de Renato
    Data de Ingresso
    Nov 2010
    Localização
    Imperyus
    Posts
    1.099
    Agradecido
    2519
    Agradeceu
    492
    Peso da Avaliação
    30

    Padrão

    Já entendi o que quis dizer. Sinceramente é simples e genial e eu não havia pensado nisto.
    Quanto ao salvamento do json, é desnecessário pois eu tenho uma classe de armazenamento de cache já.
    Vou dar uma optimizada no código e posto aqui os resultados, vamos ver se conseguimos disponibilizar esse script aqui pra imp, pois creio que diversas pessoas já tiveram a necessidade de fazer algo semelhante e tiveram problemas...

  10. O Seguinte Usuário Agradeceu Renato Por este Post Útil:


  11. #7



    Avatar de Ayrton Ricardo
    Data de Ingresso
    May 2012
    Localização
    Joao Pessoa - PB
    Idade
    28
    Posts
    1.379
    Agradecido
    262
    Agradeceu
    171
    Peso da Avaliação
    26

    Padrão

    Citação Postado originalmente por Renatiinn Ver Post
    Já entendi o que quis dizer. Sinceramente é simples e genial e eu não havia pensado nisto.
    Quanto ao salvamento do json, é desnecessário pois eu tenho uma classe de armazenamento de cache já.
    Vou dar uma optimizada no código e posto aqui os resultados, vamos ver se conseguimos disponibilizar esse script aqui pra imp, pois creio que diversas pessoas já tiveram a necessidade de fazer algo semelhante e tiveram problemas...
    É este o espírito! O conhecimento é algo muito importante que não deve ser aprisionado.
    Leiam, todo desenvolvedor PHP precisa conhecer: Hidden Content .




  12. O Seguinte Usuário Agradeceu Ayrton Ricardo Por este Post Útil:


 

 

Informações de Tópico

Usuários Navegando neste Tópico

Há 1 usuários navegando neste tópico. (0 registrados e 1 visitantes)

Tópicos Similares

  1. |Dúvida| Por global com letra grossa
    Por fuzy12 no fórum Dúvidas
    Respostas: 1
    Último Post: 30-09-2015, 01:23 AM
  2. |Lançamento| Nova Musica - Cauê Moura | Desce a Letra
    Por -HasDieD- no fórum Flood Livre
    Respostas: 0
    Último Post: 10-12-2012, 11:38 AM
  3. |Reclamação| Cash Shop com Letra esquisita Cliente 1.03k JPN
    Por hamiltontsz no fórum Dúvidas
    Respostas: 8
    Último Post: 08-07-2010, 05:11 AM
  4. |Tutorial| Letra 3D para iniciantes.
    Por KanonN no fórum Iniciantes
    Respostas: 1
    Último Post: 10-02-2010, 11:39 PM

Marcadores

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •