Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

666999

multiplo select + mysql

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.