На сайте в админке на странице добавления файла стоит динамический select: сначала выбираем раздел файла, после чего подгружаются категории этого раздела, выбираем раздел - подгружаются подкатегории выбранной категории. Затем выбираем подкатегорию, вносим данные файла и отправляем в базу. Все данные селектов берутся из базы, кроме разделов, их 4. Вот исходный код вывода селектов и скрипт: new_file.php Код (Text): ........................... ................................. ............................. <html> <head> .................................. <script type="text/javascript" src="js/jquery-1.3.1.js"></script> <script type="text/javascript" src="js/jquery.depend.js"></script> <script type="text/javascript"> jQuery(function($){ $('#cat').depend({ parent:'division'}); $('#subcat').depend({ parent:'cat'}); }); </script> </head> <body > ..................................... ...................................... .................................... <form name="add_file" method="post" action="add_file.php"> <p class="admin">Добавление нового файла</p> <p><label>Раздел</label><br /> <select name="division" id="division" class="selectable clasamea"> <option value="">-- select --</option> <option value="photoshop" title="photoshop">photoshop</option> <option value="dreamweaver" title="dreamweaver">dreamweaver</option> <option value="flash" title="flash">flash</option> <option value="fireworks" title="fireworks">fireworks</option> </select></p> <p><label>Категория</label><br /> <select name="cat" id="cat" class="selectable"> <option value="">-- select --</option> <? /*-------------Вывод категорий---------------*/ $result_photo = mysql_query ("SELECT DISTINCT cat,division FROM subcat_files",$db); /*Выборка данных из базы*/ $myrow_photo = mysql_fetch_array ($result_photo); do { printf ("<option value='%s' class='%s' title='%s'>%s</option>",$myrow_photo["cat"],$myrow_photo["division"],$myrow_photo["cat"],$myrow_photo["cat"]); } while ($myrow_photo = mysql_fetch_array ($result_photo)); ?> </select></p> <p><label>Подкатегория</label><br /> <select name="subcat" id="subcat" class="selectable"> <option value="">-- select --</option> <? $result_subcat = mysql_query ("SELECT cat,id,title FROM subcat_files",$db); /*Выборка данных из базы*/ $myrow_subcat = mysql_fetch_array ($result_subcat); do { printf ("<option value='%s' class='%s'>%s</option>",$myrow_subcat["id"],$myrow_subcat["cat"],$myrow_subcat["title"]); } while ($myrow_subcat = mysql_fetch_array ($result_subcat)); ?> </select></p> ........................ ....................... ....................... jquery_depend.js Код (Text): // JavaScript Document (function($) { $.fn.depend = function(options) { this.find('option').hide(); this.find('option:first').show(); var current = this; $('#' + options.parent).find('option:first').each(function(){ $(this).click(function(){ current.find('option:not(:first)').hide(); current.find('option:first').attr({selected:'selected'}); current.find('option:first').click(); }) }) $('#' + options.parent).find('option:not(:first)').each(function(){ var cur = $(this); $(this).click(function(){ current.find('option:not(:first)').hide(); var text = cur.text().toLowerCase(); current.find('option' + '.' + text).show(); current.find('option:first').attr({selected:'selected'}); current.find('option:first').click(); }) }) } })(jQuery); Все работает отлично. Есть в админке еще страница редактирования файла. Вылазит та же формочка, но уже заполненная. Решил приделать туда тоже подобный динамический select для того, чтобы можно было файл переместить в другой раздел, категорию или подкатегорию. Вставил туда селекты. Из базы корректно достаются раздел, категория и подкатегория редактируемого файла и вставляются в селекты и выбраны по умолчанию. Вроде бы все работает, но вот с содержимым селекта хрень какая-то: 1. При выборе 1го раздела возможно выбрать только первую категорию и первую подкатегорию первого раздела 2. При выборе других разделов возможно выбрать категории и подкатегории выбранного раздела плюс первую категорию и первую подкатегорию первого раздела Скрипт используется тот же, вот код php файла: edit_file.php Код (Text): ....................... ............................... if (isset ($_GET['id'])) {$id = $_GET['id']; }?> .................................................... ..................................... <html> <head> ..................................... ........................................ <script type="text/javascript" src="js/jquery-1.3.1.js"></script> <script type="text/javascript" src="js/jquery.depend1.js"></script> <script type="text/javascript"> jQuery(function($){ $('#cat').depend({ parent:'division'}); $('#subcat').depend({ parent:'cat'}); }); </script> </head> <body > if (!isset($id)) /*Если не существует параметра id в адресе страницы, то...*/ { echo ("<p class='admin'>Редактирование файла</p><p>Выберите файл для редактирования:</p>"); /*Photoshop*/ $result = mysql_query ("SELECT id,title,date FROM files_demo WHERE division='photoshop' ORDER BY date DESC"); if (!$result) {echo "<br><br><br><br><p align='center'><font color='red'>Запрос на выборку данных из базы не прошел.<br><br>Напишите об этом администратору</font> <font color='blue'>zevilz@mail.ru</font></p><br> <p><br><br><strong>Код ошибки:</strong></p>"; exit (mysql_error()); } if (mysql_num_rows($result) > 0) {$myrow = mysql_fetch_array ($result);} else {echo "<p>Информация по запросу не может быть извлечена - в запрашиваемой таблице базы нет записей.</p>"; exit ();} /*Защита от ошибок*/ echo ("<p style='text-align:center;color:blue;'>Photoshop</p>"); /*Вывод списка файлов для редактирования*/ do { printf ("<p><a href='edit_file.php?id=%s'><span class='leftside_add'>(%s)</span> %s</a></p>",$myrow["id"],$myrow["date"],$myrow["title"]); } while ($myrow = mysql_fetch_array ($result)); /*Dreamweaver*/ $result = mysql_query ("SELECT id,title,date FROM files_demo WHERE division='dreamweaver' ORDER BY date DESC"); if (!$result) {echo "<br><br><br><br><p align='center'><font color='red'>Запрос на выборку данных из базы не прошел.<br><br>Напишите об этом администратору</font> <font color='blue'>zevilz@mail.ru</font></p><br> <p><br><br><strong>Код ошибки:</strong></p>"; exit (mysql_error()); } if (mysql_num_rows($result) > 0) {$myrow = mysql_fetch_array ($result);} else {echo "<p>Информация по запросу не может быть извлечена - в запрашиваемой таблице базы нет записей.</p>"; exit ();} /*Защита от ошибок*/ echo ("<p style='text-align:center;color:blue;'>Dreamweaver</p>"); /*Вывод списка файлов для редактирования*/ do { printf ("<p><a href='edit_file.php?id=%s'><span class='leftside_add'>(%s)</span> %s</a></p>",$myrow["id"],$myrow["date"],$myrow["title"]); } while ($myrow = mysql_fetch_array ($result)); /*Flash*/ $result = mysql_query ("SELECT id,title,date FROM files_demo WHERE division='flash' ORDER BY date DESC"); if (!$result) {echo "<br><br><br><br><p align='center'><font color='red'>Запрос на выборку данных из базы не прошел.<br><br>Напишите об этом администратору</font> <font color='blue'>zevilz@mail.ru</font></p><br> <p><br><br><strong>Код ошибки:</strong></p>"; exit (mysql_error()); } if (mysql_num_rows($result) > 0) {$myrow = mysql_fetch_array ($result);} else {echo "<p>Информация по запросу не может быть извлечена - в запрашиваемой таблице базы нет записей.</p>"; exit ();} /*Защита от ошибок*/ echo ("<p style='text-align:center;color:blue;'>Flash</p>"); /*Вывод списка файлов для редактирования*/ do { printf ("<p><a href='edit_file.php?id=%s'><span class='leftside_add'>(%s)</span> %s</a></p>",$myrow["id"],$myrow["date"],$myrow["title"]); } while ($myrow = mysql_fetch_array ($result)); /*Fireworks*/ $result = mysql_query ("SELECT id,title,date FROM files_demo WHERE division='fireworks' ORDER BY date DESC"); if (!$result) {echo "<br><br><br><br><p align='center'><font color='red'>Запрос на выборку данных из базы не прошел.<br><br>Напишите об этом администратору</font> <font color='blue'>zevilz@mail.ru</font></p><br> <p><br><br><strong>Код ошибки:</strong></p>"; exit (mysql_error()); } if (mysql_num_rows($result) > 0) {$myrow = mysql_fetch_array ($result);} else {echo "<p>Информация по запросу не может быть извлечена - в запрашиваемой таблице базы нет записей.</p>"; exit ();} /*Защита от ошибок*/ echo ("<p style='text-align:center;color:blue;'>Fireworks</p>"); /*Вывод списка файлов для редактирования*/ do { printf ("<p><a href='edit_file.php?id=%s'><span class='leftside_add'>(%s)</span> %s</a></p>",$myrow["id"],$myrow["date"],$myrow["title"]); } while ($myrow = mysql_fetch_array ($result)); } else /*Если параметр id существует в адресе страницы, то...*/ { $result_id = mysql_query ("SELECT * FROM files_demo WHERE id=$id"); if (!$result_id) {echo "<br><br><br><br><p align='center'><font color='red'>Запрос на выборку данных из базы не прошел.<br><br>Напишите об этом администратору</font> <font color='blue'>zevilz@mail.ru</font></p><br> <p><br><br><strong>Код ошибки:</strong></p>"; exit (mysql_error()); } if (mysql_num_rows($result_id) > 0) {$myrow_id = mysql_fetch_array ($result_id);} else {echo "<p>Информация по запросу не может быть извлечена - в запрашиваемой таблице базы нет записей.</p>"; exit ();} /*Защита от ошибок*/ echo "<p class='admin'>Редактирование файла</p> <form name='update_file' method='post' action='update_file.php'>"; /*Вывод разделов в цикле с автоматическим выбором реального раздела редактируемого файла*/ $result_div = mysql_query ("SELECT DISTINCT division FROM subcat_files"); if (!$result_div) {echo "<br><br><br><br><p align='center'><font color='red'>Запрос на выборку данных из базы не прошел.<br><br>Напишите об этом администратору</font> <font color='blue'>zevilz@mail.ru</font></p><br> <p><br><br><strong>Код ошибки:</strong></p>"; exit (mysql_error()); } if (mysql_num_rows($result_div) > 0) {$myrow_div = mysql_fetch_array ($result_div);} else {echo "<p>Информация по запросу не может быть извлечена - в запрашиваемой таблице базы нет записей.</p>"; exit ();} /*Защита от ошибок*/ echo "<p>Выберите раздел<br><select name='division' id='division' class='selectable clasamea'>"; do { if ($myrow_id['division'] == $myrow_div['division']) {printf ("<option value='%s' title='%s' selected>%s</option>",$myrow_div["division"],$myrow_div["division"],$myrow_div["division"]);} /*default*/ else {printf ("<option value='%s' title='%s'>%s</option>",$myrow_div["division"],$myrow_div["division"],$myrow_div["division"]); } } while ($myrow_div = mysql_fetch_array ($result_div)); echo "</select></p>"; /*Вывод категорий в цикле с автоматическим выбором реальной категории редактируемого файла*/ $result_cat = mysql_query ("SELECT DISTINCT cat,division FROM subcat_files"); if (!$result_cat) {echo "<br><br><br><br><p align='center'><font color='red'>Запрос на выборку данных из базы не прошел.<br><br>Напишите об этом администратору</font> <font color='blue'>zevilz@mail.ru</font></p><br> <p><br><br><strong>Код ошибки:</strong></p>"; exit (mysql_error()); } if (mysql_num_rows($result_cat) > 0) {$myrow_cat = mysql_fetch_array ($result_cat);} else {echo "<p>Информация по запросу не может быть извлечена - в запрашиваемой таблице базы нет записей.</p>"; exit ();} /*Защита от ошибок*/ echo "<p>Выберите категорию<br><select name='cat' id='cat' class='selectable'>"; do { if ($myrow_id['cat'] == $myrow_cat['cat']) {printf ("<option value='%s' class='%s' title='%s' selected>%s</option>",$myrow_cat["cat"],$myrow_cat["division"],$myrow_cat["cat"],$myrow_cat["cat"]);} /*default*/ else {printf ("<option value='%s' class='%s' title='%s'>%s</option>",$myrow_cat["cat"],$myrow_cat["division"],$myrow_cat["cat"],$myrow_cat["cat"]); } } while ($myrow_cat = mysql_fetch_array ($result_cat)); echo "</select></p>"; /*Вывод подкатегорий в цикле с автоматическим выбором реальной подкатегории редактируемого файла*/ $result_subcat = mysql_query ("SELECT * FROM subcat_files"); if (!$result_subcat) {echo "<br><br><br><br><p align='center'><font color='red'>Запрос на выборку данных из базы не прошел.<br><br>Напишите об этом администратору</font> <font color='blue'>zevilz@mail.ru</font></p><br> <p><br><br><strong>Код ошибки:</strong></p>"; exit (mysql_error()); } if (mysql_num_rows($result_subcat) > 0) {$myrow_subcat = mysql_fetch_array ($result_subcat);} else {echo "<p>Информация по запросу не может быть извлечена - в запрашиваемой таблице базы нет записей.</p>"; exit ();} /*Защита от ошибок*/ echo "<p>Выберите подкатегорию<br><select name='subcat' id='subcat' class='selectable'>"; do { if ($myrow_id['subcat'] == $myrow_subcat['id']) {printf ("<option value='%s' class='%s' selected>%s</option>",$myrow_subcat["id"],$myrow_subcat["cat"],$myrow_subcat["title"]);} /*default*/ else {printf ("<option value='%s' class='%s'>%s</option>",$myrow_subcat["id"],$myrow_subcat["cat"],$myrow_subcat["title"]); } } while ($myrow_subcat = mysql_fetch_array ($result_subcat)); echo "</select></p>"; .................................... ...................................... ...................................... ...................................... Перековырял весь код, но понять не могу, в чем проблема:cry: Скорее всего проблема в скрипте Ссылки на примеры (работает только в Firefox): http://adobe-master.com/demo_select_new_file.php http://adobe-master.com/demo_select_edit_file.php