Ir para conteúdo
Fórum Script Brasil
  • 0

Select + Php


--Ludson--

Pergunta

galera..

eu to fazendo um form, e preciso de um help em java script.

Tenho um select com as categorias, e um com as subcategorias.

eu preciso que ao selecionar uma categoria no select, o select subcategoria exibisse apenas as subcategorias referentes ao select categorias.

Mas que não tenha que dar um refresh na página...

eu tenho isso em asp .. alguém sabe como fazer em php?

<%

Function EscreveFuncaoJavaScript ( Conexao )

'O parametro conexao receberá uma conexao aberta!

'Em funcoes, geralmente não criamos objetos do tipo conexões!

'Opte por sempre deixar sua função o mais compatível possível com qualquer projeto!

'Primeiro vamos escrever o cabecalho de qualquer script javascript!

Response.Write "<script language=""JavaScript"">" & vbcrlf

Response.Write "function atualizacarros (form) {" & vbcrlf

'Essa função JavaScript recebe o form em que estão os campos a serem atualizados!

'Veja na chamada da função no método OnChange em que se passa o this.form!

'Vamos criar um switch para ele verificar qual opção foi selecionada!!

Response.Write "switch (form.marcas.options[form.marcas.selectedIndex].value) {" & vbcrlf

'Agora entramos com o banco de dados! Temos que jogar aqui todas as opções de carro!

SqlMarcas = "SELECT * FROM Marcas ORDER BY Marca"

Set rsMarcas = Conexao.Execute ( SqlMarcas )

While NOT rsMarcas.EOF

'Caso tenha sido essa marca selecionada...

Response.Write "case '" & rsMarcas("ID") & "':" & vbcrlf

'Apagamos tudo o que tem na caixa dos carros!

Response.Write "form.carros.length=0;" & vbcrlf

'Abrimos todos os carros relativos a essa marca!

SqlCarros = "SELECT ID, Carro FROM Carros WHERE Marca = " & rsMarcas("ID")

Set rsCarros = Conexao.Execute ( SqlCarros )

'Fazemos um loop por todos os carros, criando uma nova opção no SELECT!

i = 0

While NOT rsCarros.EoF

Response.Write "form.carros.options[" & i & "] = new Option('" & rsCarros("carro") & "','" & rsCarros("ID") & "');" & vbcrlf

i=i+1

rsCarros.MoveNext

Wend

'Imprimos um break! (Verifique tutoriais de JavaScript, se tiverem alguma dúvida da sua utilização!

Response.Write "break;" & vbcrlf

'Próxima marca!

rsMarcas.MoveNext

Wend

'Fecha chaves do switch e da função! E fecha o script!

Response.Write "}}" & vbcrlf & "</script>" & vbcrlf

End Function

%>

<%

'Criando conexão com o banco de dados!

Set Conexao = Server.CreateObject("ADODB.Connection")

Conexao.Open "Provider=Microsoft.Jet.OleDB.4.0;Data Source=" & Server.MapPath("carros.mdb")

'Abrindo a tabela MARCAS!

Sql = "SELECT * FROM Marcas ORDER BY Marca"

Set Rs = Conexao.Execute ( Sql )

%>

<html>

<head><% EscreveFuncaoJavaScript ( Conexao ) %></head>

<body>

<form name="iMasters">

Marcas:<br>

<select name="marcas" onChange="java script:atualizacarros(this.form);">

<% While NOT Rs.EoF %>

<option value="<% = Rs("id") %>"><% = Rs("Marca") %></option>

<% Rs.MoveNext %>

<% Wend %>

</select>

<br><br>Carros:<br>

<select name="carros"></select>

</form>

</body>

</html>

<%

'Fechando os objetos!

Rs.Close

Set Rs = Nothing

Conexao.Close

Set Conexao = Nothing

%>

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

olha tenta assim, preste bastante atenção no codigo

são tres arquivos o index.php que tem os campos select

o arquivo javascript e o arquico cidades.php que monta as cidades

 
INDEX.PHP

<script language="javascript" src="ajax.js" type="text/javascript"></script>
<table width="100%" border="0" cellspacing="1" cellpadding="5" bgcolor="#CCCCCC" height="123">

  <? if(isset($_POST["acao"])){ ?>
  <tr>
    <tudo height="44" bgcolor="#EFEFEF">Cidade/Estado: <b><?=$_POST["cidade"]."/".$_POST["uf"];?></b></tudo>
  </tr>
  <? } ?>
  <tr> 
    <tudo bgcolor="#EFEFEF">Escolha sua cidade: 
      <form name="form1">
        <table width="100%" border="0" cellspacing="6" cellpadding="0">
          <tr> 
            <tudo width="17%"> 
              <select name="uf" OnChange="atualiza(this.value);">
                <option value="#">escolha um estado</option>
                <?
          include "../conexao_mysql.php"; //AQUI AQRUIVO que FAZ CONEXÃO COM MYSQL
          $result = mysql_query("SELECT * FROM opt_estado ORDER BY 'nome'");
          while($row = mysql_fetch_array($result)){
          echo "<option value=\"$row[uf]\">$row[nome]</option>";
          }
          ?>
              </select>
            </tudo>
            <tudo width="23%"> 
              <div id="atualiza"> 
                <select name="cidade">
                  <option id="opcoes" value="#">Selecione um estado primeiro</option>
                </select>
              </div>
            </tudo>
            <tudo width="60%"> 
              <input type="submit" name="acao" value="Enviar" onClick="qual_cidade();">
            </tudo>
          </tr>
        </table>
      </form>
    </tudo>
  </tr>

</table>
AJAX.JS


var req;
function loadXMLDoc(url){
 req = null;

if (window.XMLHttpRequest) {
 req = new XMLHttpRequest();
 req.onreadystatechange = processReqChange;
 req.open("GET", url, true); 
 req.send(null);

} else if (window.ActiveXObject) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP.4.0");
} catch(e) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP.3.0");
} catch(e) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
req = false;
}
}
}
}
if (req) {
 req.open("GET", url, true);
 req.onreadystatechange = processReqChange;
 req.send();
}
}
}


function processReqChange(){
opcao = document.getElementById("opcoes");
if (req.readyState == 1) { opcao.innerHTML = "Carregando ..."; }

if (req.readyState == 4) {
if (req.status == 200) {

processaXML(req.responseXML);

} else {
alert("Houve um problema ao obter os dados:\n" + req.statusText);
}
}
}



function atualiza(valor){
loadXMLDoc("cidades.php?ID="+valor);
}

function processaXML(obj)
{
var tamanhoXML = obj.getElementsByTagName("cidade");

for (i=0; i <= tamanhoXML.length; i++)
    {
    var busca = tamanhoXML[i];
    //busca tag id / nome
    var data1 = busca.getElementsByTagName('nome')(0);
    var data2 = busca.getElementsByTagName('id')(0);
    var nome = data1.firstChild.data;
    var id   = data2.firstChild.data;
    opcao.innerHTML = "Escolha Sua Cidade";
    //cria option
    var novo = document.createElement("option");
    novo.setAttribute("id", "opcoes");
    novo.value = id;
    novo.text  = nome;
    
    document.form1.cidade.options.add(novo);
    }

}
CIDADES.PHP


<?
Header("Content-type: application/xml; charset=iso-8859-1");

include "../control/db_adir.php";
$uf = $_GET["ID"];
$result = mysql_query("SELECT * FROM opt_cidades WHERE uf='$uf' ORDER BY nome") or die("ERRO");


//XML
$xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
$xml .= "<cidades>\n";


while($row = mysql_fetch_array($result))
{
$xml .= "<cidade>\n";
$xml .= "<id>". $row["id"] . "</id>\n";
$xml .= "<nome>". $row["nome"] . "</nome>\n";
$xml .= "</cidade>\n";
}
$xml .= "</cidades>";

echo $xml;

?>

para ver um exemplo digite : http://www.alliedbros.com.br/login.asp, depois disso vai abrir um novo

site com ip como esse: http://200.232.186.145:91/site/

entaum acrescente no final /select

assim: http://200.232.186.145:91/site/select

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...