Ir para conteúdo

Arquivado

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

Bruno Depieri Barduchi

Option em cascata

Recommended Posts

Caros, tenho um fonte que funciona para busca, seleciono a primeira categoria as outras abrem conforme seleciona a anterior, porém quando seleciono para alterar o registro não aparece preenchido todos os campos, preciso preencher manualmente, podem ajudar?

<script type="text/javascript">
	$(document).ready(function(){
		$('#tipo_cat_categorias3_produto').change(function(){
			$('#tipo_cat_categorias2_categorias3_produto').load('sub_categorias1.php?subcategoria='+$('#tipo_cat_categorias3_produto').val() );
		});
		$('#tipo_cat_categorias2_categorias3_produto').change(function(){
			$('#tipo_cat_categorias3_categorias3_produto').load('sub_categorias2.php?subcategoria2='+$('#tipo_cat_categorias2_categorias3_produto').val() );
		});
	});
</script>

<!-- tipo_cat_categorias3_produto -->
<select name="tipo_cat_categorias3_produto" id="tipo_cat_categorias3_produto" 
<?php (isset($erro_tipo_cat_categorias3_produto)) ? print "value='$tipo_cat_categorias3_produto'"." ".$formatar_erro : (isset($tipo_cat_categorias3_produto) ? print "value='$tipo_cat_categorias3_produto'"." ".$formatar_campo : print"$formatar_campo" ) ; 
?>
>
<?php
$select_tabela_categorias = "
	SELECT * FROM
		`"._CATEGORIAS_."`
	ORDER BY 
		`"._CATEGORIAS_."`.`id` 
	DESC
";
//executa o sql e retornando true ou false
$res_select_tabela_categorias = mysql_query($select_tabela_categorias);
//verifica se existe algum registro
if(mysql_num_rows($res_select_tabela_categorias) > 0){
	if(empty($tipo_cat_categorias3_produto)){
		print "<option value=\"\" selected=\"selected\">- Selecione a Categoria -</option>";
	}
	//Obtém uma linha como uma matriz associativa
	while($pega_dados_res_sql_tb_categorias = mysql_fetch_array($res_select_tabela_categorias)){
		$titulo = $pega_dados_res_sql_tb_categorias["titulo"];
		$id = $pega_dados_res_sql_tb_categorias["id"];
		if(!empty($tipo_cat_categorias3_produto) && $tipo_cat_categorias3_produto == $id){
			print "<option value=\"".$id."\" selected=\"selected\">- ".$titulo." -</option>";
		}else{
			print "<option value=\"".$id."\">".$titulo."</option>";
		}
	}
}else{
	print "<option value=\"\">Contate o administrador!</option>";
}
?>
</select>
<br />
<!-- tipo_cat_categorias2_categorias3_produto -->
<select name="tipo_cat_categorias2_categorias3_produto" id="tipo_cat_categorias2_categorias3_produto" 
<?php (isset($erro_tipo_cat_categorias2_categorias3_produto)) ? print "value='$tipo_cat_categorias2_categorias3_produto'"." ".$formatar_erro : (isset($tipo_cat_categorias2_categorias3_produto) ? print "value='$tipo_cat_categorias2_categorias3_produto'"." ".$formatar_campo : print"$formatar_campo" ) ; 
?>
>
	<option value="0">Seleciona a categoria acima</option>
</select>
<br />
<!-- tipo_cat_categorias3_categorias3_produto -->
<select name="tipo_cat_categorias3_categorias3_produto" id="tipo_cat_categorias3_categorias3_produto" 
<?php (isset($erro_tipo_cat_categorias3_categorias3_produto)) ? print "value='$tipo_cat_categorias3_categorias3_produto'"." ".$formatar_erro : (isset($tipo_cat_categorias3_categorias3_produto) ? print "value='$tipo_cat_categorias3_categorias3_produto'"." ".$formatar_campo : print"$formatar_campo" ) ; 
?>
>
	<option value="0">Seleciona a categoria acima</option>
</select>
<br />
<!-- titulo_produto -->
<input id="titulo_produto" name="titulo_produto" alt="titulo_produto" title="titulo_produto" type="text" 
<?php (isset($erro_titulo_produto)) ? print "value='$titulo_produto'"." ".$formatar_erro : (isset($titulo_produto) ? print "value='$titulo_produto'"." ".$formatar_campo : print"$formatar_campo" ) ; 
?>
placeholder="Digite a Sub Categoria 1"/>
<br />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Minha primeira dica é que estude as regras de boas condutas no PHP.

Tente não mescar JavaScript e PHP na mesma página.

 

Sobre os fatos:

Você quer, ao selecionar uma categoria A (Musicas, Livros, Filmes), a lista da Categoria B seja "preenchida" automaticamente? Como por exemplo:

Categoria A Selecionado ->Livros

Categoria B Retorno de Livros->

1)O menino que roubava as boas condutas

2)A Bela e a Fera

Etc..

 

É isto?

Caso seja, aconselho que crie um evento "onchange" na sua tag Pai;

Exemplo:

<label> Selecione a Categoria: </label>
<select id="Categorias" onchange="CategoriasFilhas();">
 <option value="Musicas">Musicas</option>
 <option value="Livros">Livros</option>
 <option value="DVD">DVD</option>
</select>
<label> Escolha a Sub Categoria: </label>
<Select id="sub-categoria"> </select>

Aqui, quando você mudar a categoria para qualquer outro valor, va dispatar a função CategoriaFilhas();

Aqui você cria ela:

function CategoriaFilhas(){

	var CategoriaSelecionada = $("#Categorias").val();
	$.ajax({
			url: "SubCategorias.php",
			type: 'GET',
			dataType: 'html',
			data: {categoria: CategoriaSelecionada},
		})
		.done(function(resposta) {
			$("#sub-categoria").html(resposta)
		});


}

Veja que você definiu a url "SubCategorias.php", então criie um documento com este nome no mesmo diretório que está rodando este script;

E lá nesse arquivo SubCategorias.php, crie o código que retorna as informações:

<?php
    $categoria = $_GET["categoria"];
    $pdo = new \PDO( 'mysql:host=localhost;dbname=SEUBANCODEDADOS' , 'USUARIO' , 'SENHA' );
    $stmt = $pdo-> prepare("select subCategoria from Categorias Where CategoriaPai =  $categoria");
    if( $stmt-> execute() )
    {
        
        
        while( $row = $stmt-> fetchAll( \PDO::FETCH_ASSOC ) )
        {

            
            foreach( $row as $field => $value )
            {
                echo "<option value={$value}>{$value}</option>";
            }
            
            
        }
    }

?>

Esse script PhP vai retornar todas as subCategorias que a CategoriaPai for igual a passada por parâmetro.

E a função ajax vai se responsabilizar de inserir estes valores na tag selection #sub-categorias;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, vou ler mais sobre;

 

Sobre o fonte, seria isso, com 3 níveis de input eu teria 3 categorias:

 

tenis> de futebol >azul

 

nível 1 (tenis/chuteira/sapato);

nível 2 (futebol/social);

nível 3 (verde/amarelo/azul);

 

esse fonte acima funciona normal, porém quando faço a busca do produto e clico em alterar ao abrir a página aparece somente o primeiro preenchido, os outros 2 não, caso eu recelecione o primeiro ele preenche o segundo e o mesmo acontece com o último.

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.