Jump to content

Recommended Posts

Posted

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.

http://img486.imageshack.us/img486/95/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>

  • 1 month later...
Posted

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.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.