Мой скрипт на mootools ver 1.1
проверено на ие 6-8, фф, хроме, опере. Везде работает.
В моем примере от бренда зависит тип продукции. Делаем так:
Генерация первоначального ХТМЛ (это кусок функции генерации большой формы
PHP:
$output .= " <tr>";
$output .= " <td>Бренд</td>";
$output .= " <td>";
$output .= " <select name='WhereBuySelectBrand' id='WhereBuySelectBrand' onchange=\"wbChangeDirect()\">";
$output .= " <option value =\"0\" selected = \"selected\">Все...</option>";
$SQL = "SELECT w.ID, w.Brand FROM wbBrand w ORDER BY w.Brand";
$mySQL = new mysql();
$mySQL->connect();
$mySQL->tmpl = $SQL;
$mySQL->args = array();
$mySQL->query(__FILE__,__LINE__);
$DataSource = $mySQL->result;
$mySQL->close();
while ($row=mysql_fetch_array($DataSource)){
$et_Value = $row[Brand];
$et_ID = $row[ID];
$output .= "<option value =\"".$et_ID."\">".cnUTF($et_Value)."</option>";
}
$output .= "</select>";
$output .= " </td>";
$output .= " </tr>";
$output .= " <tr>";
$output .= " <td>Направление</td>";
$output .= " <td>";
$output .= " <div id='WhereBuySelectDirectDiv'><select name='WhereBuySelectDirect' id='WhereBuySelectDirect'>";
$output .= " <option value =\"0\" selected = \"selected\">Укажите направление...</option>";
$SQL = "SELECT w.ID, w.Direct FROM wbDirect w ORDER BY w.Direct";
$mySQL = new mysql();
$mySQL->connect();
$mySQL->tmpl = $SQL;
$mySQL->args = array();
$mySQL->query(__FILE__,__LINE__);
$DataSource = $mySQL->result;
$mySQL->close();
while ($row=mysql_fetch_array($DataSource)){
$et_Value = $row[Direct];
$et_ID = $row[ID];
$output .= "<option value =\"".$et_ID."\">".cnUTF($et_Value)."</option>";
}
$output .= "</select></div>";
$output .= " </td>";
$output .= " </tr>";
За выбор какого либо элемента отвечает яваскрипт функция wbChangeDirect();
Чуть дальше описываем функцию wbChangeDirect()
PHP:
$output .= "<script>";
$output .= "function wbChangeDirect() {\n";
$output .= "var req = new Ajax('http://www.xxxxx.eu/class.changedirect.php?id='+$('WhereBuySelectBrand').value, {method:'get',update:$('WhereBuySelectDirectDiv') , data: 'id1=ddd'}).request();";
$output .= "}";
$output .= "</script>";
Файл class.changedirect.php отвечает за генерацию нового списка в подчиненный select.
Текст файла class.changedirect.php
PHP:
<?
require_once("configdb.inc.php");
require_once("mysql.inc.php");
header('Content-Type: text/html;charset=utf-8');
if(isset($_GET['id'])) $id = (int)$_GET['id'];
if ($id == 0) {
$output = " <select name='WhereBuySelectDirect' id='WhereBuySelectDirect'> <option value =\"0\" selected = \"selected\">Укажите направление...</option>";
$SQL = "SELECT w.ID, w.Direct FROM wbDirect w ORDER BY w.Direct";
$mySQL = new mysql();
$mySQL->connect();
$mySQL->tmpl = $SQL;
$mySQL->args = array();
$mySQL->query(__FILE__,__LINE__);
$DataSource = $mySQL->result;
$mySQL->close();
while ($row=mysql_fetch_array($DataSource)){
$et_Value = $row[Direct];
$et_ID = $row[ID];
$output .= "<option value =\"".$et_ID."\">".cnUTF($et_Value)."</option>";
}
$output .="</select>";
} else {
$output = "<select name='WhereBuySelectDirect' id='WhereBuySelectDirect'><option value ='0' selected = 'selected'>Укажите направление...</option>\n";
$SQL = "SELECT w.ID, d.Direct FROM wbBrandDirect w LEFT JOIN wbDirect d ON w.DirectID = d.ID WHERE w.BrandID = $id";
$mySQL = new mysql();
$mySQL->connect();
$mySQL->tmpl = $SQL;
$mySQL->args = array();
$mySQL->query(__FILE__,__LINE__);
$DataSource = $mySQL->result;
$mySQL->close();
while ($row=mysql_fetch_array($DataSource)){
$et_Value = $row[Direct];
$et_ID = $row[ID];
$output .= "<option value ='".$et_ID."'>".cnUTF($et_Value)."</option>\n";
}
$output .="</select>";
}
echo $output;
?>