Bruness Posted July 8, 2006 at 08:27 PM Report #37123 Posted July 8, 2006 at 08:27 PM 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>
unsignedint Posted August 21, 2006 at 10:44 AM Report #45547 Posted August 21, 2006 at 10:44 AM 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now