• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Bruness

DropDown Lista com Sql

2 mensagens neste tópico

Boas estou a precisar de uma ajuda para solucionar um problema com um script que estou a tentar fazer.

É assim tenho uma tabela na minha base de dados com os seguintes dados.

bd3bk.jpg

O que o script deverá fazer é o seguinte:

Motrar 2 menos DropDown ("select") em que no primeiro ele deverá listar apenas as marcas dos carros.

Não mostrando marcas repetidas.

Neste caso deverá mostrar:

Alfa Romeo

Audi

Citroen

O segundo Select ou DropDown deverá mostrar as marcas dos carros de acordo com o escolhido no meno anteriror.

Caso se seleccione: Alfa Romeo deverá mostrar:

Alfa 159

Alfa 164

etc...

O que se passa é que não estou a conseguir fazer com o que o segundo DropDown mostre esses valores.

O código que estou a usar é este:


<?php
//***************************************
// This is downloaded from www.plus2net.com //
/// You can distribute this code with the link to www.plus2net.com ///
//  Please don't  remove the link to www.plus2net.com ///
// This is for your learning only not for commercial use. ///////
//The author is not responsible for any type of loss or problem or damage on using this script.//
/// You can use it at your own risk. /////
//*****************************************

$dbservertype='mysql';
$servername='localhost';
// username and password to log onto db server
$dbusername='root';
$dbpassword='';
// name of database
$dbname='stand_carros';

////////////////////////////////////////
////// DONOT EDIT BELOW  /////////
///////////////////////////////////////
connecttodb($servername,$dbname,$dbusername,$dbpassword);
function connecttodb($servername,$dbname,$dbuser,$dbpassword)
{
global $link;
$link=mysql_connect ("$servername","$dbuser","$dbpassword");
if(!$link){die("Could not connect to MySQL");}
mysql_select_db("$dbname",$link) or die ("could not open db".mysql_error());
}
?>

<!doctype html public "-//w3c//dtd html 3.2//en">

<html>

<head>
<title>Multiple drop down list box from plus2net</title>
<meta name="GENERATOR" content="Arachnophilia 4.0">
<meta name="FORMATTER" content="Arachnophilia 4.0">
<SCRIPT language=JavaScript>
function reload(form)
{
var val=form.cat.options[form.cat.options.selectedIndex].value;
self.location='dd.php?cat=' + val ;
}

</script>
</head>

<body>
<?


///////// Getting the data from Mysql table for first list box//////////
$quer2=mysql_query("SELECT DISTINCT marca FROM carros");
///////////// End of query for first list box////////////

/////// for second drop down list we will check if category is selected else we will display all the subcategory///// 
if(isset($cat) and strlen($cat) > 0){
$quer=mysql_query("SELECT modelo FROM carros where marca=$cat");
}else{$quer=mysql_query("SELECT modelo FROM carros"); }
////////// end of query for second subcategory drop down list box ///////////////////////////

echo "<form method=post name=f1 action='dd-check.php'>";
/// Add your form processing page address to action in above line. Example  action=dd-check.php////
//////////        Starting of first drop downlist /////////
echo "<select name='cat' onchange=\"reload(this.form)\"><option value=''>Select one</option>";
while($noticia2 = mysql_fetch_array($quer2)) { 
if($noticia2['cid']==@$cat){echo "<option selected value='$noticia2[cid]'>$noticia2[marca]</option>"."<BR>";}
else{echo  "<option value='$noticia2[cid]'>$noticia2[marca]</option>";}
}
echo "</select>";
//////////////////  This will end the first drop down list ///////////

//////////        Starting of second drop downlist /////////
echo "<select name='subcat'><option value=''>Select one</option>";
while($noticia = mysql_fetch_array($quer)) { 
echo  "<option value='$noticia[modelo]'>$noticia[modelo]</option>";
}
echo "</select>";
//////////////////  This will end the second drop down list ///////////
//// Add your other form fields as needed here/////
echo "<input type=submit value=Submit>";
echo "</form>";
?>


</body>

</html>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois bem o que desejas fazer é executar duas acções distintas na mesma pagina ou seja.

Numa primeira fase queres popular uma ComboBox com a lista univoca de todos os carros que tens na base de dados, e numa segunda fase, dependente do carros que o utilizador escolha, queres popular uma segundo ComboBox. Pois bem como podes ver da maneira como te falei são duas consultas efectuadas a base de dados em momentos separados, uma das tecnicas mais simples de aplicares aqui é usares o Ajax para te resolver o problema.

Ou uma solução mais simples, é usars duas paginas separadas e fazeres algo de tipo um wizard, numa pagina escolhe-se os carros, e noutra escolhe-se o segundo item.

Claro que existe a solução de ainda carregares tudo para a mesma pagina como tens, e usares apenas javascrip para te fazer a filtragem.

PS: Mas acho q a solução do Ajax é a mais simples, vê este topico de como usar Ajax que percebes logo a facilidade

http://www.portugal-a-programar.pt/index.php?showtopic=4101

Caso necessites de um exemplo orientado ao teu problema avisa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora