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
Форумы портала PHP.SU :: Версия для печати :: Динамические списки + Javascript
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Динамические списки + Javascript

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

1. sancho - 19 Сентября, 2007 - 00:01:29 - перейти к сообщению
есть 2 выпадающих списка. марки и модели

есть функции php где прописаны запросы к базе для каждого из элементов.

нужно сделать так чтобы текст в моделях менялся автоматом в зависимости от марки.

подскажите пожалуйста как это сделать ?

ps готов оплатить работу. Закатив глазки
2. valenok - 19 Сентября, 2007 - 07:41:50 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if(isset($_GET['model'])):
  4. # - - - - -
  5.  
  6.  
  7. // Здесь идёт ваш запрос
  8. // и возвращение результата
  9.  
  10. // для примера я использовале следующий код
  11. // модели машин выводятся разделяясь точкой с запятой
  12.  
  13.  
  14. switch($_GET['model'])
  15. {
  16.         case 'Mitzubishi' : echo "Lancer;GLI;Land Cruiser"; break;
  17.         case 'Folzvagen' : echo "Saloon;F14;Off Road"; break;
  18.         case 'Pego' : echo "404;505;606"; break;
  19.         case 'Subaru' : echo "Green;Yellow;White"; break;
  20.         case 'Honda' : echo "Accord;Song;Note"; break;
  21.  
  22. }
  23. # - - - - -
  24. die();
  25. endif;
  26. ?>
  27.  
  28. <select name='model' onchange='get(this.value)' id='model' style='width:100px;'>
  29. <option disabled='disabled' selected='selected'>Select</option>
  30. <option value='Mitzubishi' >Mitzubishi</option>
  31. <option value='Folzvagen'>Folzvagen</option>
  32. <option value='Pego'>Pego</option>
  33. <option value='Subaru'>Subaru</option>
  34. <option value='Honda'>Honda</option>
  35. </select>
  36.  
  37.  
  38. <select name='mark' id='mark' disabled='disabled' style='width:100px;'>
  39. <option disabled='disabled' selected='selected'>Select</option>
  40. </select>
  41.  
  42. <input type='button' onclick='javascript:carprint();' value='Search'>
  43. <br>
  44.  
  45. <span id='car'></span>
  46.  
  47. <script language="javascript" type="text/javascript">
  48.    var request = false;
  49.    var flag = false;
  50.  
  51.    try {
  52.      request = new XMLHttpRequest();
  53.    } catch (trymicrosoft) {
  54.      try {
  55.        request = new ActiveXObject("Msxml2.XMLHTTP");
  56.      } catch (othermicrosoft) {
  57.        try {
  58.          request = new ActiveXObject("Microsoft.XMLHTTP");
  59.        } catch (failed) {
  60.          request = false;
  61.        }  
  62.      }
  63.    }
  64.  
  65.    if (!request)
  66.      alert("Error initializing XMLHttpRequest!");
  67.  
  68.     function get(url) {
  69.          document.getElementById('car').innerHTML = '';
  70.      request.open("GET","<?PHP echo $_SERVER['PHP_SELF'].'?model='; ?>" + url, true);
  71.      request.onreadystatechange = updatePage;
  72.      request.send(null);
  73.     }
  74.  
  75.  
  76.  
  77.         function updatePage()
  78.         {
  79.                
  80.           if (request.readyState == 4 && request.status == 200)
  81.           {
  82.                   var q = new Array();
  83.                   q = request.responseText.split (";");
  84.  
  85.                  while(document.getElementById('mark').item(0))
  86.                          if(document.all) document.getElementById('mark').options.remove(0);
  87.                          else document.getElementById('mark').options[0] = null;
  88.                
  89.                  if(!flag){
  90.                                 if(document.all) document.getElementById('model').options.remove(0);
  91.                             else document.getElementById('model').options[0] = null;
  92.                                 flag = true;
  93.                  }
  94.  
  95.                   for(i=0;i<q.length;i++)
  96.                   {
  97.                          var newElem = document.createElement("option") ;
  98.                         newElem.text = q[i];
  99.                         newElem.value = q[i];
  100.                         document.getElementById('mark').options.add(newElem)
  101.                   }
  102.                        
  103.                   document.getElementById('mark').disabled = false;
  104.           }
  105.         }
  106.  
  107. function carprint()
  108. {
  109.         val = document.getElementById('model').value + " " +document.getElementById('mark').value;
  110.         document.getElementById('car').innerHTML = "You've selected " + val;
  111. }
  112.  
  113. </script>
  114.  
  115.  
  116.  
\n\n(Добавление)
Пример работы смотреть можно тут
http://flower2[dot]info/phpsu/sancho.php
3. evgenijj - 19 Сентября, 2007 - 08:59:43 - перейти к сообщению
4. sancho - 19 Сентября, 2007 - 11:21:01 - перейти к сообщению
огромное спасибо за оперативность!

у меня вот какая загвостка.. списки генерируются запросами к базе. Т.е. варианты скрыты, до тех пор пока нет запроса к базе.

и в коде НИ марки Ни модели не видно и они там не прописываются... даже не знаю как быть.. Огорчение
5. evgenijj - 19 Сентября, 2007 - 11:48:58 - перейти к сообщению
sancho пишет:

у меня вот какая загвостка.. списки генерируются запросами к базе. Т.е. варианты скрыты, до тех пор пока нет запроса к базе.

и в коде НИ марки Ни модели не видно и они там не прописываются... даже не знаю как быть.. Огорчение


Ничего не понял. Попробуй еще раз - с чувством, с толком, с расстановкой...
6. sancho - 19 Сентября, 2007 - 15:36:06 - перейти к сообщению
evgenijj пишет:

Ничего не понял. Попробуй еще раз - с чувством, с толком, с расстановкой...


<select name="catgforprocess" onchange="showLoadCaption('AdsModel');loadData(this);" id="catgforprocess">
<option value="номер" selected>$Function_tableMark</option>

catgforprocess - функция выдерающая из таблицы sql Marks - МАРКИ, она описана чуть выше чем форма в том же файле...

<select name="AdsModel" onchange="showLoadCaption('AdsModel');loadData(this);" id="AdsModel">
<option value="номер" selected>$Function_tableModel</option>

$Function_tableModel - переменная описана в файле config.php, где на нее есть функция, выдергивающая модели из таблицы sql Models.
----
пишу по памяти, возможны неточности.

проблемы
я пытался прикрутить некий скрипт смены списка и к выпадающему списку марок и моделей, где можно наблюдать "onchange". Марки как загружались так и загружаются.
При выборе марок выпадающий список какбфы обновляется.. но в него НИЧЕГО не загружается по причине того, что сам Java скрипт не доделан.
+ возможна проблема с запросами Моделей из таблицы.

могу вечерком кинуть конкретные формы и запросы.
7. valenok - 19 Сентября, 2007 - 17:15:00 - перейти к сообщению
Во первых ваши формы и скрипты запорсов понадобятся
во вторых я написал. Что там не работает или не нравится?
8. sancho - 19 Сентября, 2007 - 21:55:30 - перейти к сообщению
valenok пишет:
Во первых ваши формы и скрипты запорсов понадобятся
во вторых я написал. Что там не работает или не нравится?


форма Марки
PHP:
скопировать код в буфер обмена
  1. ."<select name="catgforprocess" onchange="showLoadCaption('AdsModel');loadData(this);" id="catgforprocess">";
  2.                                                
  3.                 $applylanguage = sqlapplylanguage();
  4.                 $sql = "select id_catg,catg,parentid from ".$prefix."_ads_catg ";
  5.                 $sql .= "where ".$applylanguage;
  6.        
  7.                 $sql .= " order by parentid,catg";
  8.                 $result2=$db->sql_query($sql);
  9.         $i = 0;
  10.                 while(list($id_catg2, $ccatg2, $parentid2) = $db->sql_fetchrow($result2)) {
  11.                 if ($parentid2!=0) $ccatg2=getparent($parentid2,$ccatg2);
  12.                         if ($postinmaincatg) {
  13.                                 echo "<option value="$id_catg2" ";
  14.                                         if (($id_catg == $id_catg2) or ($id_catg == $parentid2)) {
  15.                                                 if ($id_catg == $id_catg2) {
  16.                                                         echo "selected";
  17.                                                 }
  18.                                                 if ($id_catg == $parentid2) {
  19.                                                         if ($i == 0) {
  20.                                                                 echo "selected";
  21.                                                         }
  22.                                                         $i++;
  23.                                                 }
  24.                                         }
  25.                                         echo ">$ccatg2</option>n";
  26.                         } else {
  27.                                 if ($parentid2 != 0) {
  28.                                         echo "<option value="$id_catg2" ";
  29.                                         if (($id_catg == $id_catg2) or ($id_catg == $parentid2)) {
  30.                                                 if ($id_catg == $id_catg2) {
  31.                                                         echo "selected";
  32.                                                 }
  33.                                                 if ($id_catg == $parentid2) {
  34.                                                         if ($i == 0) {
  35.                                                                 echo "selected";
  36.                                                         }
  37.                                                         $i++;
  38.                                                 }
  39.                                         }
  40.                                         echo ">$ccatg2</option>n";
  41.                         }
  42.                         }
  43.                                
  44.                 }
  45.                 echo "</select>n"
  46.                         ."</td>";              


Форма Модели - не правильная ... :shuffle:
PHP:
скопировать код в буфер обмена
  1. echo "<td width="10" height=""> </td>";
  2.                        
  3.                         echo "<td width="" valign="top"><b><font color="FF0000">* </font>"._NUKECADSMODEL." :</b></td>n"
  4.                         ."<td>"                                                        
  5.                                 ."<select name="AdsModel" id="AdsModel" onchange="loadData(this);">";                          
  6.                 echo "$ccatg2 - $catg2 - $id_catg2";
  7.                         echo "</select></td></tr>n";   


Файл function.php

Код Выдергивания Марок

PHP:
скопировать код в буфер обмена
  1.  // МАРКИ
  2. function pathcatg($id_catg){
  3.         global $prefix,$db,$module_name;
  4.         if (($id_catg !=  "") || (isset($id_catg))) {
  5.                 $resultpath = $db->sql_query("select catg,parentid from ".$prefix."_ads_catg where id_catg=".$id_catg."");
  6.                 list($catg, $parentid)=$db->sql_fetchrow($resultpath);
  7.                 $path=getparentlink($parentid,$catg);
  8.                 $path = "<a href=index.php?name=".$module_name.">"._NUKECMAIN."</a> » ".$path;
  9.                 $path = "<b>".$path."</b>";
  10.         } else {
  11.                 $path= "";
  12.         }
  13.         return $path;
  14. }


Функция вывода моделей (нужна именно в таком виде... она не пашет вроде.. почему не знаю.)
PHP:
скопировать код в буфер обмена
  1.  // МОДЕЛИ
  2. function buildmodel($sel = "") {
  3.         global $prefix,$db;
  4.             $result=$db->sql_query("select id_catg, catg, parentid from ".$prefix."_ads_catg where parentid='".$id_catg."' ORDER BY catg" );
  5.         while (list($id_catg,$catg) = $db->sql_fetchrow($rescatg)) {
  6.                 echo "<option value="".$catg.""";
  7.                 if ($sel == $catg) {
  8.                         echo " selected";
  9.                 }
  10.                 echo ">".$catg."</option>n";
  11.                 //echo ">".$mark ."(".$ico.")</option>n";
  12.         }
  13.         $db->sql_freeresult($res);
  14. }
9. valenok - 19 Сентября, 2007 - 22:02:04 - перейти к сообщению
Давайте вместо того чтобы я пытался понять что тут такое написанно в этом безобразном коде, вы скажете какая часть что делает.

P.S. для кода используем теги [php][/php]\n\n(Добавление)
Да и вообще, если вы хотите чтоб я за час всё сделал и чтоб работало
дайте свои контакты (ася, скайп, прочее) и мы договоримся.

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

Потому что как сделать связанные списки я показал.
Вам придётся лишь заменить код в верху на свой php код с запросами
10. sancho - 19 Сентября, 2007 - 22:22:34 - перейти к сообщению
valenok пишет:
Давайте вместо того чтобы я пытался понять что тут такое написанно в этом безобразном коде, вы скажете какая часть что делает.

P.S. для кода используем теги [php][/php]

исправил

в личку отписал
11. valenok - 19 Сентября, 2007 - 22:25:46 - перейти к сообщению
Дело не только в том что не понятно было что написанно, а в том что сам код написан безобразно.
Очень так сказать трудно читабельный и очень длинный с большим количеством как минимум лишнего.
12. UserID - 22 Сентября, 2007 - 06:54:06 - перейти к сообщению
Думаю к тому моменту, когда закончится эта тема я её уберу. Осталось только дождаться когда Валенок укажет на свои любимые ссылки о том что такое форма, что отправляет и в каком случае сервер клиенту, потом мы все ударимся в размышления о смысле бытия и функции типа sqlapplylanguage(). С третьего раза удалось внятно прочитать и понять Улыбка Видимо, создатели ЕСПД перестарались. Бог миловал, разрешил из html творить что душе заблагороссудится, представляю ужас в глазах у многих, когда на утро окажется что браузеры могут читать только валидный XHTML Strict, пропарсеный W3C, NTFS запрещён, на болванки нельзя вкатать UFD... Жаль, давно не был на форуме, оказывается здесь уже и вёрстку зачислили в язык программирования. Он наверное сразу приобрёл статус языка высокого уровня... типа только для высоко продвинутых Улыбка Особую благодарность хотелось высказать Валенку и Евгению за неутомимый юмор в работе. Respect! Извините за флейм. Хотелось выговориться. Скоро всё равно уберу.
13. valenok - 22 Сентября, 2007 - 14:34:03 - перейти к сообщению
Да уж..
Пора создавать раздел
html программирование
и дизайн на php

Надо вот тебе чаще форум посещать просто.

 

Powered by ExBB FM 1.0 RC1