Jump to content

Php com Filtros


pikanso
 Share

Recommended Posts

Boas,

É assim eu tenho uma duvida que é a seguinte..

Eu estou a criar um site em php com ligação a mysql e o que eu precisava era da espécie de um filtro para uma pesquisa... Ou seja eu tenho 3 combo box's, e na Primeira tenho todos os distritos de Portugal, e o que eu queria agora, era que na segunda combo box aparecessem todos os concelhos daquele distrito, utilizando o tal filtro e na terceira combo box todas as freguesias do concelho em cima...

Deve de ser uma coisa simples, mas ainda sou muito novo neste meio..

Espero que me ajudem

Link to comment
Share on other sites

Para isso é melhor é o javascript.

Usa isto.

http://javascript.internet.com/forms/auto-drop-down.html

É rápido, simples e podes até alterar os dados cda vez q ele lê a página alterando directamente no js usando, por exemplo, php.

Se quiseres adaptar o código para a tua página posso ser eu a ajudar-te (q tb estou a pensar usar o código mais tarde).

ADD:

Encontrei agora este js script. Parece ser mais fácil de usar que o outro vê este tb.

http://javascript.internet.com/forms/unobtrusive-dynamic-select-boxes.html

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
Share on other sites

o segundo é mais o que eu preciso 😄

brigadao, mas agora surgiu-me outra duvida :S

eu nao vou utilizar para ja todos os concelhos e assim mas depois no futuroo se quiser utilizar terei de mexer no codigo de novo certo ?

Link to comment
Share on other sites

Ou então usas uma framework como prototype ou jquery, fazes pedidos por ajax e constrois as combobox com php.

Se não estiveres a usar AJAX, segue um exemplo de como fazer isso (não testei).

Incluis a framework entre as tags <head></head>:

<head>
<script type="text/javascript" src="caminho/prototype.js"></script>
</head>

Controis as combobox e repara no evento onchange dos dois primeiros select, vão usar AJAX para chamar o PHP para devolver as options para as outras duas combobox:

<select id="distrito" onchange="new Ajax.Updater('concelho', 'caminho/gerar_options.php', {parameters: {'distrito': $('distrito').value}});">
<option value="Aveiro">Aveiro</option>
...
</select>

<select id="concelho" onchange="new Ajax.Updater('freguesia', 'caminho/gerar_options.php', {parameters: {'concelho': $('concelho').value}});">
<option value="0">Concelho...</option>
</select>

<select id="freguesia">
<option value="freguesia">Freguesia...</option>
</select>

O ficheiro PHP gerar_options.php, tal como o nome indica, vai gerar as options dos selects.

A vantagem disto é que depois podes usar AJAX em outras situações.

Link to comment
Share on other sites

Agora estou com outro problema :S

sempre que altero o codigo daquela aplicação ela nao faz o filtro :S

 /* This script and many more are available free online at
The JavaScript Source :: http://javascript.internet.com
Created by: Michael J. Damato :: http://developing.damato.net/ */

// State lists
var states = new Array();

states['Porto'] = new Array('Amarante','Baião','Felgueiras','Gondomar','Lousada','Maia','Marco Canaveses','Matosinhos','Paços de Ferreira','Paredes','Penafiel','Porto','Póvoa de Varzim','Santo Tirso','Valongo','Vila do Conde','Vila Nova de Gaia','Trofa');
states['Aveiro'] = new Array('Águeda','Albergaria-a-Velha','Anadia','Arouca','Aveiro','Castelo de Paiva','Espinho','Estarreja','Santa Maria da Feira','Ílhavo','Mealhada','Murtosa','Oliveira de Azeméis','Oliveira do Bairro','Ovar','São João da Madeira','Sever de Vouga','Vagos','Vale de Cambra');
states['Coimbra'] = new Array('Arganil','Cantanhede','Coimbra','Condeixa-a-Nova','Figueira da Foz','Góis','Lousã','Mira','Miranda do Corvo','Montemor-o-Velho','Oliveira do Hospital','Pampilhosa da Serra','Penacova','Penela','Soure','Tábua','Vila Nova de Poiares');


// City lists
var cities = new Array();

cities['Porto'] = new Array();
cities['Porto']['Gondomar']          = new Array('Baguin do Monte','Covelo','Fânzeres','Foz de Sousa','Gondomar(São Cosme)','Jovim','Lomba','Medas','Melres','Rio Tinto','São Pedro da Cova','Valbom');
cities['Porto']['Maia']              = new Array('Águas Santas','Avioso(Sao Pedro)','Avioso(Santa Maria)','Barca','Folgosa','Gemude','Gondim','Gueifães','Maia','Milheirós','Moreira','Nogueira','Pedrouços','São Pedro Fins','Silva Escura','Vermoim','Vila Nova da Telha');
cities['Porto']['Matosinhos']        = new Array('Custóias','Guifões','Lavra','Leça da Palmeira','Leça do Bailio','Matosinhos','Perafita','São Mamede de Infesta','Santa Cruz do Bispo','Senhora da Hora');

cities['Mexico'] = new Array();
cities['Mexico']['Baja California'] = new Array('Tijauna','Mexicali');
cities['Mexico']['Chihuahua']       = new Array('Ciudad Juárez','Chihuahua');
cities['Mexico']['Jalisco']         = new Array('Guadalajara','Chapala');

cities['United States'] = new Array();
cities['United States']['California'] = new Array('Los Angeles','San Francisco');
cities['United States']['Florida']    = new Array('Miami','Orlando');
cities['United States']['New York']   = new Array('Buffalo','new York');


function setStates() {
cntrySel = document.getElementById('country');
stateList = states[cntrySel.value];
changeSelect('state', stateList, stateList);
setCities();
}

function setCities() {
cntrySel = document.getElementById('country');
stateSel = document.getElementById('state');
cityList = cities[cntrySel.value][stateSel.value];
changeSelect('city', cityList, cityList);
}

function changeSelect(fieldID, newOptions, newValues) {
selectField = document.getElementById(fieldID);
selectField.options.length = 0;
for (i=0; i<newOptions.length; i++) {
   selectField.options[selectField.length] = new Option(newOptions[i], newValues[i]);
}
}

// Multiple onload function created by: Simon Willison
// http://simonwillison.net/2004/May/26/addLoadEvent/
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
   window.onload = func;
} else {
   window.onload = function() {
     if (oldonload) {
       oldonload();
     }
     func();
   }
}
}

addLoadEvent(function() {
setStates();
});  

So fiz isto e ainda nao funciona :S

Link to comment
Share on other sites

Já tenho uma solução. Enviado por e-mail.

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
Share on other sites

vou postar o codigo html

<form name="test" method="POST" action="processingpage.php">
<table>
<tr>
<td style="text-align: left;">Country:</td>
<td style="text-align: left;">
<select name="country" id="country" onchange="setStates();">
<option value="Canada">Porto</option>
<option value="Mexico">Mexico</option>
<option value="United States">United States</option>
</select>
</td>
</tr><tr>
<td style="text-align: left;">State:</td>
<td style="text-align: left;">
<select name="state" id="state" onchange="setCities();">
<option value="">Please select a Country</option>
</select>
</td>
</tr><tr>
<td style="text-align: left;">City:</td>
<td style="text-align: left;">
<select name="city"  id="city">
<option value="">Please select a Country</option>
</select>
</td>
</tr>
</table>
</form>
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.