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 :: Select на jQuery + PHP + MySQL

 PHP.SU

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


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

> Описание: Весь код работает, но значение переменной не передается ассинхроно. В чем проблемма?
puzik
Отправлено: 16 Июля, 2013 - 17:37:12
Post Id



Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Дек. 2009  
Откуда: Донецк, Украина


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




Добрый день. Задача у меня следующая. Уже который день бьюсь.
Есть БД SQL со списком товаров.
Нужно сделать как бы поиск-сортировку. Берем из базы значение vendor:
PHP:
скопировать код в буфер обмена
  1. public function ShowCategory()
  2.         {
  3.             $sql = "SELECT DISTINCT vendor FROM podbor_shini_i_diski";
  4.             $res = mysql_query($sql,$this->conn);
  5.             $category = '<option value="0">choose...</option>';
  6.             while($row = mysql_fetch_array($res))
  7.             {
  8.                 $category .= '<option value="' . $row['vendor'] . '">' . $row['vendor'] . '</option>';
  9.             }
  10.             return $category;
  11.            
  12.         }

Например там список из 20 видов. И мне нужно из выбранного названия взять в следующем столбце базы прилегающие модели.
PHP:
скопировать код в буфер обмена
  1.  
  2. public function ShowType()
  3.         {
  4.             $sql = "SELECT DISTINCT car FROM podbor_shini_i_diski WHERE vendor=$_POST[id] ";
  5.             $res = mysql_query($sql,$this->conn);
  6.             $type = '<option value="0">choose...</option>';
  7.             while($row = mysql_fetch_array($res))
  8.             {
  9.                 $type .= '<option value="' . $row['car'] . '">' . $row['car'] . '</option>';
  10.             }
  11.             return $type;
  12.         }
  13.  


И плюс к этому еще пару значений должны подгружаться ассинхронно.
А ассинхронность не работает, не знаю почему. Вот выкладываю весь код java а ниже выберу из него только нужную строчку:
CODE (javascript):
скопировать код в буфер обмена
  1. $("form#select_form").submit(function(){  
  2.           $(document).ready(function(){          
  3.            
  4.             $("select#type").attr("disabled","disabled");
  5.             $("select#category").change(function(){
  6.             $("select#type").attr("disabled","disabled");
  7.             $("select#type").html("<option>wait...</option>");
  8.             var id = $("select#category option:selected").attr('value');          
  9.        $.post("select_type.php", {id:id}, function(data){
  10.                 $("select#type").removeAttr("disabled");
  11.                 $("select#type").html(data);
  12.             });
  13.            
  14.         });
  15.        
  16.        
  17.        
  18.         $("form#select_form").submit(function(){
  19.             var cat = $("select#category option:selected").attr('value');
  20.             var type = $("select#type option:selected").attr('value');
  21.             if(cat>0 && type>0)
  22.             {
  23.                 var result = $("select#type option:selected").html();
  24.                 $("#result").html('your choice: '+result);
  25.             }
  26.             else
  27.             {
  28.                 $("#result").html("you must choose two options!");
  29.             }
  30.             return false;
  31.         });
  32.     });


Почему не работает следующая функция я не приложу ума. Уже и пробовал по другому функцию использовать и все равно не работает.
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  var id = $("select#category option:selected").attr('value');          
  3.        $.post("select_type.php", {id:id}, function(data){
  4.                 $("select#type").removeAttr("disabled");
  5.                 $("select#type").html(data);
  6.             });


Если запрос второй сделать не подставляя переменную, то все работает четко.
Но эта переменная не передается. И почему не знаю. Может уже есть готовые решения этой задачи или кто то уже решал эту проблемму буду очень признателен, за помощь.
Я несколько лет не занимался программированием, но раньше всегда находил ответы только на этом форуме. Спасибо огромное за поддержку.
Если нужно знать вывод, то вот он:

CODE (html):
скопировать код в буфер обмена
  1. <?php include "select.class.php"; ?>
  2.  
  3.     <form id="select_form">
  4.         Choose a category:        <select id="category">
  5.             <?php echo $opt->ShowCategory(); ?>
  6.         </select>
  7.         <br />
  8.            choose a type:            <select id="type">
  9.                 <option value="0">choose...</option>
  10.             </select>
  11.            
  12.             <br />            <input type="submit" value="confirm" />
  13.         </form>
  14.         <div id="result"></div>

(Отредактировано автором: 16 Июля, 2013 - 17:40:25)

 
 Top
soffrick
Отправлено: 16 Июля, 2013 - 17:42:08
Post Id



Посетитель


Покинул форум
Сообщений всего: 379
Дата рег-ции: Май 2012  
Откуда: Россия, Москва


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





CODE (javascript):
скопировать код в буфер обмена
  1. $("form#select_form").submit(function(){  
  2.           $(document).ready(function(){
  3.                     // code ...
  4.           });
  5. });

что это значит?

(Добавление)
первый раз такое вижу Растерялся


-----
Правильный вопрос - уже половина правильного ответа!

p.s. индусы повсюду, будьте осторожны!
 
 Top
esterio
Отправлено: 16 Июля, 2013 - 17:44:39
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




puzik пишет:
БД SQL

Какая? MySQL или postgresql. Они обе SQL

puzik пишет:
$sql = "SELECT DISTINCT car FROM podbor_shini_i_diski WHERE vendor=$_POST[id] "

PHP:
скопировать код в буфер обмена
  1. $sql = "SELECT DISTINCT car FROM podbor_shini_i_diski WHERE vendor=".(int)$_POST['id'];

puzik пишет:
java

Может JavaScript все таки?
puzik пишет:
var cat = $("select#category option:selected").attr('value');
            var type = $("select#type option:selected").attr('value');
            if(cat>0 && type>0)

CODE (javascript):
скопировать код в буфер обмена
  1. if($('#category').val() > $('#type ').val())
  2. {
  3.  //...
  4. }

неужели так не проще

И на последок - где вызов функций ПХП описаных выше?

(Отредактировано автором: 16 Июля, 2013 - 17:45:23)

 
 Top
puzik
Отправлено: 16 Июля, 2013 - 18:13:40
Post Id



Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Дек. 2009  
Откуда: Донецк, Украина


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




[quote=soffrick][/quote]
Прошу прощения, целый день редактировал и запарился:
Вот нормальный код:
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).ready(function(){
  2.             $("select#type").attr("disabled","disabled");
  3.             $("select#category").change(function(){
  4.             $("select#type").attr("disabled","disabled");
  5.             $("select#type").html("<option>wait...</option>");
  6.             var id = $("select#category option:selected").attr('value');
  7.             $.post("select_type.php", {id:id}, function(data){
  8.                 $("select#type").removeAttr("disabled");
  9.                 $("select#type").html(data);
  10.             });
  11.         });
  12.         $("form#select_form").submit(function(){
  13.             var cat = $("select#category option:selected").attr('value');
  14.             var type = $("select#type option:selected").attr('value');            
  15.            
  16.            
  17.             if(cat>0 && type>0)
  18.             {
  19.                 var result = $("select#type option:selected").html();
  20.                 $("#result").html('your choice: '+result);
  21.             }
  22.             else
  23.             {
  24.                 $("#result").html("you must choose two options!");
  25.             }
  26.             return false;
  27.         });
  28.     });

(Добавление)
[quote=esterio][/quote]
База данных MySQL

CODE (SQL):
скопировать код в буфер обмена
  1. $sql = "SELECT DISTINCT car FROM podbor_shini_i_diski WHERE vendor=".(int)$_POST['id'];
- с этой строкой наконец то заработало. Только int это цисловая переменная, могу ли я ее изменить на строковую??? string - правильно?

Выкладываю php первый основной файл ООП функциями сделанЖ
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class SelectList
  3. {
  4.     protected $conn;
  5.  
  6.         public function __construct()
  7.         {
  8.             $this->DbConnect();
  9.         }
  10.  
  11.         protected function DbConnect()
  12.         {
  13.             include "db_config.php";
  14.             $this->conn = mysql_connect($host,$user,$password) OR die("Unable to connect to the database");
  15.             mysql_select_db($db,$this->conn) OR die("can not select the database $db");
  16.             return TRUE;
  17.         }
  18.  
  19.         public function ShowCategory()
  20.         {
  21.             $sql = "SELECT DISTINCT vendor FROM podbor_shini_i_diski";
  22.             $res = mysql_query($sql,$this->conn);
  23.             $category = '<option value="0">choose...</option>';
  24.             while($row = mysql_fetch_array($res))
  25.             {
  26.                 $category .= '<option value="' . $row['vendor'] . '">' . $row['vendor'] . '</option>';
  27.             }
  28.             return $category;
  29.            
  30.         }
  31.  
  32.         public function ShowType()
  33.         {
  34.             $sql = "SELECT DISTINCT car FROM podbor_shini_i_diski WHERE vendor=".(int)$_POST['id'];
  35.             $res = mysql_query($sql,$this->conn);
  36.             $type = '<option value="0">choose...</option>';
  37.             while($row = mysql_fetch_array($res))
  38.             {
  39.                 $type .= '<option value="' . $row['car'] . '">' . $row['car'] . '</option>';
  40.             }
  41.             return $type;
  42.         }
  43. }
  44.  
  45. $opt = new SelectList();
  46. ?>


ну и маленький файл на вызов типа выбираемой подстроки
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include "select.class.php";
  3. echo $opt->ShowType();
  4. ?>
 
 Top
esterio
Отправлено: 16 Июля, 2013 - 18:44:01
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




puzik пишет:
могу ли я ее изменить на строковую??? string - правильно?

mysql_escape_string
 
 Top
puzik
Отправлено: 16 Июля, 2013 - 20:31:59
Post Id



Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Дек. 2009  
Откуда: Донецк, Украина


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




esterio пишет:
puzik пишет:
могу ли я ее изменить на строковую??? string - правильно?

mysql_escape_string

Блин все равно не пашет. В чем же дело?
Сделал так

И запрос следственно изменил
PHP:
скопировать код в буфер обмена
  1. $sql = "SELECT DISTINCT car FROM podbor_shini_i_diski WHERE vendor=".$vender;


Но вот какая то кака сидит и ни как ее не исправить. А мне еще добавлять 2 таких запроса что бы 4 выпадающих списка было и из них потом результат выводить. Может это все чер айдишник сделать? Реально ли так осуществить, тогда данные в массив наверно придется сохранять, но как тогда ассинхронность сделать? да масив менять постоянно?
 
 Top
esterio
Отправлено: 16 Июля, 2013 - 21:07:05
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




PHP:
скопировать код в буфер обмена
  1. $sql = "SELECT DISTINCT car FROM podbor_shini_i_diski WHERE vendor='".mysql_escape_string($_POST["id"])."'";

?
 
 Top
puzik
Отправлено: 16 Июля, 2013 - 21:58:02
Post Id



Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Дек. 2009  
Откуда: Донецк, Украина


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




esterio пишет:
PHP:
скопировать код в буфер обмена
  1. $sql = "SELECT DISTINCT car FROM podbor_shini_i_diski WHERE vendor='".mysql_escape_string($_POST["id"])."'";

?


РЕАЛЬНО! БЛИН СПАСИБО ОГРОМНОЕ!!!!!!!!!!!!!!!!!
ВНАТУРЕ ЗАРАБОТАЛО!!!!!
ЦЕЛЫЙ ДЕНЬ ПАРИЛСЯ!
Я просто многие моменты знаю, но многие моменты упустил когда занимался самообразованием.
Как я понял проблемма в том, что javascript кодирует как то по своему? А MySQL не правильно эти данные принимает?
Правильно? Как избежать этих ляпов в дальнейшем? Может почитать что то Или просто на ошибках своих учиться? Ведь если бы не вы я бы так и не сделал эту мелоч!
Еще раз сенкс огромный, от этого примера зависит дадут мне работу или нет!

У меня кстати была такая проблемма с выводом даты, тоесть с сохранением даты!
Был jQuery календарь и нужно было дату сохранить в БД с текстом.
Так вот без конвертации даты в нужный формат ни сохранялась ни какими функциями. Где то на англоязычном форуме парень выдал одну функцию и все....

А я грешил на POST!

(Отредактировано автором: 16 Июля, 2013 - 22:11:28)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB