Имеется сайт с 4мя разделами на PHP с использованием базы данных MySQL. В каждом разделе подгружаются из базы категории, в которые подгружаются тоже из базы подкатегории и в них уже находятся файлы. Необходимо создать форму добавления файла и форму редактирования файла с динамическими select'ами. Причем при редактировании файла необходимо, чтобы select'ы с разделом, категории и подкатегории были выбраны те, которые приписаны к файлу, и можно было бы переместить например файл в другую категорию или подкатегорию. Обработка формы идет через внешний обработчик php методом POST. Каким способом создать такой тройной динамический select с подключаемой базой MySQL? P.S. В скриптах я почти ноль
Вот как я пробовал: new_file.php Код (Text): <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <link href="../style.css" rel="stylesheet" type="text/css"> <script type="text/javascript" src="js/jquery-1.3.1.js"></script> <script type="text/javascript"> (function($){ // очищаем select $.fn.clearSelect = function() { return this.each(function(){ if(this.tagName=='SELECT') { this.options.length = 0; $(this).attr('disabled','disabled'); } }); } // заполняем select $.fn.fillSelect = function(dataArray) { return this.clearSelect().each(function(){ if(this.tagName=='SELECT') { var currentSelect = this; $.each(dataArray,function(index,data){ var option = new Option(data.text,data.value); if($.support.cssFloat) { currentSelect.add(option,null); } else { currentSelect.add(option); } }); } }); } })(jQuery); </script> <script type="text/javascript"> $(document).ready(function(){ // выбор категории function adjustCategory(){ var divisionValue = $('#division').val(); var tmpSelect = $('#category'); if(divisionValue.length == 0) { tmpSelect.attr('disabled','disabled'); tmpSelect.clearSelect(); adjustSubcat(); } else { $.getJSON('cascadeSelectCategory.php',{division:divisionValue},function(data) { tmpSelect.fillSelect(data).attr('disabled',''); adjustSubcat(); }); } }; // выбор подкатегории function adjustSubcat(){ var divisionValue = $('#division').val(); var categoryValue = $('#category').val(); var tmpSelect = $('#subcat'); if(divisionValue.length == 0||categoryValue.length == 0) { tmpSelect.attr('disabled','disabled'); tmpSelect.clearSelect(); } else { $.getJSON('cascadeSelectSubcat.php',{division:divisionValue,category:categoryValue},function(data) { tmpSelect.fillSelect(data).attr('disabled',''); }); } }; $('#division').change(function(){ adjustCategory(); }).change(); $('#category').change(adjustSubcat); $('#subcat').change(function(){ if($(this).val().length != 0) { alert('Выбор сделан!'); } }); }); </script> </head> <body > <label>Раздел</label><br /> <select id="division"> <option value="">Выбор раздела</option> <option value="photoshop">photoshop</option> <option value="dreamweaver">dreamweaver</option> <option value="flash">flash</option> <option value="fireworks">fireworks</option> </select> </p> <p> <label>Категория</label><br /> <select id="category" disabled="disabled"></select> </p> <p> <label>Подкатегория</label><br /> <select id="subcat" disabled="disabled"></select> </p> </body> </html> cascadeSelectCategory.php Код (Text): <?php header('Content-Type: text/html; charset=windows-1251'); if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') { switch($_GET['division']) { case 'photoshop': print '[{value:"",text:"-----"}'; $result = mysql_query ("SELECT DISTINCT cat FROM cat_files_demo WHERE division='photoshop'",$db); $myrow = mysql_fetch_array ($result); /*Вывод выпадающего списка с категориями*/ do { printf (",{value:'%s',text:'%s'}",$myrow["cat"],$myrow["cat"]); } while ($myrow = mysql_fetch_array ($result)); print ']'; break; case 'dreamweaver': print '[{value:"",text:"-----"}'; $result = mysql_query ("SELECT cat,id FROM cat_files_demo WHERE division='dreamweaver'",$db); $myrow = mysql_fetch_array ($result); /*Вывод выпадающего списка с категориями*/ do { printf (",{value:'%s',text:'%s'}",$myrow["cat"],$myrow["cat"]); } while ($myrow = mysql_fetch_array ($result)); print ']'; break; case 'flash': print '[{value:"",text:"-----"}'; $result = mysql_query ("SELECT cat,id FROM cat_files_demo WHERE division='flash'",$db); $myrow = mysql_fetch_array ($result); /*Вывод выпадающего списка с категориями*/ do { printf (",{value:'%s',text:'%s'}",$myrow["cat"],$myrow["cat"]); } while ($myrow = mysql_fetch_array ($result)); print ']'; break; case 'fireworks': print '[{value:"",text:"-----"}'; $result = mysql_query ("SELECT cat,id FROM cat_files_demo WHERE division='fireworks'",$db); $myrow = mysql_fetch_array ($result); /*Вывод выпадающего списка с категориями*/ do { printf (",{value:'%s',text:'%s'}",$myrow["cat"],$myrow["cat"]); } while ($myrow = mysql_fetch_array ($result)); print ']'; break; default: print '[{value:"",text:"---"}]'; break; } } ?> cascadeSelectSubcat.php Код (Text): <?php header('Content-Type: text/html; charset=windows-1251'); if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') { if($_GET['division']==photoshop) { switch($_GET['category']) { case $result_photo = mysql_query ("SELECT cat FROM cat_files_demo WHERE division='photoshop'",$db); $myrow_photo = mysql_fetch_array ($result_photo); /*Вывод выпадающего списка с категориями*/ do { printf ("'%s': ",$myrow_photo["cat"]); printf ("'[{value:'',text:'---'}"); $result_photo_sub = mysql_query ("SELECT title FROM cat_files_demo WHERE cat='$myrow_photo[cat]'",$db); $myrow_photo_sub = mysql_fetch_array ($result_photo_sub); /*Вывод выпадающего списка с категориями*/ do { printf (",{value:'%s',text:'%s'",$myrow_photo_sub["title"],$myrow_photo_sub["title"]); } while ($myrow_photo_sub = mysql_fetch_array ($result_photo_sub)); printf ("]' break;"); } while ($myrow_photo = mysql_fetch_array ($result_photo)); default: print '[{value:"",text:"fuck photoshop"}]'; break; } } else { print '[{value:"",text:"fuck"}]'; } } ?> Категории выводятся, а подкатегории нет((( Вот исходник cascadeSelectSubcat.php, к которому я подключал базу: Код (Text): <?php header('Content-Type: text/html; charset=utf-8'); if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') { if($_GET['country']==1) { switch($_GET['auto']) { case '1': print '[{value:"",text:"Выбрать модель"},{value:"1",text:"A4"},{value:"2",text:"Q7"},{value:"3",text:"TT"}]'; break; case '2': print '[{value:"",text:"Выбрать модель"},{value:"1",text:"6ER"},{value:"2",text:"M"},{value:"3",text:"X6"}]'; break; case '3': print '[{value:"",text:"Выбрать модель"},{value:"1",text:"Astra"},{value:"2",text:"Corsa"},{value:"3",text:"Vectra"}]'; break; default: print '[{value:"",text:"Выбрать модель"}]'; break; } } elseif($_GET['country']==2) { switch($_GET['auto']) { case '1': print '[{value:"",text:"Выбрать модель"},{value:"1",text:"Matiz"},{value:"2",text:"Nexia"}]'; break; case '2': print '[{value:"",text:"Выбрать модель"},{value:"1",text:"Accent"},{value:"2",text:"Elantra"},{value:"3",text:"Sonata"}]'; break; case '3': print '[{value:"",text:"Выбрать модель"},{value:"1",text:"Carnival"},{value:"2",text:"Picanto"},{value:"3",text:"Spectra"}]'; break; default: print '[{value:"",text:"Выбрать модель"}]'; break; } } elseif($_GET['country']==3) { switch($_GET['auto']) { case '1': print '[{value:"",text:"Выбрать модель"},{value:"1",text:"Accord"},{value:"2",text:"Civic"},{value:"3",text:"CR-V"}]'; break; case '2': print '[{value:"",text:"Выбрать модель"},{value:"1",text:"Mazda 3"},{value:"2",text:"Mazda 5"},{value:"3",text:"Mazda 6"}]'; break; case '3': print '[{value:"",text:"Выбрать модель"},{value:"1",text:"Corolla"},{value:"2",text:"LandCruiser"},{value:"3",text:"RAV4"}]'; break; default: print '[{value:"",text:"Выбрать модель"}]'; break; } } else { print '[{value:"",text:"Выбрать модель"}]'; } } ?>