Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2013, 05:55   #1
OliverVood
Пользователь
 
Регистрация: 06.05.2010
Сообщений: 32
По умолчанию Передать переменную

Здравствуйте, господа!
У меня есть 2 SELECTа. При выборе значения первого (id2) - формируется второй (id)!
Для этого по событию onChange выполняю следующий код!
Код:
function show_select(id, id2) {
 var el = document.getElementById(id);
 var sel = document.getElementById(id2);
 var n = sel.options[sel.selectedIndex].value;
 var one = "<?php
  $dbhost = ...;
  $dbuser = ...;
  $dbpassword = ...;
  $dbname = ...;
  $connect = ...;
  $db = @mysql_connect($dbhost, $dbuser, $dbpassword) or $connect = false; // коннект
  if($connect) {
   mysql_query('SET NAMES \'cp1251\';'); // настройки
   mysql_select_db($dbname, $db); // настройки
   $query = 'SELECT subsection.Key, subsection.Subsection FROM subsection WHERE subsection.Section = "+n+"'; // текст запроса
   $Lists = mysql_query($query, $db); // запрос
   while($List = mysql_fetch_array($Lists)) { // пробегаем по результату
    echo $List['Key'], '|', $List['Subsection'], '^'; // формирую строку
   }
   mysql_close($db); // закрываем соединение
  }
 ?>";
/* ниже разбиваем строку на элементы */
 var i = 0, str1 = "", str2 = "", boole = false;
 while(i < one.length) {
  if(boole == false) {
   if(one[i] != '|')
    str1 += one[i]
   else
    boole = true;
  }
  else {
   if(one[i] != '^')
    str2 += one[i]
   else {
    boole = false;
    el.options[el.options.length] = new Option(str2, str1); // добавляем опцию выбора
    str1 = "";
    str2 = "";
   }
  }
  i++;
 }
alert(n);
}
Весь скрипт работает, но проблема в том, что в тексте запроса не срабатывает переменная n:
Код:
$query = 'SELECT subsection.Key, subsection.Subsection FROM subsection WHERE subsection.Section = "+n+"';
А хотя такой вариант срабатывает:
Код:
$query = 'SELECT subsection.Key, subsection.Subsection FROM subsection WHERE subsection.Section = "+1+"';
Подскажите, пожалуйста, как правильно передать переменную?
OliverVood вне форума Ответить с цитированием
Старый 13.07.2013, 10:13   #2
acteralex
Форумчанин
 
Регистрация: 19.05.2011
Сообщений: 189
По умолчанию

У вас нет приведения к типу integer.
По-моему нужно так:
Код:
var n = sel.options[parseInt(sel.selectedIndex)].value;
Не проверял

Последний раз редактировалось acteralex; 13.07.2013 в 10:20.
acteralex вне форума Ответить с цитированием
Старый 13.07.2013, 10:37   #3
OliverVood
Пользователь
 
Регистрация: 06.05.2010
Сообщений: 32
По умолчанию

Цитата:
Сообщение от acteralex Посмотреть сообщение
У вас нет приведения к типу integer.
По-моему нужно так:
Код:
var n = sel.options[parseInt(sel.selectedIndex)].value;
Не проверял
Да ему хоть кол на голове чеши, воспринимает все как текст. Переменная там стоит или кракозябра какая!
OliverVood вне форума Ответить с цитированием
Старый 13.07.2013, 11:09   #4
acteralex
Форумчанин
 
Регистрация: 19.05.2011
Сообщений: 189
По умолчанию

а "n" точно содержит то, что нужно, в консоль пробовали выводить?
acteralex вне форума Ответить с цитированием
Старый 13.07.2013, 13:34   #5
OliverVood
Пользователь
 
Регистрация: 06.05.2010
Сообщений: 32
По умолчанию

Цитата:
Сообщение от acteralex Посмотреть сообщение
а "n" точно содержит то, что нужно, в консоль пробовали выводить?
alert(n); - Выводит правильно, а в скрипте php идет как 'n'.
OliverVood вне форума Ответить с цитированием
Старый 13.07.2013, 15:35   #6
acteralex
Форумчанин
 
Регистрация: 19.05.2011
Сообщений: 189
По умолчанию

У меня сейчас нет никакого сервера для php, так что пытаюсь так обдумать...
Попробуй так:
Код:
//здесь я просто поменял немного кавычки
'SELECT subsection.Key, subsection.Subsection FROM subsection WHERE subsection.Section = '"+n+";
acteralex вне форума Ответить с цитированием
Старый 13.07.2013, 15:48   #7
OliverVood
Пользователь
 
Регистрация: 06.05.2010
Сообщений: 32
По умолчанию

Цитата:
Сообщение от acteralex Посмотреть сообщение
У меня сейчас нет никакого сервера для php, так что пытаюсь так обдумать...
Попробуй так:
Код:
//здесь я просто поменял немного кавычки
'SELECT subsection.Key, subsection.Subsection FROM subsection WHERE subsection.Section = '"+n+";
Тогда переменная не входит в сам запрос!
Дело в том, что где бы она не была расположена - она берется как текст, а не как значение переменной.
И в первом случае, с единицей - я думаю воспринимает как текст.

Последний раз редактировалось OliverVood; 13.07.2013 в 15:50.
OliverVood вне форума Ответить с цитированием
Старый 13.07.2013, 15:52   #8
acteralex
Форумчанин
 
Регистрация: 19.05.2011
Сообщений: 189
По умолчанию

отписался в личку... Ответь там.
acteralex вне форума Ответить с цитированием
Старый 25.07.2013, 09:16   #9
OliverVood
Пользователь
 
Регистрация: 06.05.2010
Сообщений: 32
По умолчанию

Решение найдено с использованием jquery. Пришлось перелопатить пол сайта заново, но возможностей стало намного больше.)
OliverVood вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передать переменную mihailjack JavaScript, Ajax 1 17.10.2012 20:37
вместо memo передать в переменную bulldog5293 Работа с сетью в Delphi 5 24.12.2010 23:13
Передать переменную в поток,туплю. larin1974 Помощь студентам 2 20.11.2009 05:25
передать переменную другой форме Var17 Общие вопросы Delphi 5 07.01.2009 02:03
передать переменную ar4i Общие вопросы Delphi 10 04.12.2006 14:30