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:  
Ygor Sansone

PHP Como melhorar esses sistema de pesquisa por ul

Recommended Posts

Eu estou aprendendo PHP, e eu queria fazer um sistema de pesquisa por categoria usando ul, eu consegui fazer um sistema de pesquisa usando select que eu aprendi em um site porém eu não achei nenhum site ou video que explicasse como fazer um sistema usando ul.

Eu gostaria de fazer pesquisa por categoria em que eu possa usar o meu sistema de vitrine.

O meu código está por select porém eu queria mudar para ul. Vou explicar como eu fiz o meu banco de dados, o meu banco tem as tabelas categoria, subcategoria e cursos, uma depende da outra mas a tabela cursos que tem todos os meu produtos (nome, img, url...) 

Esta é a minha vitrine

 8LC6Hbq.png

 

 

Esta é como o meu sistema por select mostra os meu produtos 

 

 

L128Xb7.png

 

 

Este é o meu banco de dados 

 

 

wv8ZrkS.png

 

 

Eu já tentei mudar varias vezes esse código porém nunca entra neste modelo.

 

O codigo que eu quero mudar é esse:

   <form action="" method="POST">        
            <label>Categoria:</label>
            <select name="id_categoria" id="id_categoria">
                <option value="">Escolha a Categoria</option>
                <?php
                    $result_cat = "SELECT * FROM categoria ORDER BY nome";
                    $resultado_cat = mysqli_query($conn, $result_cat);
                    while($row_cat = mysqli_fetch_assoc($resultado_cat) ) {
                        echo '<option value="'.$row_cat['id'].'">'.$row_cat['nome'].'</option>';
                    }
                ?>
            </select><br><br>
            
            <label>Subcategoria:</label>
            <span class="carregando">Aguarde, carregando...</span>
            <select name="id_sub_categoria" id="id_sub_categoria">
                <option value="">Escolha a Subcategoria</option>
            </select><br><br>
            
            <input type="submit" value="Pesquisar">
            
        </form>
            
        </div>
        
        <?php
            if($_SERVER['REQUEST_METHOD']=='POST'){
                $id_categoria = $_POST['id_categoria'];
                $id_sub_categoria = $_POST['id_sub_categoria'];
                
                $result_pesquisar = "SELECT nome FROM cursos WHERE categoria_id = '$id_categoria' AND subcategoria_id = '$id_sub_categoria'";
                
                $resultado_pesquisar = mysqli_query($conn, $result_pesquisar);
                
                while ($row_pesquisar = mysqli_fetch_assoc($resultado_pesquisar)){
                    echo "Empresa: ".$row_pesquisar['nome'] . "<br>";
                }
            }
        ?>
        
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
        
        <script type="text/javascript">
        $(function(){
            $('#id_categoria').change(function(){
                if( $(this).val() ) {
                    $('#id_sub_categoria').hide();
                    $('.carregando').show();
                    $.getJSON('sub_categorias.php?search=',{id_categoria: $(this).val(), ajax: 'true'}, function(j){
                        var options = '<option value="">Escolha Subcategoria</option>';    
                        for (var i = 0; i < j.length; i++) {
                            options += '<option value="' + j.id + '">' + j.nome + '</option>';
                        }    
                        $('#id_sub_categoria').html(options).show();
                        $('.carregando').hide();
                    });
                } else {
                    $('#id_sub_categoria').html('<option value="">– Escolha Subcategoria –</option>');
                }
            });
        });
        </script>

 

 

O codigo que eu da vitrine é esse:

<?php include_once("conexao.php");
//Verificar se está sendo passado na URL a página atual, senao é atribuido a pagina 
$pagina = (isset($_GET['pagina']))? $_GET['pagina'] : 1;
if(!isset($_GET['pesquisar'])){
    header("Location: comprar.html");
}else{
    $valor_pesquisar = $_GET['pesquisar'];
}

//Selecionar todos os cursos da tabela
$result_curso = "SELECT * FROM cursos WHERE nome LIKE '%$valor_pesquisar%'";
$resultado_curso = mysqli_query($conn, $result_curso);
//Contar o total de cursos
$total_cursos = mysqli_num_rows($resultado_curso);
//Seta a quantidade de cursos por pagina
$quantidade_pg = 12;
//calcular o número de pagina necessárias para apresentar os cursos
$num_pagina = ceil($total_cursos/$quantidade_pg);
//Calcular o inicio da visualizacao
$incio = ($quantidade_pg*$pagina)-$quantidade_pg;
//Selecionar os cursos a serem apresentado na página
$result_cursos = "SELECT * FROM cursos WHERE nome LIKE '%$valor_pesquisar%' limit $incio, $quantidade_pg";
$resultado_cursos = mysqli_query($conn, $result_cursos);
$total_cursos = mysqli_num_rows($resultado_cursos);
?>
 
 
 
 
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 
 
 
     <div class="container theme-showcase" role="main">
            <div class="page-header">
                <div class="row">
                    <div class="col-sm-6 col-md-6">
                        <h1>Produtos</h1>
                    </div>
                </div>
            </div>
            <div class="row">
                <?php while($rows_cursos = mysqli_fetch_assoc($resultado_cursos)){ ?>
                    <div class="col-sm-6 col-md-4">
                        <div class="thumbnail">
                            <img src="imagens/<?php echo $rows_cursos['imagem']; ?>">
                            <div class="caption text-center">
                                <a href="detalhes.php?id_curso=<?php echo $rows_cursos['id']; ?>"><h3><?php echo $rows_cursos['nome']; ?></h3></a>
                                <p><a href="https://<?php echo $rows_cursos['url']; ?>" class="btn btn-primary" role="button">Comprar</a> </p>
                            </div>
                        </div>
                    </div>
                <?php } ?>
            </div>

 

Não precisa fazer por mim, só queria uma ajuda, muito obrigado desde já 

Editado por DiF
Citação não deve ser usada para postar códigos. Por gentileza leia o tópico no comunicado para saber como postar o código

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa, mas você deseja usar ul para mostrar o resultado final ou outra parte?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Ygor Sansone No caso é só substituir o seu select pela lista não ordenada, de forma que ela seja montada via PHP.

Na verdade nem tem tanto mistério assim. 

Basta criar o UL vazio e preencher com LI dinamicamente vindo do banco de dados.

Ao clicar em uma delas, você gera mais outra lista não ordenada... exatamente como faz com o select.

 

Compartilhar este post


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

@Ygor Sansone No caso é só substituir o seu select pela lista não ordenada, de forma que ela seja montada via PHP.

Na verdade nem tem tanto mistério assim. 

Basta criar o UL vazio e preencher com LI dinamicamente vindo do banco de dados.

Ao clicar em uma delas, você gera mais outra lista não ordenada... exatamente como faz com o select.

 

Exatamente. Para criar as funções você deverá usar JavaScript para configurar os cliques na lista para selecionar, etc. Alguns desenvolvedores costumam criar a lista principal e as internas todas juntas, mas deixando apenas a principal visível e as outras são controladas por uma função em JavaScript.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Em 28/10/2017 às 02:16, iHollyZinhO disse:

    Exatamente. Para criar as funções você deverá usar JavaScript para configurar os cliques na lista para selecionar, etc. Alguns desenvolvedores costumam criar a lista principal e as internas todas juntas, mas deixando apenas a principal visível e as outras são controladas por uma função em JavaScript.

    Eu não entendi como eu poderia fazer, eu iria trocar o select por ul ? Eu gostaria  de fazer mais ou menos nesse estilo 

    http://www.hdistribuidoraoficial.com.br/produtos.asp?categoria=FERRAGEM/FERRAMENTA&subcategoria=BALDE P/ CONCRETO

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    @Ygor Sansone Então meu amigo, a pedra já foi cantada.

    Do mesmo modo que faria com o <select> você faz um laço de while populando o elemento <UL>

    Vou dar um exemplo extremamente simples e você vai ter que estudar e aprender.

     

    <ul>
      <?php
         include 'conexao.php';
         
         $consulta = mysqli_query($conexao, "SELECT id, nome FROM usuarios");
         while($usuarios = mysqli_fetch_object($consulta)):
             echo "<li><a href='detalhesUsuario.php?id=$usuarios->id'>$usuarios->nome</a></li>";
         endwhile;
      ?>
    </ul> 

    Com isso terias um <UL> populado dinamicamente do banco de dados, onde cada um é um link que leva aos detalhes deste usuário baseado no ID dele.

     

    No seu caso fará com os produtos.

    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

    ×