2012-08-26 96 views
2

我已经使用各种脚本,并试图对其进行修改,以适应我的数据库,但是这是我想达到级联下拉框

MySQL数据库是什么,单表“卡洛斯”

我想把他们放在一起用户将从数据库中选择“制作”的表单,然后过滤第二个下拉框中的“模型”,然后第三个下拉框将过滤出该特定模型的不同变体。

我的数据库有田品牌,型号和版本

Box 1: SELECT DISTINCT Make FROM Carlist SORT BY Make 
Box 2: SELECT Distinct Model FROM Carlist WHERE Make=$Make SORT BY Model 
Box 3: SELECT DISTINCT Version FROM Carlist WHERE Make=$Make AND Model=$Model SORT BY Version 

我也希望把在第二和第三个箱子没能入选,直到前面的盒子已经

机制我遇到的所有脚本都在数据库中使用多个表,目前我的数据库有超过1500条记录。

如果任何人有任何这有用的链接或建议将是巨大的,因为我提到试图修改没有成功其他国家人民的脚本,但这些脚本被设计为多个表

回答

0

假设你想要填充HTML表单,请在每次选择后使用Ajax从数据库中获取适当的下拉框值。

+0

嗨亚历克斯,感谢您的回复,所有的例子似乎有多个表,但这是困难的,因为在数据库中的记录,你有什么例子吗? –

0

得到了一个解决方案,代码如下:

<?php 
/* Written for Khaoskreations 2010-06-13 */ 

//db connect code 
require "config.php"; // Your Database details 


$query = "SELECT * FROM Carlist "; 
$result = mysql_query($query); 

//==============================================================================build arrays from db 
$Make = array(); 
$Model = array(); 
$Version = array(); 

if (!$result) echo "Error: ".mysql_error(); 
else { 
    $Make_group = ""; 
    $Model_group = ""; 
    $num = mysql_num_rows($result); 

    for ($i = 0;$i<$num;$i++) { 
     $r = mysql_fetch_array($result); 

     if ($r['Make'] != $Make_group) { 
      $Make[$r['Make']] = $r['Make']; 
      $Model[$r['Make']][$r['Model']] = $r['Model']; 
      $Version[$r['Make']][$r['Model']][$r['Version']] = $r['Version']; 

      $Make_group = $r['Make']; 
      $Model_group = $r['Make']; 
     } else if ($r['Model'] != $Model_group) { 
      $Model[$r['Make']][$r['Model']] = $r['Model']; 
      $Version[$r['Make']][$r['Model']][$r['Version']] = $r['Version']; 

      $Model_group = $r['Make']; 
     } else { 
      $Version[$r['Make']][$r['Model']][$r['Version']] = $r['Version']; 
     } 
    } 
} 

//==============================================================================create scripts 
$script = "\n<script type='text/javascript'>\n"; 
//build last name array 
$script .= "var Make = new Array("; 
$list = ""; 
foreach ($Make as $key => $val) { 
    $list .= " \"".$val."\","; 
    //echo $val ."<br />"; 
} 
$list = substr($list, 0, -1); 
$list .= ");\n"; 
$script .= $list; 
$list = ""; 
//build Model array 
$script .= "\nvar Model = new Array();"; 
foreach ($Model as $Maken => $fary) { 
    $list .= "\nModel[\"".$Maken."\"] = new Array("; 
    foreach ($fary as $key => $value) { 
     $list .= " \"". $value . "\","; 
    } 
    $list = substr($list, 0, -1); 
    $list .= ");"; 
} 

$script .= $list; 
$list = ""; 
//build Version array 
$list = "\nvar Version = new Array();"; 
foreach ($Version as $Maken => $fary) { 
    $list .= "\nVersion[\"".$Maken."\"] = new Array();"; 
    foreach ($fary as $Modeln => $aary) { 
     $list .= "\nVersion[\"".$Maken."\"][\"".$Modeln."\"] = new Array("; 
     foreach ($aary as $key => $value) { 
      $list .= " \"" . $value . "\","; 
     } 
     $list = substr($list, 0, -1); 
     $list .= ");"; 
    } 
} 
$script .= $list; 

//script functions to update tiers 

$script .= <<< EOSCRIPT 


function resetForm(theForm) { 
    theForm.Makes.options[0] = new Option("--- Select Make ---", ""); 
    for (var i=0; i<Make.length; i++) { 
     theForm.Makes.options[i+1] = new Option(Make[i], Make[i]); 
    } 
    theForm.Makes.options[0].selected = true; 

    theForm.Models.options[0] = new Option("--- Select Model ---", ""); 
    theForm.Models.options[0].selected = true; 
    theForm.Version.options[0] = new Option("--- Select Version ---", ""); 
    theForm.Version.options[0].selected = true; 
    document.getElementById("selectbox").innerHTML = ""; 
} 

function reloadForm(theForm,Manufacturer,product,specific) { 
    theForm.Makes.options[0] = new Option("--- Select Version ---", ""); 
    for (var i=0; i<Make.length; i++) { 
     theForm.Makes.options[i+1] = new Option(Make[i], Make[i]); 
     if (Manufacturer == Make[i]) theForm.Makes.options[i+1].selected = true; 
    } 
    document.getElementById("selectbox").innerHTML = "here"; 

    var fn = Model[Manufacturer]; 

    theForm.Models.options.length = 0; 
    for (var i=0; i<fn.length; i++) { 
     theForm.Models.options[i] = new Option(fn[i], fn[i]); 
     if (product == fn[i]) { 
      theForm.Models.options[i].selected = true; 
     } 
    } 

    var Versions = Version[Manufacturer][product]; 

    theForm.Version.options.length = 0; 
    for (var i=0; i<Versions.length; i++) { 
     theForm.Version.options[i] = new Option(Versions[i], Versions[i]); 
     if (specific == Versions[i][0]) { 
      theForm.Version.options[i].selected = true; 
     } 
    } 
    document.getElementById("selectbox").innerHTML = "You selected person #"+specific; 
} 

function updateproducts(theForm) { 
    var lname = theForm.Makes.options[theForm.Makes.options.selectedIndex].value; 
    var fnames = Model[lname]; 

    theForm.Models.options.length = 0; 
    for (var i=0; i<fnames.length; i++) { 
     theForm.Models.options[i] = new Option(fnames[i], fnames[i]); 
    } 

    var findex = theForm.Models.options[theForm.Models.options.selectedIndex].value; 
    var Versions = Version[lname][findex]; 

    theForm.Version.options.length = 0; 
    for (var i=0; i<Versions.length; i++) { 
     theForm.Version.options[i] = new Option(Versions[i], Versions[i]); 
    } 
    theForm.Version.options[0].selected = true; 
} 

function updateVersion(theForm) { 
    var lname = theForm.Makes.options[theForm.Makes.options.selectedIndex].value; 
    var findex = theForm.Models.options[theForm.Models.options.selectedIndex].value; 
    var Versions = Version[lname][findex]; 

    theForm.Version.options.length = 0; 
    for (var i=0; i<Versions.length; i++) { 
     theForm.Version.options[i] = new Option(Versions[i], Versions[i]); 
    } 
    theForm.Version.options[0].selected = true; 
} 

</script> 

EOSCRIPT; 

$reload_script = ""; 
if ($_POST['Makes'] != "" && $_POST['Models'] != "") { 
    $reload_script .= "<script type='text/javascript'> " 
      ."reloadForm(document.vehicleform,'".$_POST['Makes']."','".$_POST['Models']."',".$_POST['Version'].");" 
      ."</script>"; 
} else { 
    $reload_script .= "<script type='text/javascript'>" 
      ."resetForm(document.vehicleform);" 
      ."</script>"; 
} 

//============================================================================== build page 


$page = <<< EOPAGE 
<html> 
    <head> 
     {$script} 
    </head> 
    <body> 
     <form method="post" action="test3.php" name='vehicleform'> 
      <select name='Makes' onchange="updateproducts(this.form)"></select><BR> 
      <select name="Models" onchange="updateVersion(this.form)"></select><BR> 
      <select name="Version"></select> 
      <input type='button' value='Reset' onclick='resetForm(document.vehicleform)'/> 
      <input type='submit' value='Reload'/> 
     </form> 
     <div id='selectbox'></div> 
     {$reload_script} 
    </body> 
</html> 

EOPAGE; 

echo $page; 

?>