666999 0 Denunciar post Postado Junho 17, 2010 pessoal estou com uma duvida para criar select php + mysql tipo gostaria de criar um multiplo select que quando a pessoa escolhece algo abria outro select dentro com as informação correspondente tipo eu consegui fazer um select que cata dados mysql <?php $sql = "SELECT id, categoria_nome FROM categoria ". "ORDER BY categoria_nome"; $rs = mysql_query($sql); while($row = mysql_fetch_array($rs)) { echo "<option value=\"".$row['id']."\">".$row['categoria_nome']."\n "; } ?> </select><br /><br /> aqi tenho uma tabela mysql com a tabela ( id )e (categoria_nome) agora como faço para inserir outro select dentro desse ? e tipo tenho banco de dados categoria no caso penso em colocar uma subcategoria entao criei uma tabela mysql com nome subcategoria com tabela ( id ) e (subcategoria_nome) como faço este multiplo select ? eu cheguei achar uma materia no site viva linux mais nao entendi nada ¬¬ :( e tipo esta pagina teria de abrir estes varios selects SEM mudar de pagina nem ATUALIZAR A PAGINA :huh: Compartilhar este post Link para o post Compartilhar em outros sites
Calafate 0 Denunciar post Postado Junho 17, 2010 Então cara, eu só não entendi como você vai fazer para relacionar a sua categoria com a subcategoria. Acho que o mais indicado para a tabela subcategoria seria ter três colunas: id | categoria_id | subcategoria_nome Se for dessa maneira, é possível ter as paginas abaixo. pesquisa.php <?php //Cria a conexao $con = mysql_connect("localhost", "usuario", "senha"); mysql_select_db("database"); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="javascript" src="script.js"></script> </head> <body> <form name="formulario" method="post" action=""> <select name="categoria" onchange="list_dados( this.value )"> <option></option> <?php $consulta = mysql_query("SELECT * FROM categoria ORDER BY nome ASC"); while( $row = mysql_fetch_assoc($consulta) ) { echo "<option value=\"$row[codigo]\">$row[nome]</option>\n"; } ?> </select> </p> <p><select name="subcategoria"></select> </p> </form> </body> </html> script.js function list_dados( valor ) { http.open("GET", "result.php?id=" + valor, true); http.onreadystatechange = handleHttpResponse; http.send(null); } function handleHttpResponse() { campo_select = document.forms[0].subcategoria; if (http.readyState == 4) { campo_select.options.length = 0; results = http.responseText.split(","); for( i = 0; i < results.length; i++ ) { string = results[i].split( "|" ); campo_select.options[i] = new Option( string[0], string[1] ); } } } function getHTTPObject() { //Funcao utilizada para verificar a compatibilidade do navegador. var req; try { if (window.XMLHttpRequest) { req = new XMLHttpRequest(); if (req.readyState == null) { req.readyState = 1; req.addEventListener("load", function () { req.readyState = 4; if (typeof req.onReadyStateChange == "function") req.onReadyStateChange(); }, false); } return req; } if (window.ActiveXObject) { var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"]; for (var i = 0; i < prefixes.length; i++) { try { req = new ActiveXObject(prefixes[i] + ".XmlHttp"); return req; } catch (ex) {}; } } } catch (ex) {} alert("XmlHttp Objects not supported by client browser"); } var http = getHTTPObject(); // Logo apos fazer a verificacao, é chamada a funcao e passada o valor da variavel global http. result.php <?php $con = mysql_connect("localhost", "usuario", "senha"); mysql_select_db("database"); $categoria = addslashes(trim($_GET["id"])); $consulta = mysql_query("SELECT * FROM subcategoria WHERE categoria_id = '$categoria' ORDER BY nome ASC"); while( $row = mysql_fetch_assoc($consulta) ) { echo $row["nome"] . "|" . $row["codigo"] . ","; } ?> O funcionamento é o seguinte: A página index.php carregará diretamente o conteúdo da tabela categoria para o select. A cada mudança que você fizer no select o ID da categoria selecionada será enviado para a página result.php. Essa por sua vez irá pegar de toda a tabela subcategoria o que tiver o categoria_id igual ao ID passado. Dê uma pesquisa sobre AJAX que irá te ajudar. Qualquer problema, só postar. Abs[]'s Compartilhar este post Link para o post Compartilhar em outros sites
666999 0 Denunciar post Postado Junho 17, 2010 Cara achei um esquema na internet e funcionou mais tem um porem tipo EXEMPLO no bd categoria tem tabela (id) e (categorianome) NO bd do usuario tem tabela (id)(categorianome) quando o usuario escolhe a categoria ele grava O (ID) da categoria na tabela categorianome do bd usuario então quando quero mostrar alguma categoria do usuario fica a numeração do id 1 2 3 4 tem algum esquema que pode me ajudar a arumar isso? :( Compartilhar este post Link para o post Compartilhar em outros sites
Calafate 0 Denunciar post Postado Junho 17, 2010 Cara ai você vai ter que modificar a query que você estiver usando para retornar esses dados do banco. SELECT usuario.*, categoria.categorianome as catNome FROM usuario, categoria WHERE categoria.id = usuario.categorianome Essa ai vai retornar todos os dados que estiverem na tabela usuarios e relacionar o ID que estiver nesta mesma tabela com o nome relativo na tabela categoria. Compartilhar este post Link para o post Compartilhar em outros sites