Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia. Preciso criar uma caixa de select que busque os resultados do bando de dados de somente 1 campo.
Criei um banco de dados com os seguintes campos:
id_url = Int, 05, Auto Increment, Chave Primária
url = VARCHAR 50
palavrachave = VARCHAR 50
nome do banco: tb_mural
dados da conexão: servidor: mysql.meu servidor usuario: portalfama15 senha: 56784
OBS: Estou utilizando os dados CONEXÃO acima de exemplo para facilitar meu entendimento no caso de uma possível ajuda.
Já consegui criar 2 campo para inserir no banco de dados. Isso está beleza.
Agora o que preciso é fazer aparecer em 2 selects para os campos url e palavra chave em um formulário HTML.
Preciso que ao selecionar o campo url e palavra chave apareca no formulário também = Alterar ou remover a linha que eu seleciono.
Vou colocar abaixo os selects na página HTML para ver se consigo ajuda.
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<p> </p>
<p><font face="Arial Narrow">
<select name="select">
<option></option>
</select>
</font></p>
<p><font face="Arial Narrow">
<select name="select2">
<option></option>
</select>
</font></p>
<p> </p>
</body>
</html>
Aguardo uma possível ajuda. Muito Obrigado.Sim em uma tabela (tb_mural) tenho 3 colunas sendo:
"id_url" (int, 05, auto increment, primary)
"url" (varchar 50) e
"palavrachave" .
O cadastro vai ser feito das da url + palavrachave.
Vai ser um casamento das duas colunas.
Carregou a linha de um carrega do outro. Já tem um formulário separado que faço cadastro a url + palavra chave no banco de dados, esse é só para selecionar, pegar as opções e enviar pelo formulário. Não sei se deu para entender o que preciso agora.
Como se fosse algo assim a coluna "url" seria a categoria e a coluna "palavra chave" seria subcategoria e o que selecionar no formulário vou pegar essas variáveis e enviar para os servidor as páginas montadas.
Obrigado pela ajuda meu amigo :)
Exemplo de combos dependentes com jQuery:
http://wbruno.com.br/2009/10/06/combos-dependentes-ajax-jquery/
Obrigado pela resposta meu amigo. Tentei fazer vários tutoriais como esse que você passou e não consegui. A minha dificuldade nesses tutoriais é alterar onde deve alterar. Poderia ver se estou correto por favor: Na página index. php preencher a linha:
<form action="" method="post"> / somente isso e na página abaixo function.inc.php seria? /
Comentei o código abaixo. Obrigado William.
<?php
header("Content-Type: text/html; charset=ISO-8859-1");
function intGet( $campo ){
return isset( $_GET[$campo] ) ? (int)$_GET[$campo] : 0;
}
function retorno( $id )
{
$sql = "SELECT `id`, `nome` [b]/* mudo aqui para minhas colunas? */[/b]
FROM `combo2`
WHERE `idCombo1` = {$id} ";[b] /* aqui mudo para a coluna do id? */ [/b]
$sql .= "ORDER BY `nome` ";
[b]/ PELO QUE ENTENDI SÓ DEVO MUDAR ISSO? E OS DADOS DO BANCO ABAIXO CERTO? / [/b]
$mysqli = new mysqli("localhost", "root", "123", "wbruno");
$q = $mysqli->query( $sql );
$json = Array();
if( $q->num_rows > 0 )
{
while( $dados = $q->fetch_object() )
{
$json[] = Array('nome'=> utf8_encode( $dados->nome ), 'id'=> $dados->id);
}
}
else
$json[] = Array('nome'=> utf8_encode( 'nao encontrado' ), 'id'=> '0' );
return json_encode( $json );
}
echo retorno( intGet('idCombo1') );sim, vc entendeu certo.
Qual a dúvida ?
Não funcionou. :( . Fiz igualzinho.
Veja só como fica os combos.
obrigado por enquanto.
E ai ? oque acontece ? deu erro ? qual ?
Não apareceu nada veja o link: http://www.buffetfam...gold/index.html
.... :sick:
vamos do básico. Cadê o teu jQuery ?
http://www.buffetfama.com.br/goldkael/gold/jquery-1.3.2.min.js
Coloquei dentro da TAG Head o código. Não era para fazer dessa forma?
Seria esse código abaixo que você se refere:
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){//inicio o jQuery
$("select[name='combo1']").change(function(){
var idCombo1 = $(this).val();//pegando o value do option selecionado
//alert(idCombo1);//apenas para debugar a variável
$.getJSON(//esse método do jQuery, só envia GET
'combos-dependentes-function.inc.php',//script server-side que deverá retornar um objeto jSON
{idCombo1: idCombo1},//enviando a variável
function(data){
//alert(data);//apenas para debugar a variável
var option = new Array();//resetando a variável
resetaCombo('combo2');//resetando o combo
$.each(data, function(i, obj){
option[i] = document.createElement('option');//criando o option
$( option[i] ).attr( {value : obj.id} );//colocando o value no option
$( option[i] ).append( obj.nome );//colocando o 'label'
$("select[name='combo2']").append( option[i] );//jogando um à um os options no próximo combo
});
});
});
});
/* função pronta para ser reaproveitada, caso queria adicionar mais combos dependentes */
function resetaCombo( el )
{
$("select[name='"+el+"']").empty();//retira os elementos antigos
var option = document.createElement('option');
$( option ).attr( {value : '0'} );
$( option ).append( 'Escolha' );
$("select[name='"+el+"']").append( option );
}
</script>faltou vc puxar para o teu servidor o jQuery:
Vc não sabe oque é jQuery ne?!
Bom, troque:
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
por:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
Troquei o que você informou. Agora devo baixar o JQquery e colocar no servidor? Obrigado por enquanto.
Uma das duas coisas, ou vc baixa e coloca no teu servidor, ou vc usa direto do servidor deles.
O que eu mandei vc fazer, faz com que vc use direto deles.
Agora está faltando vc hospedar o arquivo php no caminho correto.
Mas não funcionou mesmo assim. :(
agora está faltando vc hospedar o arquivo .php
Tá dando 404 onde ele devia estar:
http://www.buffetfama.com.br/goldkael/gold/combos-dependentes-function.inc.php
entendeu ?
Como assim o caminho? Coloquei tudo na mesma pasta no servidor. Não seria isso? :)
sim, mas então tá com o nome errado.
O nome do arquivo .php deveria ser:
combos-dependentes-function.inc.php e ele não está lá.
Troquei o nome do arquivo e ainda não funcionou. :( .
Devo estar fazendo mais alguma coisa errada. O que será?
agora o problema está no php:
http://www.buffetfama.com.br/goldkael/gold/combos-dependentes-function.inc.php?idCombo1=1
não está voltando nenhum dado. Tem algo cadastrado no banco ? com quais IDs ?
O php está da seguinte forma: Lembrando que minha tabela se chama tb_mural e as colunas são:
id_url (int,5, auto-increment e primary)
url (varchar 50)
palavrachave (varchar 50)
O código então ficou assim:
<?php
header("Content-Type: text/html; charset=ISO-8859-1");
function intGet( $campo ){
return isset( $_GET[$campo] ) ? (int)$_GET[$campo] : 0;
}
function retorno( $id )
{
$sql = "SELECT `id_url`, `palvrachave`
FROM `combo2`
WHERE `idCombo1` = {$id_url} ";
$sql .= "ORDER BY `nome` ";
$mysqli = new mysqli("mysql14.fama", "portalexpresso20", "fabi550", "portalexpresso20");
$q = $mysqli->query( $sql );
$json = Array();
if( $q->num_rows > 0 )
{
while( $dados = $q->fetch_object() )
{
$json[] = Array('url'=> utf8_encode( $dados->url ), 'id_url'=> $dados->id_url);
}
}
else
$json[] = Array('url'=> utf8_encode( 'nao encontrado' ), 'id_url'=> '0' );
return json_encode( $json );
}
echo retorno( intGet('idCombo1') );
?>então tem varios erros na tua query:
function retorno( $id )
{
$sql = "SELECT `id_url`, `palvrachave`
FROM `combo2`
WHERE `idCombo1` = {$id_url} ";
$sql .= "ORDER BY `nome` "; troque por:
function retorno( $id )
{
$sql = "SELECT `id_url`, `palavrachave`
FROM `tb_mural`
WHERE `id_url` = {$id} ";
$sql .= "ORDER BY `palavrachave` ";Então..troquei o código conforme as opções acima e não mudou nada :(.
O código ficou assim agora:
<?php
header("Content-Type: text/html; charset=ISO-8859-1");
function intGet( $campo ){
return isset( $_GET[$campo] ) ? (int)$_GET[$campo] : 0;
}
function retorno( $id )
{
$sql = "SELECT `id_url`, `palavrachave`
FROM `tb_mural`
WHERE `id_url` = {$id} ";
$sql .= "ORDER BY `palavrachave` ";
$mysqli = new mysqli("mysql14.buffetfama.com.br", "portalexpresso15", "fabi080982", "portalexpresso15");
$q = $mysqli->query( $sql );
$json = Array();
if( $q->num_rows > 0 )
{
while( $dados = $q->fetch_object() )
{
$json[] = Array('url'=> utf8_encode( $dados->url ), 'id_url'=> $dados->id_url);
}
}
else
$json[] = Array('url'=> utf8_encode( 'nao encontrado' ), 'id_url'=> '0' );
return json_encode( $json );
}
echo retorno( intGet('idCombo1') );
?>poste como está o teu arquivo .php neste momento.
O teu erro está nele, preste atenção.
Está desse jeito que postei acima :) .
Vou colocar de novo:
<?php
header("Content-Type: text/html; charset=ISO-8859-1");
function intGet( $campo ){
return isset( $_GET[$campo] ) ? (int)$_GET[$campo] : 0;
}
function retorno( $id )
{
$sql = "SELECT `id_url`, `palavrachave`
FROM `tb_mural`
WHERE `id_url` = {$id} ";
$sql .= "ORDER BY `palavrachave` ";
$mysqli = new mysqli("mysql14.buffetfama.com.br", "portalexpresso15", "fabi080982", "portalexpresso15");
$q = $mysqli->query( $sql );
$json = Array();
if( $q->num_rows > 0 )
{
while( $dados = $q->fetch_object() )
{
$json[] = Array('url'=> utf8_encode( $dados->url ), 'id_url'=> $dados->id_url);
}
}
else
$json[] = Array('url'=> utf8_encode( 'nao encontrado' ), 'id_url'=> '0' );
return json_encode( $json );
}
echo retorno( intGet('idCombo1') );
?>
cara, não deu para entender bem.
Os combos dependem um do outro ? ou não ?
Oque exatamente vc não sabe fazer ?