Advertisement
Guest User

Untitled

a guest
Aug 19th, 2010
2,796
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.70 KB | None | 0 0
  1. <?php
  2. header('Content-Type: text/html; charset=utf-8');
  3.  
  4. /*
  5. CREATE TABLE IF NOT EXISTS `city` (
  6.   `id` smallint(5) unsigned NOT NULL auto_increment,
  7.   `name` varchar(100) NOT NULL default '',
  8.   `pid` smallint(5) unsigned NOT NULL default '0',
  9.   PRIMARY KEY  (`id`)
  10. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
  11.  
  12. INSERT INTO `city` (`id`, `name`, `pid`) VALUES
  13. (1, 'Категория 1', 0),
  14. (2, 'Категория 2', 0),
  15. (3, 'Категория 1.1', 1),
  16. (4, 'Категория 1.2', 1),
  17. (5, 'Категория 2.1', 2),
  18. (6, 'Категория 2.1', 2);
  19. */
  20.  
  21. mysql_connect('localhost', '...', '...');
  22. mysql_select_db('...');
  23. mysql_query("SET NAMES 'UTF8'");
  24.  
  25. $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
  26.  
  27. // возвращаем список городов
  28. if ($action == 'getCity')
  29. {
  30.     $result = mysql_query("SELECT id, name FROM city WHERE pid = '" . (int)$_GET['id'] . "'");
  31.  
  32.     if ($result)
  33.     {
  34.         $city = array();
  35.        
  36.         while ($row = mysql_fetch_array($result))
  37.         {
  38.             $city[$row['id']] = $row['name'];
  39.         }
  40.    
  41.         echo json_encode($city);
  42.     }
  43.     else
  44.     {
  45.         echo json_encode(array('Выберите область'));
  46.     }
  47.  
  48.     exit;
  49. }
  50.  
  51. // выводим пришедшие данные
  52. if ($action == 'postResult')
  53. {
  54.     echo '<pre>' . htmlspecialchars(print_r($_POST, true)) . '</pre>';
  55.     exit;
  56. }
  57. ?>
  58. <!DOCTYPE html>
  59. <html>
  60. <head>
  61.     <title>Зависимые списки</title>
  62.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  63.     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
  64.     <style>
  65.         body {font-family:Verdana; font-size:12px;}
  66.     </style>
  67.     <script type="text/javascript">
  68.     // <![CDATA[
  69.         function loadCity(select)
  70.         {
  71.             var citySelect = $('select[name="city"]');
  72.             citySelect.attr('disabled', 'disabled'); // делаем список городов не активным
  73.            
  74.             // послыаем AJAX запрос, который вернёт список городов для выбранной области
  75.             $.getJSON('index.php', {action:'getCity', id:select.value}, function(cityList){
  76.                
  77.                 citySelect.html(''); // очищаем список городов
  78.                
  79.                 // заполняем список городов новыми пришедшими данными
  80.                 $.each(cityList, function(i){
  81.                     citySelect.append('<option value="' + i + '">' + this + '</option>');
  82.                 });
  83.                
  84.                 citySelect.removeAttr('disabled'); // делаем список городов активным
  85.                
  86.             });
  87.         }
  88.     // ]]>
  89.     </script>
  90. </head>
  91. <body>
  92.     <form action="index.php" method="post">
  93.         <select name="region" onchange="loadCity(this)">
  94.             <option></option>
  95.            
  96.             <?php
  97.             $result = mysql_query("SELECT id, name FROM city WHERE pid = 0");
  98.            
  99.             while ($row = mysql_fetch_array($result))
  100.             {
  101.                 echo '<option value="' . $row['id'] . '">' . $row['name'] . '</option>' . "\n";
  102.             }
  103.             ?>
  104.            
  105.         </select>
  106.        
  107.         <select name="city" disabled="disabled">
  108.             <option>Выберите область</option>
  109.         </select>
  110.  
  111.         <input type="hidden" name="action" value="postResult" />
  112.         <input type="submit" value="отправить" />
  113.     </form>
  114.    
  115.     <br /><br /><a href="/blog/javascript/36">вернуться к статье</a>
  116. </body>
  117. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement