Ir para conteúdo

Arquivado

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

NathaN_XLR

Filtro de informações por dropdown

Recommended Posts

Pessoal, tenho a seguinte situação.

 

Tenho uma tabela de "Categorias" e "SubCategorias" no banco, em meu formulário tenho dois dropdown:

 

-Categoria >

-Subcategoria >

 

O que eu quero ?

Quando eu selecionar a categoria no primeiro dropdown, liste para mim no segundo as subcategorias referente a categoria que escolhi.

 

Acho que deve ser fácil, mas não estou conseguindo pensar em alguma forma. Não posso informar a categoria que escolhi pois acho que não tem como informar para minha function via post.

$subCat->selectSubCateg($categoria_aqui);

Desde já agradeço !

Compartilhar este post


Link para o post
Compartilhar em outros sites

pra que utilizar ajax? basta fazer uma listagem do banco de dados!

 

Primeiro a estrutura das tabelas devem ser assim:

 

Tabela: categorias

Colunas: id | nome

 

Tabela: subcategorias

Colunas: id | nome | idCat ( aqui você coloca o id da categoria PAI)

 

depois é só listar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

#3

 

Entenda o post antes de postar bobagem, a melhor opção é ajax, ou vai ficar dando reload na página.

 

E com certeza a tabela esta desta forma!

 

Senão o nome do método era outro.

$subCat->selectSubCateg($categoria_aqui);

Pare de ficar floodando tópicos. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Williams, bom dia !

 

Pois é, estou evitando usar outras linguagens, mas não estou vendo outra alternativa.

 

Já tentei armazenar o código da "categoria" na sessão para informar nesta function. mas o problema é que quando vou selecionar outra categoria, as subcategorias da anterior ainda permanece.

 

Dei uma olhada no link que me passou, parece ser bem simples, apesar de não conhecer o Ajax vou tentar implementar.

 

Mas se alguém tiver uma outra forma usando o próprio PHP fico grato.

 

Obrigado !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas se alguém tiver uma outra forma usando o próprio PHP fico grato.

Ae neste caso é so voltar há mais 10 anos atrás, quando se usava menu de salto

 

Exemplo

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Documento sem título</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
	<!--
	function MM_jumpMenu(targ,selObj,restore){ //v3.0
	eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
	if (restore) selObj.selectedIndex=0;
	}
	//-->
</script>
</head>

<body>

	<?php
	if (isset($_GET['cat'])){
		echo 'Parametro da categoria : '.$_GET['cat'];
	}
	?>
	<form name="form1">
		<select name="menu1" onChange="MM_jumpMenu('parent',this,0)">
			
			<?php
			
			
			$categoriasDB = array('Categoria 1', 'Categoria 2', 'Categoria 3'); 

			foreach ($categoriasDB as $key => $categoria) {
				
				$key = $key+1;

				if (!(strcmp( $key, $_GET['cat']))) {
					// Set the $checked string
					$selected = "selected='selected'";
				} else {
					$selected = "";
				}

				echo '<option value="?cat='. $key .'" '. $selected .'>'. $categoria . '</option>' . PHP_EOL;
			}
			?>
		</select>
	</form>
</body>
</html> 

de acordo com o value, aplica-se o selected="selected", pode ser feito em javascript ou como no exemplo acima em php

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi

Se não quer usar o AJAX, acho que tambem daria certo criando um objeto JS na hora que carrega a página.

Não testei, mas ficaria parecido com isso:

var selecao = {
    'categoria1': ['subcategoria1', 'subcategoria2', 'subcategoria3'], 
    'categoria2': ['subcategoria1', 'subcategoria2', 'subcategoria3'] //...
    //..
    }

Então quando o select mudar teria uma função para fazer o resto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou postando meu código aqui:

<?php
        if ($_GET['funcao'] === "cadastrar"){
        ?>
        <form class="navbar-form" action="?funcao=cadastrar" method="POST" enctype="multipart/form-data" name="frmCadastroProduto">
        <div id="myTabContent" class="tab-content">
            <div class="tab-pane fade in active" id="dados">
		<div class="input-group espaco">
                    <input name="iptCodigo" type="text" class="form-control" placeholder="Código" size="10" disabled>
		</div>
                
                <select name="iptCategoria" class="input-group espaco" name="selectCategoria">
                    <option value="" selected>Selecione...</option>
                    <?php
                        $cat = new CategoriaClass;
                        $cat->open();
                        $cat->selectCategoria();
                        
                        for($i = 0; $i < $cat->resultado(); $i++){
                    ?>
                    <option value="<?php echo $cat->retorno($i, 1); ?>"><?php echo $cat->retorno($i, 1); ?></option>
                    <?php
                        }
                        $cat->close();
                    ?>
                </select>
                
                <select name="iptSubCategoria" class="input-group espaco" name="selectSubCategoria">
                    <option value="" selected>Selecione...</option>
                    <?php
                        $subCat = new SubCategoriaClass;
                        $subCat->open();
                        $subCat->selectSubCategoria();
                        
                        for($e = 0; $e < $subCat->resultado(); $e++){
                    ?>
                    <option value="<?php echo $subCat->retorno($e, 2); ?>"><?php echo $subCat->retorno($e, 2); ?></option>
                    <?php
                        }
                        $subCat->close();
                    ?>
                </select>
                <div class="input-group espaco">
                    <input name="iptDescricao1" type="text" class="form-control" placeholder="Descricao 1" size="50">
		</div>
                <div class="input-group espaco">
                    <input name="iptDescricao2" type="text" class="form-control" placeholder="Descricao 2" size="50">
		</div>
                <div class="input-group espaco">
                    <input name="iptAltura" type="text" class="form-control" placeholder="Altura" size="10">
		</div>
                <div class="input-group espaco">
                    <input name="iptLargura" type="text" class="form-control" placeholder="Langura" size="10">
		</div>
                <div class="input-group espaco">
                    <input name="iptPreco" type="text" class="form-control" placeholder="Preco" size="10">
		</div>
                <div class="input-group espaco">
                    <button type="submit" class="btn btn-default" value="Cadastrar">Cadastrar</button>
                </div>
            </div>
            
            <div class="tab-pane fade" id="imagens">
                <div class="row espaco">
                    <div class="col-xs-6 col-md-3">
                        <a href="#" class="thumbnail">
                            <img id="preview_image_min" data-src="" alt="Miniatura">
                        </a>
                    </div>
                </div>
		<div class="input-group espaco">
                    <input type="file" name="iptImgMin" id="files" onchange="previewMin(this);" multiple>
		</div>
                <div class="row espaco">
                    <div class="col-xs-6 col-md-3">
                        <a href="#" class="thumbnail">
                            <img id="preview_image_orig" data-src="" alt="Original">
                        </a>
                    </div>
                </div>
                <div class="input-group espaco">
                    <input type="file" name="iptImgOrig" id="files" onchange="previewOrig(this);" multiple>
		</div>
            </div>
	</div>    
        </form>
        <?php
        }
        ?>

estou ficando angustiado já kkkkkk.....apenas quero informar a categoria que escolhi na function:

$subCat->selectSubCategoria([[[ AQUI ]]]);

esta fuction esta engatilhada para listar as subcategorias....mas como ?

 

tem a possibilidade de informar via parametro pela url sem dar um post ou pela sessão ???

 

Obrigado a todos !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu entendi,

do jeito que voce quer faszer nao dá!

os codigos php são processados no lado servidor ou seja, quando o usuario carrega a pagina, tudo que tinha de codigo PHP ja foi executado. Nao adianta o usuario o usuario escolher a categoria. Ele teria que fazer o envio da escolha para o servido e o PHP processar e enviar nova pagina com as subcategorias.

 

Ja te deram a resposta, ai em cima: JavaScript e AJAX, tem muito exemplo na net.

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.