Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: динамическое заполнение селекта

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: динамическое заполнение селекта
Tyoma5891
Отправлено: 24 Декабря, 2014 - 21:14:06
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




Добрый день, всем!
не подскажите самый простой способ на jquery заполнение селекта, задача в чем, у меня есть один селект, по его выбранному значению я отправляю jquery постом значение в пхп файл, в свою очередь этот файл возвращает ассоциативный массив, элементами которого я должен заполнить другой селект вот так:
<option value="ключ">значение</option>
заранее спасибо...
 
 Top
IllusionMH
Отправлено: 25 Декабря, 2014 - 00:48:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Tyoma5891, обычно это называют связанными селектами. Интернет знает о них.
А так - просто через innerHTML можно вставить строку в которую конкатенируете строки как написали выше. только подменив их значениями из ассоциативного массива.
 
 Top
Tyoma5891
Отправлено: 25 Декабря, 2014 - 09:02:11
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




IllusionMH пишет:

А так - просто через innerHTML можно вставить строку в которую конкатенируете строки как написали выше. только подменив их значениями из ассоциативного массива.

если не трудно можете показать пример, спасибо...
(Добавление)
у меня ещё такой вопрос, вот я вроде бы сделал что-то получилось но в конец масива из файла пхп у меня почему цепляется отдтедльным элементом содержимое файла header с сайта моего не знаете в чем может быть глюк? вообще не могу понять как такое может быть?
 
 Top
Tyoma5891
Отправлено: 25 Декабря, 2014 - 14:24:43
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




ни у кого ни каких мыслей? или код лучше показать? вот код обработчика выбора первого селекта:
CODE (javascript):
скопировать код в буфер обмена
  1. function selectEnemyClan()
  2. {
  3.         clansbattleid = $("#clansbattleid option:selected").val();
  4.         if (clansbattleid==0)
  5.         {
  6.                 alert('Пожалуйста, выбирите битву!');
  7.                 return false;
  8.         }
  9.         if (clansbattleid>0)
  10.         {
  11.                 curuserid = $("#curuserid").val();
  12.                 $.post('/result', {'clansbattleid': clansbattleid, 'curuserid': curuserid}, result_selectEnemyClan);
  13.         }
  14.  
  15. }
  16. function result_selectEnemyClan(text)
  17. {
  18.         var listArray = text.split("||");
  19.         var sel = $("#userid2");
  20.         listArray.pop();
  21.         for(i in listArray)
  22.         {
  23.         arr = listArray[i].split("::");
  24.         $("<option></option>").attr("value", arr[1]).html(arr[0]).appendTo(sel);
  25.         }
  26.        
  27. }

сам файл пхп-обработчика:
PHP:
скопировать код в буфер обмена
  1. $clansbattle_id = mysql_real_escape_string($_POST['clansbattleid']);
  2. $curuserid = mysql_real_escape_string($_POST['curuserid']);
  3.  
  4. $res = mysql_query("SELECT user_id1 FROM clansbattle_reg where user_id1='$curuserid' and clansbattle_id='$clansbattle_id'");
  5. if (!empty($res))
  6. {
  7.         $res = mysql_query("SELECT user_id1 FROM clansbattle_reg where clansbattle_id='$clansbattle_id'");
  8.         $mass = '';
  9.         while ($row=mysql_fetch_array($res, MYSQL_ASSOC))
  10.         {
  11.                 $user_id = $row['user_id1'];
  12.                 //echo '<option value='.getUsername($user_id).'>'.$user_id.'</option>';
  13.                 $mass .= getUsername($user_id) . '::' . $user_id.'||';
  14.         }
  15. }
  16. echo $mass;

(Отредактировано автором: 25 Декабря, 2014 - 15:26:34)

 
 Top
ПТО
Отправлено: 25 Декабря, 2014 - 21:02:54
Post Id



Посетитель


Покинул форум
Сообщений всего: 395
Дата рег-ции: Янв. 2012  


Помог: 3 раз(а)




var i, o, len = data.length, s = document.getElementById('mySelectId');
for(i = 0; i < len; i++){
o = document.createElement('option');
o.value = data[i].myValue;
o.textContent= data[i].myValueText;
s.appendChild(o);
}

?
 
 Top
Tyoma5891
Отправлено: 25 Декабря, 2014 - 21:31:45
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




ПТО пишет:
var i, o, len = data.length, s = document.getElementById('mySelectId');
for(i = 0; i < len; i++){
o = document.createElement('option');
o.value = data[i].myValue;
o.textContent= data[i].myValueText;
s.appendChild(o);
}

?

спасибо большое за ответ но я если честно немного не понял как это интерпретировать к моему коду... в частности к функции result_selectEnemyClan
не могли бы пояснить или на примере показать моем
и как єто решает проблему єту
"но в конец масива из файла пхп у меня почему цепляется отдтедльным элементом содержимое файла header с сайта моего не знаете в чем может быть глюк? вообще не могу понять как такое может быть?"

(Отредактировано автором: 25 Декабря, 2014 - 21:50:33)

 
 Top
ПТО
Отправлено: 25 Декабря, 2014 - 21:51:51
Post Id



Посетитель


Покинул форум
Сообщений всего: 395
Дата рег-ции: Янв. 2012  


Помог: 3 раз(а)




Ну у Вас написано же:
CODE (javascript):
скопировать код в буфер обмена
  1. for(i in listArray)
  2. {
  3.    arr = listArray[i].split("::");
  4.    $("<option></option>").attr("value", arr[1]).html(arr[0]).appendTo(sel);
  5. }


пишем так:
CODE (javascript):
скопировать код в буфер обмена
  1. var i, o, len = listArray.length, arr;
  2. for(i = 0; i < len; i++){
  3.    arr = listArray[i].split("::");
  4.    o = document.createElement('option');
  5.    o.value = arr[1];
  6.    o.textContent= arr[0];
  7.    sel.appendChild(o);
  8. }

(Добавление)
?
 
 Top
Tyoma5891
Отправлено: 25 Декабря, 2014 - 22:00:07
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




Ваш код перестал вообще выдавать в селект какие-либо значения...
 
 Top
ПТО
Отправлено: 25 Декабря, 2014 - 22:04:53
Post Id



Посетитель


Покинул форум
Сообщений всего: 395
Дата рег-ции: Янв. 2012  


Помог: 3 раз(а)




Открываем консоль, смотрим, что пишет там
(Добавление)
var sel = $("#userid2");
меняем на
var sel = document.getElementById('userid2');

?
 
 Top
Tyoma5891
Отправлено: 25 Декабря, 2014 - 22:09:26
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




ПТО пишет:
Открываем консоль, смотрим, что пишет там
(Добавление)
var sel = $("#userid2");
меняем на
var sel = document.getElementById('userid2');

?

о теперь в селекты выдало то что должно было и плюс строки нашего кода)))я честно говоря не пойму что происходит, зачем оно добавляет html-код всей страницы текущей?

(Отредактировано автором: 25 Декабря, 2014 - 22:17:06)

 
 Top
ПТО
Отправлено: 25 Декабря, 2014 - 22:16:35
Post Id



Посетитель


Покинул форум
Сообщений всего: 395
Дата рег-ции: Янв. 2012  


Помог: 3 раз(а)




Tyoma5891 пишет:
плюс строки нашего кода)))

Ну так получилось, не?
CODE (javascript):
скопировать код в буфер обмена
  1. function result_selectEnemyClan(text)
  2. {
  3.   var listArray = text.split('||'),
  4.   sel = document.getElementById('userid2'),
  5.   i,
  6.   o,
  7.   len = listArray.length,
  8.   arr;
  9.   sel.innerHTML = '';
  10.   for (i = 0; i < len; i++) {
  11.     arr = listArray[i].split('::');
  12.     o = document.createElement('option');
  13.     o.value = arr[1];
  14.     o.textContent = arr[0];
  15.     sel.appendChild(o);
  16.   }
  17. }
  18.  
 
 Top
Tyoma5891
Отправлено: 25 Декабря, 2014 - 22:20:25
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




ПТО пишет:

Ну так получилось, не?

нет почему-то добавляется в селект нтмл-код текущей страницы полностью это ж бред такого не должно быть...
 
 Top
ПТО
Отправлено: 25 Декабря, 2014 - 22:28:33
Post Id



Посетитель


Покинул форум
Сообщений всего: 395
Дата рег-ции: Янв. 2012  


Помог: 3 раз(а)




Tyoma5891 пишет:
ПТО пишет:

Ну так получилось, не?

нет почему-то добавляется в селект нтмл-код текущей страницы полностью это ж бред такого не должно быть...

а так что будет в консоли :
function result_selectEnemyClan(text)
{
console.log(text);
}

?
я думаю, ошибка в серверной части. Вам вместо ответа сервер отправляет не нужный текст, а разметку страницы

(Отредактировано автором: 25 Декабря, 2014 - 22:44:56)

 
 Top
Tyoma5891
Отправлено: 25 Декабря, 2014 - 22:47:01
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




ПТО пишет:
Tyoma5891 пишет:
ПТО пишет:

Ну так получилось, не?

нет почему-то добавляется в селект нтмл-код текущей страницы полностью это ж бред такого не должно быть...

а так что будет в консоли :
function result_selectEnemyClan(text)
{
console.log(text);
}

?
я думаю, ошибка в серверной части. Вам вместо ответа сервер отправляет не нужный текст, а разметку страницы

нет нужный текст тоже приходит но добавляется разметка страницы к нему...
 
 Top
DeepVarvar Супермодератор
Отправлено: 26 Декабря, 2014 - 03:18:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




ПТО пишет:
o = document.createElement('option');
o.value = data[i].myValue;
o.textContent= data[i].myValueText;
s.appendChild(o);
В старых операх на престо-движке был глюк, опшны не вставлялись совершенно.
В качестве костыля оборачивали вставку опшна в маленький setTimeout, подробностей уже не помню, гугл в помощь.
За новые оперы ничего не скажу, там уже и двиг поменялся, может исправлено.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB