COMO ATUALIZAR UM SELECT AO SELECIONAR OUTRO SELECT
31/03/2021
0
1 chamado de categorias
e outro sub categorias
queria que ao seleciona-se a categorias as sub categorias carregasse no outro select somente as da categorias selecionada baseado no cadastro do banco de dados
Estrutura da tabela `categorias`
--
CREATE TABLE `categorias` (
`id` int(11) NOT NULL,
`nome` varchar(100) NOT NULL,
`descricao` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`url` varchar(100) NOT NULL,
`idu` int(11) NOT NULL,
`posicao` int(11) NOT NULL
)
Estrutura da tabela `subcategorias`
--
CREATE TABLE `subcategorias` (
`id` int(11) NOT NULL,
`idu` int(11) NOT NULL,
`nome` varchar(100) NOT NULL,
`descricao` text NOT NULL,
`categoria` varchar(100) NOT NULL,
`foto` varchar(100) NOT NULL
)
segue um exemplo
<div class="col-md-4">
<div class="form-group">
<label class="form-control-label">Categoria: <span class="tx-danger">*</span></label>
<select class="form-control" name="cad_cat" required>
<option value="" disabled selected><b>Selecione...</b></option>
<?php
$selcat = $connect->query("SELECT * FROM categorias WHERE idu = '$cod_id' ORDER BY posicao ASC");
while ($dadossel = $selcat->fetch(PDO::FETCH_OBJ)) {
?>
<option value="<?php print $idca = $dadossel->id;?>"><?php print $nomca = $dadossel->nome;?></option>
<?php } ?>
</select>
</div>
</div><!-- col-4 -->
<div class="col-md-4">
<div class="form-group">
<label class="form-control-label">Sub-Categoria: <span class="tx-danger">*</span></label>
<select class="form-control" name="cad_subcat" required>
<option value="" disabled selected><b>Selecione...</b></option>
<?php
$selcat2 = $connect->query("SELECT * FROM subcategorias WHERE idu = '$cod_id' ORDER BY nome ASC");
while ($dadossel2 = $selcat2->fetch(PDO::FETCH_OBJ)) {
?>
<option value="<?php print $idca = $dadossel2->id;?>"><?php print $nomca = $dadossel2->nome;?></option>
<?php } ?>
</select>
</div>
</div><!-- col-4 -->
como faria funcionar esses dois select interligado retornando os dados em JSON,. E criar o select com javascript
ou se alguem souber outra solucao
fico no aguardo desde ja agradeço
Adriano
Posts
31/03/2021
Chromusmaster
SELECT * FROM primeira_tabela WHERE CAMPO IN (SELECT * FROM segunda_tabela where criterios=valor);
Exemplo com join:
SELECT * FROM primeira_tabela inner join segunda_tabela on segunda_tabela.campo_de_ligacao=primeira_tabela.campo_de_ligacao WHERE critérios=valor;
Caso tenha alguma duvida ainda detalhe melhor a necessidade para que possa lhe auxiliar.
31/03/2021
Adriano
SELECT * FROM primeira_tabela WHERE CAMPO IN (SELECT * FROM segunda_tabela where criterios=valor);
Exemplo com join:
SELECT * FROM primeira_tabela inner join segunda_tabela on segunda_tabela.campo_de_ligacao=primeira_tabela.campo_de_ligacao WHERE critérios=valor;
Caso tenha alguma duvida ainda detalhe melhor a necessidade para que possa lhe auxiliar.
obrigado pela ajuda se for pedir muito nao teria como montar pra mim baseado no que vc falou ai estou comecando e nao entendo muito essa parte
pode usar os mesmo campo meus e adaptar a ele teria como mea judar
31/03/2021
Chromusmaster
Sim, há um grande macete para aprender mais rápido. Em banco de dados temos 3 join (junções). São elas:
->INNER;
->LEFT;
->RIGHT;
INNER JOIN é quando você quer buscar os dados de duas ou mais tabelas e os dados precisam NECESSARIAMENTE existir nas duas tabelas. Ex.:
Select
nome_produto,
nome_empresa
from empresas
inner join produtos on
produtos.id_empresa=empresa.id
where empresas.id=1;
Ou seja todos os dados que estejam na tabela empresas tendo NECESSARIAMENTE todos os dados que também existem na tabela produtos. Isso segundo o critério de junção onde a empresa for a de primeiro cadastro (id_empresa=1).
LEFT JOIN é quando você quer buscar os dados de duas ou mais tabelas e os dados precisam NECESSARIAMENTE existir na PRIMEIRA TABELA, mas NÃO NECESSARIAMENTE existem na SEGUNDA TABELA. Ex.:
Select
nome_produto,
nome_empresa
from empresas
left join produtos on
produtos.id_empresa=empresa.id
where empresas.id=6;
Ou seja todos os dados que estejam na tabela empresas mas NÃO NECESSARIAMENTE tendo os dados de produtos cadastrados.Isso é bastante útil quando se quer saber os produtos que ainda faltam cadastrar por exemplo. Isso segundo o critério de junção onde a empresa for a de primeiro cadastro (id_empresa=6).
RIGHT JOIN é quando você quer buscar os dados de duas ou mais tabelas e os dados precisam NECESSARIAMENTE existir na SEGUNDA TABELA, mas NÃO NECESSARIAMENTE existem na PRIMEIRA TABELA. Ex.:
Select
nome_produto,
nome_empresa
from empresas
right join produtos on
produtos.id_empresa=empresa.id
where produtos.id>2;
Ou seja todos os dados que estejam na tabela produtos mas NÃO NECESSARIAMENTE tendo os dados das empresas cadastradas. Dificilmente será usado o right join, nestes casos é preferível inverter a ordem das tabelas e utilizar um left join.
Logo mais te mando a query com a estrutura que colocou aqui. Esta foi apenas uma explicação para aprender banco de dados mais rápido.