+12

Manipulando ComboBox com XMLHttpRequest

criado por Vanessa Schissato em 17/09/2005 8:32pm
Agora crie duas tabelas no seu banco de dados, tabelas "categoria" e "subcategoria":

Banco de dados MySQL:
CREATE TABLE categoria (
    id_categoria int(6) not null auto_increment,
    nome_categoria varchar(30),
    PRIMARY KEY (id_categoria)
);

CREATE TABLE subcategoria (
    id_subcategoria int(6) not null auto_increment,
    id_categoria int(6),
    nome_subcategoria varchar(30),
    PRIMARY KEY (id_subcategoria)
);

Popule as tabelas para teste se quiser:
INSERT INTO categoria (nome_categoria) VALUES ('Matematica');
INSERT INTO categoria (nome_categoria) VALUES ('Portugues');
INSERT INTO categoria (nome_categoria) VALUES ('Quimica');
	
INSERT INTO subcategoria (id_categoria,nome_subcategoria) VALUES (1,'Algebra');
INSERT INTO subcategoria (id_categoria,nome_subcategoria) VALUES (1,'Geometria Espacial');
INSERT INTO subcategoria (id_categoria,nome_subcategoria) VALUES (1,'Trigonometria');
INSERT INTO subcategoria (id_categoria,nome_subcategoria) VALUES (2,'Gramatica');
INSERT INTO subcategoria (id_categoria,nome_subcategoria) VALUES (2,'Oracao Subordinada');
INSERT INTO subcategoria (id_categoria,nome_subcategoria) VALUES (2,'Redacao');
INSERT INTO subcategoria (id_categoria,nome_subcategoria) VALUES (3,'Estequiometria');

OBS: Os scripts funcionam para as bases de dados PostgreSQL e MySQL, só sendo necessário mudar os nomes das funções de acordo com sua base de dados. Prefixo "pg" para PostgreSQL e "my" para MySQL, ex: função de conexão: my_connect() ou pg_connect().

Mas você pode copiar as versões para postgres no endereço já passado acima:

http://www.phpbrasil.com/scripts/script.php/id/2454

Para mais informações sobre as funções dos banco de dados consulte o manual do php:

MySQL: http://br.php.net/manual/pt_BR/ref.mysql.php
PostgreSQL: http://br.php.net/manual/pt_BR/ref.pgsql.php

Comentários:

Mostrando 1 - 10 de 68 comentários
Mas nao cosnegui fazer funcionar :(
pode me auxiliar? da erro no intenet explorer, ate tentei corrigfi os erros, mas nao tive sucesso :(
agradecido abraços
04/09/2006 5:59am (~11 anos atrás)

Esclarecendo, já consegui colocar para funcionar aqui no meu caso os códigos.
Valeu pela força.

Abraços a todos.

Líbene Fernandes
20/04/2006 8:01am (~12 anos atrás)

Antes de mais nada quero parabenizá-la Vanessa, ótimo código, ficou bem claro, e é uma idéia bem legal. Parabéns.
E uma pergunta, vocês testaram o código mysql com 3 combos, ele tá ok?
Pois não consegui muita coisa, estou refazendo aqui o código, mas de repente se alguém tiver conseguido numa boa, já é um tempo que não será perdido.

Abraços a todos.

Líbene Fernandes
05/04/2006 5:18am (~12 anos atrás)

Quando eu testo a pagina isoladamente, os combos aparecem e tudo funciona norma...
mas quando eu jogo dentro do centro da minha página, logo na entrada o combo cidades nem entra..pq sera?
20/01/2006 5:39am (~12 anos atrás)

O ruim de usar utf8_encode, é que as paginas ficam despadronizadas...
se eu tiver todas as páginas prontas, vou ter que colocar utf8_encode em toda página.
A mesma coisa acontece se eu usar o Ajax ou Cajax?

Faloww
17/01/2006 4:40am (~12 anos atrás)

Exceto pela linha req.send(null);

há uma diferença entre passar null e (), certo ?
13/01/2006 5:32am (~12 anos atrás)

talvez o algoritmo possa ser melhorado dentro da função loadXMLDoc():

as três linhas:

req.onreadystatechange = processReqChange;
req.open("GET", url+'?categoria='+valor, true);
req.send(null);

podem ser retiradas do if else e colocadas logo abaixo.

bom artigo.

espero ter ajudado
13/01/2006 5:24am (~12 anos atrás)

Parabens para Limeira pelo o que produziu .. ah sei la nao sei falar portugues.
11/11/2005 7:30pm (~12 anos atrás)

Achei bastante interessante o seu artigo.
Continue assim, sempre publicando novos artigos.
11/11/2005 11:57am (~12 anos atrás)

pelo visto vc ja tinha achado o erro
=p
o q era??
=p
05/11/2005 6:04pm (~12 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)