Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!
>
Mais fácil seria utilizar ajax!
http://www.webmaster.pt/categoria-subcategoria-php-ajax-7581.html
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!
#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:
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 !!
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
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 restoEstou 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 !
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.
Beleza pessoal, agradeço a atenção de todos !!!
vou tentar usar o exemplo que o Williams passou pra gente...
Valeww :joia:
Mais fácil seria utilizar ajax!
http://www.webmaster.pt/categoria-subcategoria-php-ajax-7581.html