HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Ниспадающий список и MySql
  #1  
Старый 12.01.2009, 10:18
svesve
Постоянный
Регистрация: 15.06.2007
Сообщений: 527
С нами: 9950786

Репутация: 214


По умолчанию Ниспадающий список и MySql

Есть 2 ниспадающих списка
1. список выводит список отделов организации (делается запрос к бд и выводим инфу)
2. список ДОЛЖЕН выводить должности конкретного выбранного отдела..... как это можно релизовать?
тобишь я кликаю в первом списке на отдел формируется запрос к базе с id отдела и выводится из бд список должностей во второй ниспадающий список
 
Ответить с цитированием

  #2  
Старый 12.01.2009, 10:31
Joker-jar
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
С нами: 10088966

Репутация: 646


По умолчанию

Красивей всего будет если сделать через AJAX
 
Ответить с цитированием

  #3  
Старый 12.01.2009, 10:42
svesve
Постоянный
Регистрация: 15.06.2007
Сообщений: 527
С нами: 9950786

Репутация: 214


По умолчанию

с аяксом глухо как в танке =(
есть примеры похожих реализаций?
 
Ответить с цитированием

  #4  
Старый 12.01.2009, 10:51
Joker-jar
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
С нами: 10088966

Репутация: 646


По умолчанию

Напишу небольшой пример, если никто не опередит
 
Ответить с цитированием

  #5  
Старый 12.01.2009, 11:14
Joker-jar
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
С нами: 10088966

Репутация: 646


По умолчанию

Так-с, ну вроде, работает. Будут проблемы, пиши

PHP код:
<?

  $countries 
= array('Россия''США''Германия');
  
$cities = array(array('Москва''Тверь''Уфа'), array('Нью-Йорк''Сан-Франциско''Бостон'), array('Берлин''Гамбург'));

  if (isset(
$_GET['do']) && $_GET['do'] === 'getcities')
    {
      
$cid intval($_GET['cid']);
      echo 
'<option value="-1">Выберите город...'."\n";
      for (
$i 0$i count($cities[$cid]); $i++)
        echo 
'<option value="'.$i.'">'.$cities[$cid][$i]."\n";
      exit;
    }

?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>

  <script>
    function GetXmlHttpObject()
    {
      var objXMLHttp=null;
      if (window.XMLHttpRequest)
        {
          objXMLHttp=new XMLHttpRequest();
        }
      else
        if (window.ActiveXObject)
          {
            objXMLHttp=new ActiveXObject('Microsoft.XMLHTTP');
          }
        return objXMLHttp;
    }
    
    function OnChangeCountry()
    {
      if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete')
        {
          forma.city.innerHTML = xmlHttp.responseText;
          forma.city.disabled = false;
        }
    }
  
    function ChangeCountry()
    {
      cid = forma.country.value;
      if (cid == -1)
        {
          forma.city.disabled = true;
        }
      else
        {
          xmlHttp = GetXmlHttpObject();
          url = "/test.php?do=getcities&cid=" + cid;
          xmlHttp.onreadystatechange = OnChangeCountry;
          xmlHttp.open("GET", url, true);
          xmlHttp.send(null);
        }
    }
  </script>

  <form name="forma" method="post">
    <select name="country" onchange="ChangeCountry()">
      <option value="-1">Выберите страну...
      <?
        
for ($i 0$i count($countries); $i++)
          echo 
'<option value="'.$i.'">'.$countries[$i]."\n";
      
?>
    </select>
    <select name="city" disabled>
      <option value="-1">Выберите город...
    </select>
  </form>
</body>
</html>
 
Ответить с цитированием

  #6  
Старый 12.01.2009, 11:34
Joker-jar
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
С нами: 10088966

Репутация: 646


По умолчанию

Борода в IE. Он не хочет innerHTML в select пихать. Пришлось сделать через DOM. Не совсем красиво, но мысль ты должен уловить:

PHP код:
<?

  $countries 
= array('Россия''США''Германия');
  
$cities = array(array('Москва''Тверь''Уфа'), array('Нью-Йорк''Сан-Франциско''Бостон'), array('Берлин''Гамбург'));

  if (isset(
$_GET['do']) && $_GET['do'] === 'getcities')
    {
      
$cid intval($_GET['cid']);
      echo 
'-1;Выберите город...'."\n";
      for (
$i 0$i count($cities[$cid]); $i++)
        {
          echo 
$i.';'.$cities[$cid][$i];
          if (
$i count($cities[$cid]) - 1) echo "\n";
        }
      exit;
    }

?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>

  <script>
    function GetXmlHttpObject()
    {
      var objXMLHttp=null;
      if (window.XMLHttpRequest)
        {
          objXMLHttp=new XMLHttpRequest();
        }
      else
        if (window.ActiveXObject)
          {
            objXMLHttp=new ActiveXObject('Microsoft.XMLHTTP');
          }
        return objXMLHttp;
    }
    
    function OnChangeCountry()
    {
      if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete')
        {
          opts = xmlHttp.responseText.split("\n");
          forma.city.options.length = 0;
          for (i = 0; i < opts.length; i++)
            {
              opt = opts[i].split(";");
              forma.city.options[i] = new Option(opt[1], opt[0]);
            }
          //forma.city.innerHTML = xmlHttp.responseText;
          forma.city.disabled = false;
        }
    }
  
    function ChangeCountry()
    {
      cid = forma.country.value;
      if (cid == -1)
        {
          forma.city.disabled = true;
        }
      else
        {
          xmlHttp = GetXmlHttpObject();
          url = "/test.php?do=getcities&cid=" + cid;
          xmlHttp.onreadystatechange = OnChangeCountry;
          xmlHttp.open("GET", url, true);
          xmlHttp.send(null);
        }
    }
  </script>

  <form name="forma" method="post">
    <select name="country" onchange="ChangeCountry()">
      <option value="-1">Выберите страну...
      <?
        
for ($i 0$i count($countries); $i++)
          echo 
'<option value="'.$i.'">'.$countries[$i]."\n";
      
?>
    </select>
    <select name="city" disabled>
      <option value="-1">Выберите город...
    </select>
  </form>
</body>
</html>
 
Ответить с цитированием

  #7  
Старый 12.01.2009, 12:25
svesve
Постоянный
Регистрация: 15.06.2007
Сообщений: 527
С нами: 9950786

Репутация: 214


По умолчанию

Спс все работает!
 
Ответить с цитированием

  #8  
Старый 12.01.2009, 13:06
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
С нами: 10021597

Репутация: 905


По умолчанию

Еще вариант
Две таблицы
Таблица Отделы - поля ид отдела, название отдела.
Таблица Должности - ид должности, ид отдела, название должности.
PHP код:
<?php
  $connect 
pg_connect ('host=xxx.xxx.xxx.xxx dbname=xxx user=xxx password=xxx');
  if (!
$connect) {
    echo 
'Fuck';
  } else {
    
pg_query ($connect'set client_encoding=utf8');
    
$text "<html>\n<head>\n<title>Page Title</title>\n";
    
$text .= "</head>\n";
    
$text .= "<body>\n";
    
$text .= "<form name=\"frm\">\n";
    
$text .= "<select id=\"sel1\" onClick=\"location.href = '/test_a.php?otd_id=' + this.value\">\n";
    
$otd pg_query ($connect'select id, name from otd order by id');
    if (isset (
$_GET['otd_id']) && !empty ($_GET['otd_id']))
      
$otd_id intval ($_GET['otd_id']);
    else
      
$otd_id = -1;
    while (
$otd_res pg_fetch_array ($otd)) {
      
$text .= "<option value=\"{$otd_res['id']}\" " . ($otd_id >= && $otd_res['id'] == $otd_id 'selected' '') . ">{$otd_res['name']}</option>\n";
    }
    
$text .= "</select><br><br><br>\n";
    
$text .= "<select id=\"sel2\">\n";
    if (
$otd_id >= 0) {
      
$dolg pg_query ($connect'select id, otd_id, name from dolg where otd_id = ' $otd_id);
      while (
$dolg_res pg_fetch_array ($dolg)) {
        
$text .= "<option value={$dolg_res['id']}>{$dolg_res['name']}</option>\n";
      }
    }
    
$text .= "</select>";
    
$text .= "</form>\n";
    
$text .= '</body></html>';
    echo 
$text;
    
pg_close ($connect);
  }
?>
Для постгреса, но не думаю, что возникнет проблема перевести на мускуль. Тестилось на FF & O.

Последний раз редактировалось krypt3r; 12.01.2009 в 13:09..
 
Ответить с цитированием

  #9  
Старый 12.01.2009, 13:34
svesve
Постоянный
Регистрация: 15.06.2007
Сообщений: 527
С нами: 9950786

Репутация: 214


По умолчанию

Во на пыхе немного понятней для меня
спс,щас буду его под себя крутить!
один вопрос,когда идет выбор из списка почемуто если просто кликнем на раскрытие то сразу идет выборка 0 ид,но если зажать кнопку и выбрать нужный отдел то выбирает то что надо.....мб баг?
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...