Перейти к содержимому


Пользователь месяца
ShowPrint ShowPrint 1-й за Сентябрь
Очков активности: 283 2 темы, 21 сообщение, 7 баллов репутации
Сайт: ShowPrint.ru
ТОП самых активных за этот месяц
  • Фотография Medvedoc
    #1

    Medvedoc
    Очков активности: 372 6 тем, 44 сообщения, 4 балла репутации

  • Фотография ShowPrint
    #2

    ShowPrint (ShowPrint.ru)
    Очков активности: 120 Вне конкурса за определение пользователя месяца

  • Фотография BLIK
    #3

    BLIK
    Очков активности: 96 Вне конкурса за определение пользователя месяца

  • Фотография WGN
    #4

    WGN (worldgamenews.com)
    Очков активности: 63 Вне конкурса за определение пользователя месяца

  • Фотография Ixman
    #5

    Ixman (o5cat.ru)
    Очков активности: 54 0 тем, 12 сообщений, 3 балла репутации

  • Фотография Алексей111
    #6

    Алексей111 (xvideo24.ru)
    Очков активности: 52.5 6 тем, 17 сообщений, 1 балл репутации

  • Фотография yuran
    #7

    yuran (yurbol.ru)
    Очков активности: 24 0 тем, 16 сообщений, 1 балл репутации

  • Фотография Zevss
    #8

    Zevss (domles43.ru)
    Очков активности: 15 1 тема, 7 сообщений, 1 балл репутации

  • Фотография devpro
    #9

    devpro
    Очков активности: 13.5 0 тем, 9 сообщений, 1 балл репутации

  • Фотография MashaJans
    #10

    MashaJans
    Очков активности: 13.5 1 тема, 6 сообщений, 1 балл репутации

  • Показать весь ТОП 10

Kwork.ru - услуги фрилансеров от 500 руб.

Поддержите форум! =)
Апдейты
  • Яндекс тИЦ: 26.09.2018
  • Яндекс выдача: 14.10.2018
Топ 5 участников по репутации


Не работает php код в javascript-е

#1 Kuchuluk

Kuchuluk
  • Пользователь
  • 333 сообщений
  • Репутация: 5
0

Отправлено 22 April 2013 - 21:55

нашел в интернете скрипт, написанный на js для вывода городов в зависимости от выбора страны. там массив из названий городов выводится, я вместо этого массива поставил вывод из БД своих городов. вот этот js код
Страна:
    <select name="street" onChange="MkHouseValues(this.selectedIndex)">
    <option value="Россия">Россия</option>
    <option value="Казахстан">Казахстан</option>
    </select>
    &nbsp;Город:
    <select name="house">
    <option value="N/A">N/A</option>
    </select>
    <script type="text/javascript">
<!--
// Формируем массив городов
var aHouseValues = new Array(
<?php echo $base->showCity(1); ?>,
<?php echo $base->showCity(2); ?>
);
// ф-ция, возвращающая массив городов по заданной стране
function getHouseValuesByStreet(index){
    var sHouseValues = aHouseValues[index];
    return sHouseValues.split(","); // преобразуем строку в массив городов
}
// ф-ция, выводящая динамически список городов
function MkHouseValues(index){
    var aCurrHouseValues = getHouseValuesByStreet(index);
    var nCurrHouseValuesCnt = aCurrHouseValues.length;
    var oHouseList = document.forms["address"].elements["house"];
    var oHouseListOptionsCnt = oHouseList.options.length;
    oHouseList.length = 0; // удаляем все элементы из списка городов
    for (i = 0; i < nCurrHouseValuesCnt; i++){
	    // далее мы добавляем необходимые города в список
	    if (document.createElement){
		    var newHouseListOption = document.createElement("OPTION");
		    newHouseListOption.text = aCurrHouseValues[i];
		    newHouseListOption.value = aCurrHouseValues[i];
		    // тут мы используем для добавления элемента либо метод IE, либо DOM
		    (oHouseList.options.add) ? oHouseList.options.add(newHouseListOption) : oHouseList.add(newHouseListOption, null);
	    }else{
		    // для NN3.x-4.x
		    oHouseList.options[i] = new Option(aCurrHouseValues[i], aCurrHouseValues[i], false, false);
	    }
    }
}
// инициируем изменение элементов в списке городов, в зависимости от текущей страны
MkHouseValues(document.forms["address"].elements["street"].selectedIndex);
//-->
</script>
<?php echo $base->showCity(1); ?> <?php echo $base->showCity(2); ?> с помощью этих двух методов должен выводиться массив городов, но не выводится ничего, только N/A. сам метод такой
public function showCity($where) //ф.-ция когда нужно просто выбрать из базы и вывести на экран
{
  $data = $this->get("SELECT city_name FROM kz_city WHERE counry_id = ".$where);
  foreach($data as $d)
  {
   $text = $text.$d["city_name"].", ";
  }
  $a = strlen($text)-2;
  $text = substr($text,0,$a);
  //$text = preg_replace("#(,\s)+?$#","",$text);
  return $text;
}

 

 

  • 0

#2 isvetlichniy

isvetlichniy
  • Неактивные
  • 622 сообщений
  • Репутация: 93

Отправлено 22 April 2013 - 22:18

var aHouseValues = new Array(
<?php echo $base->showCity(1); ?>,
<?php echo $base->showCity(2); ?>
);
это глупости, echo выведет в браузер. попробуй вот так

var aHouseValues = new Array(
<?=$base->showCity(1); ?>,
<?=$base->showCity(2); ?>
);

и еще, я надеюсь ты создаешь объект класса base? а то я не вижу в коде.

Но я бы так не делал, я бы сделал заполнение списка с помощью jquery.ajax
  • 0

#3 fedornabilkin

fedornabilkin
  • Модератор
  • 1128 сообщений
  • Репутация: 190

Отправлено 23 April 2013 - 09:45

isvetlichniy, не понял в чем разница между обычным и упрощенным выводом?
  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#4 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 333 сообщений
  • Репутация: 5

Отправлено 23 April 2013 - 10:13

isvetlichniy, объект base есть. я ajax вообще не знаю, я js то толком не знаю


  • 0

#5 fedornabilkin

fedornabilkin
  • Модератор
  • 1128 сообщений
  • Репутация: 190

Отправлено 23 April 2013 - 10:31

Kuchuluk, а стоило бы узнать и js, и ajax. и jQuery
Очень полезно и сразу отпадают подобные вопросы. Я так в данный момент боюсь смотреть на этот код и уверен, что все можно сделать намного проще.
  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#6 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 333 сообщений
  • Репутация: 5

Отправлено 23 April 2013 - 11:50

это код не мой, я его в интернете нашел. он работал, когда там массив городов в ручную был написан, а с php кодом не работает


  • 0

#7 fedornabilkin

fedornabilkin
  • Модератор
  • 1128 сообщений
  • Репутация: 190

Отправлено 23 April 2013 - 12:09

Значит неправильно интегрировал пхп в этот скрипт.
ctrl+u смотрел что получается?
  • 1

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#8 isvetlichniy

isvetlichniy
  • Неактивные
  • 622 сообщений
  • Репутация: 93

Отправлено 23 April 2013 - 13:09

приведи исходный массив
я так предполагаю, что там он был строковой величиной

значит в кавычки твой php код надо брать
  • 0

#9 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 333 сообщений
  • Репутация: 5

Отправлено 23 April 2013 - 15:25

ctrl+u смотрел что получается?

посмотрел
<!--
// Формируем массив городов
var aHouseValues = new Array(
Курган, Омск,
Астана, Алматы, Актау, Актобе, Атырау, Караганда, Кзылорда, Кокшетау, Костанай, Петропавловск, Павлодар, Семипалатинск, Талдыкорган, Жезказган, Усть-Каменогорск, Тараз, Шимкент);
список городов в исходном коде получается

isvetlichniy,

я так предполагаю, что там он был строковой величиной

ну да, он строковым был в изначальном коде
вот такой он был
<script type="text/javascript">
<!--
// Формируем массив городов
var aHouseValues = new Array(
"Москва, Питер, Самара, Бугуруслан",
"Лондон, Мантчестер",
"Рим, Турин",
"Париж",
"Киев, Семфирополь"
);
// ф-ция, возвращающая массив городов по заданной стране
function getHouseValuesByStreet(index){
    var sHouseValues = aHouseValues[index];
    return sHouseValues.split(","); // преобразуем строку в массив городов
}

  • 0

#10 isvetlichniy

isvetlichniy
  • Неактивные
  • 622 сообщений
  • Репутация: 93

Отправлено 23 April 2013 - 15:58

вот такой он был


ну так таким же и должен остаться
var aHouseValues = new Array(
"<?=$base->showCity(1); ?>",
"<?=$base->showCity(2); ?>"
);

  • 1

robot

robot
  • Пользователь PRO
  • 2652 сообщений
  • Репутация: 85


Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru