Сообщение от
newart
Непонятно как передать значение из формы (ID автора оригинала) яваскрипту и далее в php. И самое главное не понятно как данные из "скриптдлябазы.php" впихнуть в форму (выпадающий список).
Такс, как я понимаю, странички у тебя генерирует РНР, значит получаеш список авторов оригиналов, т.е. их ID и подставляеш их в select:
PHP код:
<select id="orig_authors" onchange="updateRemixesList();"><?php
foreach ( $authors as $author ) { ?>
<option value="<?php echo $author['id']; ?>"><?php echo $author['name']; ?></option>
<?php } ?></select>
Далее когда пользователь выберет автора оригинала обработчик onChange вызовет JavaScript функцию updateRemixesList();
Код:
function updateRemixesList() {
var orig_authors_select = document.getElemntById('orig_authors'); //получаем объект selecta
if ( orig_authors_select ) {
orig_author_id = orig_authors_select.options[orig_authors_select.selected_index].value;//Получаем текущее выбраное значение
//Далее делаем запрос аяксом, т.е. отправляем orig_author_id
} else alert('It is a bad day today...');
}
Теперь server side получил Id автора оригинала и мы можем получить список ремиксов. Получаем список ремиксов (или авторов ремиксов, уже забыл пока писал ), формируем XML или текст для ответа (ответ приходит обратно в JavaScript)
Будем считать что ответ от аякса мы удачно получили и у нас есть некий массив с авторами ремиксов и этот список нужно вывести во второй выпадающий список, делаем следующее:
в том месте где должен быть выпадающий список ставим:
<select id="remix_authors"></select>
Далее допустим что авторов ремиксов добавляет функция addRemixAuthors()
Код:
function addRemixAuthors() {
var remix_authors_select = document.getElementById('remix_authors');
if (remix_authors_select) {
//Удаляем старый список
if ( remix_authors_select.options.length > 0 ) {
for (i=0;i<remix_authors_select.options.length;i++) {
remix_authors_select.removeChild(remix_authors_select.options[i]);
}
}
//Добавляем новые элементы
for (i=0;i<authors.length;i++) {
var el = elem('option', {'value', authors[i][1]/*id*/}, null, authors[i][0]/*name*/);
remix_authors_select.appendChild( el );
}
}
}
Ну и последняя функция:
Код:
function elem(name, attrs, style, text, evthandlers) {
var e = document.createElement(name);
if (attrs) {
for (key in attrs) {
if (key == 'class') {
e.className = attrs[key];
} else if (key == 'id') {
e.id = attrs[key];
} else {
e.setAttribute(key, attrs[key]);
}
}
}
if (style) {
for (key in style) {
e.style[key] = style[key];
}
}
if (text) {
e.appendChild(document.createTextNode(text));
}
if (evthandlers) {
for (key in evthandlers) {
//alert(evthandlers[key]);
//alert(key);
if(window.addEventListener) { // Mozilla, Netscape, Firefox
e.addEventListener(key, evthandlers[key], false);
} else { // IE
e.attachEvent('on'+key, evthandlers[key]);
}
}
}
return e;
}