0 Пользователей и 1 Гость просматривают эту тему.
  • 13 Ответов
  • 1226 Просмотров
*

SimonovSergey

  • Захожу иногда
  • 55
  • 0 / 0
Я не разобрался и поэтому пришлось сделать следующее:
Код
<?php 
$db = JFactory::getDBO();
$query = 'SELECT * FROM #__calculator_ WHERE Works = "4" ';
$db->setQuery($query);
$data_array = $db->loadObjectList();
$obliz = array() ;
?>
<select name = "cspisok">
<option>Выберите из списка</option>
<script>
var cform1 = document.forms.ccalculator; var SpisokStrana1 = cform1.elements.stranaspisok;
"<?php foreach($data_array as $tovar):?>"

if (SpisokStrana1.value == "<?php echo $tovar->proizvoditel; ?>") {
"<?php $obliz[]= $tovar->name; ?>"
alert("<?php echo $tovar->name; ?>");
}
"<?php endforeach;?>"

</script>
                <?php print_r($obliz);?>
<?php foreach($obliz as $tovar):?>
<option><?php echo $tovar; ?></option>
<?php endforeach;?>
</select>
но почему alert выскакивает один раз, как положено, а в массив заносятся все значения (три)? можно поместить HTML в js?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Как HTML поместить внутрь js?
« Ответ #1 : 13.11.2014, 19:33:59 »
А теперь нажмите ctrl-u и посмотрите что вы там напортачили..

Вопрос на мой взгляд некорректен. Javascript сам по себе не является документом чтобы туда еще чего-то можно было помещать..
« Последнее редактирование: 13.11.2014, 19:44:20 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

SimonovSergey

  • Захожу иногда
  • 55
  • 0 / 0
Re: Как HTML поместить внутрь js?
« Ответ #2 : 13.11.2014, 19:44:41 »
А теперь нажмите ctrl-u и посмотрите что вы там напортачили..
array - пишет три значения
alert - выскакивает один раз, почему они же в одном цикле?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Как HTML поместить внутрь js?
« Ответ #3 : 13.11.2014, 19:48:34 »
если вы внимательно изучите исходный код страницы то вы поймете почему ибо там будет что-то вроде того:
Код: javascript
if (SpisokStrana1.value == 'значение1') {
   alert("...");
}
if (SpisokStrana1.value == 'значение2') {
   alert("...");
}
if (SpisokStrana1.value == 'значение3') {
   alert("...");
}
интернет-блог: http://websiteprog.ru
*

SimonovSergey

  • Захожу иногда
  • 55
  • 0 / 0
Re: Как HTML поместить внутрь js?
« Ответ #4 : 13.11.2014, 20:28:23 »
с alert мне все понятно, стоит if отсекает ненужные значения. Мне не понятно почему if не отсекает ненужные значения и все они записываются в массив... помогите разобраться...
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Как HTML поместить внутрь js?
« Ответ #5 : 13.11.2014, 21:03:00 »
потому что это условие выполняется в javascript-е а в массив вы записываете через php! Первый исполняется в браузере пользователя, второй на стороне сервера и никак они эти два кода между собой не связаны..

php код формирует HTML с javscript кодом который будет исполнен в браузере пользователя так понятнее?  Вам бы теорию почитать прежде чем кодить..
« Последнее редактирование: 13.11.2014, 21:10:58 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

SimonovSergey

  • Захожу иногда
  • 55
  • 0 / 0
Re: Как HTML поместить внутрь js?
« Ответ #6 : 13.11.2014, 21:10:52 »
потому что это условие выполняется в javascript-е а в массив вы записываете через php! Первый исполняется в браузере пользователя, второй на стороне сервера и никак они эти два кода между собой не связаны..
и что же делать?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Как HTML поместить внутрь js?
« Ответ #7 : 13.11.2014, 21:13:50 »
и что же делать?

А вы не написали что вы хотите сделать.. судя по вашему коду тройной alert. тогда можете написать так:
Код: javascript
alert('гип-гип-ура!');
alert('гип-гип-ура!');
alert('гип-гип-ура!');
интернет-блог: http://websiteprog.ru
*

SimonovSergey

  • Захожу иногда
  • 55
  • 0 / 0
Re: Как HTML поместить внутрь js?
« Ответ #8 : 13.11.2014, 21:35:31 »
есть два выпадающих списка которые формируются из БД, если в первом списке меняется значение, то во втором получаем список только из тех элементов  в которых присутствует выбранное значение из первого списка.
Как я планировал:
Сформировать первый список при помощи php
Далее onchange определяю когда меняется первый список, получаю его значение
И далее зная это значение отсеиваю второй список
Код
<form name="ccalculator">
<?php
$db = JFactory::getDBO();
$query = 'SELECT * FROM #__calculator_ WHERE Works = "4" ';
$db->setQuery($query);
$data_array = $db->loadObjectList();
$aux_res = array() ;
                $result_res = array() ;
                foreach($data_array as $tovar) {
                        $aux_res[] = $tovar->proizvoditel ;                     
                }
                $aux_res = array_unique($aux_res) ;
                print_r($aux_res);
?>
<select name = "stranaspisok">
<option>Выберите из списка</option>
<?php foreach($aux_res as $tovar):?>
<option><?php echo $tovar; ?></option>
<?php endforeach;?>
</select>

<?php
$db = JFactory::getDBO();
$query = 'SELECT * FROM #__calculator_ WHERE Works = "4" ';
$db->setQuery($query);
$data_array = $db->loadObjectList();
$obliz = array() ;
?>
<select name = "cspisok">
<option>Выберите из списка</option>
<script>
var cform1 = document.forms.ccalculator; var SpisokStrana1 = cform1.elements.stranaspisok;
SpisokStrana1.onchange = strana1;
function strana1(){
"<?php foreach($data_array as $tovar):?>"

if (SpisokStrana1.value == "<?php echo $tovar->proizvoditel; ?>") {
"<?php $obliz[]= $tovar->name; ?>"
alert("<?php echo $tovar->name; ?>");

}
"<?php endforeach;?>"
}
</script>
                <?php print_r($obliz);?>
<?php foreach($obliz as $tovar):?>
<option><?php echo $tovar; ?></option>
<?php endforeach;?>
</select>
но второй список не получается просеивать...
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Как HTML поместить внутрь js?
« Ответ #9 : 13.11.2014, 21:48:23 »
Зачем у вас два раз один и тот-же запрос выполняется? Динамические списки обычно делаются с использованием AJAX
интернет-блог: http://websiteprog.ru
*

SimonovSergey

  • Захожу иногда
  • 55
  • 0 / 0
Re: Как HTML поместить внутрь js?
« Ответ #10 : 13.11.2014, 22:20:28 »
Зачем у вас два раз один и тот-же запрос выполняется? Динамические списки обычно делаются с использованием AJAX

Знаю, думал может по проще можно...(((
*

SimonovSergey

  • Захожу иногда
  • 55
  • 0 / 0
Re: Как HTML поместить внутрь js?
« Ответ #11 : 13.11.2014, 23:49:51 »
Вот как сделал используя только js и php, обошелся без AJAX, напишу подробнее, может кому пригодится:
Код
<?php
//Делаем запрос к базе данных, выбираем все поля таблицы __calculator_ у которых значение Works равно 4
$db = JFactory::getDBO();
$query = 'SELECT * FROM #__calculator_ WHERE Works = "4" ';
$db->setQuery($query);
$data_array = $db->loadObjectList();
//Создаем дополнительные массивы, они понадобятся чтобы убрать повторения
$aux_res = array() ;
                $result_res = array() ;
            //Записываем в дополнительный массив элементы первого списка
                foreach($data_array as $tovar) {
                        $aux_res[] = $tovar->proizvoditel ;                     
                }
            //Удаляем повторы
                $aux_res = array_unique($aux_res) ;
               
?>
<!--Создаем первый список-->
<select name = "stranaspisok">
<option>Выберите из списка</option>
<!--Записываем наш массив в выпадающий список, первый список готов-->
<?php foreach($aux_res as $tovar):?>
<option><?php echo $tovar; ?></option>
<?php endforeach;?>
</select>
Код
<!--Делаем запрос к базе данных, выбираем все поля таблицы __calculator_ у которых значение Works равно 4 -->
<?php
$query = 'SELECT * FROM #__calculator_ WHERE Works = "4" ';
$db->setQuery($query);
$data_array = $db->loadObjectList();
?>
<!--Создаем второй список-->
<select name = "cspisok">
<option>Выберите из списка</option>
</select>
Код
<!--Скрипт для динамического изменения второго списка-->		
<script>
//Создаем переменные, SpisokStrana в ней содержится элемент первого списка, cSpisok в ней содержится элемент второго списка
var cform = document.forms.ccalculator; var SpisokStrana = cform.elements.stranaspisok;
var cSpisok = cform.elements.cspisok;
//Если первый список изменяется, то запуская функцию strana
SpisokStrana.onchange = strana;

function strana(){
//Позиционируем второй список на пункте Выберите из списка
cSpisok.value = "Выберите из списка";
//Очищаем от всех элементов наш список, так как значение первого списка поменялось и нам необходимо получить новые значения во втором списке
while (cSpisok.options.length) {
    cSpisok.options[0] = null;
    }
    //Создаем первый элемент списка Выберите из списка
    var item = document.createElement("OPTION");
            item.value = '1';
            item.text = 'Выберите из списка';
            cSpisok.options.add(item);
        //При помощи цикла заполняем список нужными нам элементами из БД
"<?php foreach($data_array as $tovar):?>"
if (SpisokStrana.value == "<?php echo $tovar->proizvoditel; ?>") {
var item = document.createElement("OPTION");
item.value = '1';
            item.text = '<?php echo $tovar->name; ?>';
            cSpisok.options.add(item);
}
"<?php endforeach;?>"
}

</script>
*

Joker_V

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Как HTML поместить внутрь js?
« Ответ #12 : 02.07.2015, 22:47:15 »
Я бы с помощью AJAX делал бы. Динамическое обновление эфективнее. Зачем так много информации грузить в HTML? Чем больше загрузите тем медленее страница. Обробатуем по js onChange. Создаем функцию что делает AJAX запрос на сервер по выбранному элементу со списка. Получаем ответ в json, обновляем данные в новом списке по полученным данным. Да в принципе и все. На сервере нужно лишь сделать запрос к бд и получить информацию и распечатать (echo) переменную encodejson после чего прервать выполнение exit.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Как HTML поместить внутрь js?
« Ответ #13 : 02.07.2015, 23:41:23 »
Это если списки большие, если там по 3-4 строчки то можно и без AJAX. И не обязательно в HTML грузить. Можно в js объекте хранить. Но в большинстве случаев так и надо делать (через AJAX всмысле)
« Последнее редактирование: 02.07.2015, 23:45:47 от zomby6888 »
интернет-блог: http://websiteprog.ru
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Векторы указания версий IE в HTML-коде

Автор userxp

Ответов: 0
Просмотров: 1617
Последний ответ 27.05.2009, 19:24:02
от userxp