За последние 24 часа нас посетили 16550 программистов и 1679 роботов. Сейчас ищут 952 программиста ...

Ох уж эти динамические select'оры

Тема в разделе "JavaScript и AJAX", создана пользователем sano45, 11 авг 2011.

  1. sano45

    sano45 Активный пользователь

    С нами с:
    28 июл 2011
    Сообщения:
    15
    Симпатии:
    0
    Уже давно бьюсь с этой динамической формой... Нужна хелпа

    index.php:

    PHP:
    1.  
    2.  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//RU" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    3.  <html xmlns="http://www.w3.org/1999/xhtml">
    4.  <head>
    5.  <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
    6.  <script language="JavaScript" src="js/jquery.js"></script>
    7.  <script language="JavaScript">
    8. function GetCity(){
    9.  $('#districtselect').html('');
    10.  $('#cityselect').html('');
    11.  $('#homeselect').html('');
    12.  var city=$("#city").val();
    13.  var url = "select.php?city="+city;
    14.      $.ajax({
    15.          url: url,
    16.          type: "GET",
    17.          success: function(e){
    18.              $("#districtselect").html(e);
    19.          }
    20.      });
    21.  }
    22.  
    23.  function GetDistrict(){
    24.  $('#streetselect').html('');
    25.  $('#homeselect').html('');
    26.  var district=$('#selecteddistrict').val();
    27.  var url = "select.php?district="+district;
    28.      $.ajax({
    29.          url: url,
    30.          type: "GET",      
    31.          success: function(e){
    32.              $('#streetselect').html(e);
    33.          }
    34.      });
    35.  }
    36.  
    37.  function SelectStreet(){
    38.  $('#homeselect').html('');
    39.  var home=$('#selectedhome').val();
    40.  var url = "select.php?home="+home;
    41.      $.ajax({
    42.          url: url,
    43.          type: "GET",      
    44.          success: function(e){
    45.              $('#homeselect').html(e);
    46.          }
    47.      });
    48.  }
    49.  </script>
    50.  </head>
    51.  <body>
    52.  <div style="padding:20px;background-color:#F5F5F5;border:1px solid #FF8C00;position:absolute;top:20%;left:20%">
    53.  <center>
    54.  <form method="GET" action="regions.php">
    55.  
    56. <? include ('select/city.php') ?>
    57. <div id="districtselect"></div>
    58. <div id="streetselect"></div>
    59. <div id="homeselect"></div>
    60.  </form>
    61.  </center>
    62.  </div>
    63.  </body>
    64.  </html>
    65.  
    city.php :

    PHP:
    1.  
    2. <?
    3. include ("bd.php");
    4.  
    5. $qr=mysql_query("SELECT * FROM city",$db);
    6. $qrr=mysql_query("SELECT * FROM city ORDER BY id desc limit 1",$db);
    7. $size=mysql_fetch_array($qrr);
    8.  
    9. if ($size[id] == 1){$size2 = ($size[id]) + 1;} else {$size2 = $size[id];}
    10.  
    11. echo "
    12.        <label>Город</label><br>
    13.        <select id='city' size='$size2' onChange='GetCity()'>
    14.    ";
    15. do {
    16. if($row > 0)
    17. printf ("<option value='%s'>%s</option>",$row[eng],$row[name]);
    18. } while ($row=mysql_fetch_array($qr));
    19. echo "</select>";
    20. ?>
    21.  
    select.php :

    PHP:
    1.  
    2. <?
    3. if(isset($_GET['city'])){
    4.      $link = mysql_connect('localhost', '****', '****') or die('Could not connect: ' . mysql_error());
    5.      mysql_select_db('my_db') or die('Could not select database');
    6.      $city=strval($_GET['city']);
    7.      $query = 'SELECT * FROM district WHERE "city_name"="$city"';
    8.      $result = mysql_query($query) or die('Query failed: ' . mysql_error());
    9.  
    10.      echo '<select id="selecteddistrict" name="district" onChange="GetDistrict()">';
    11.      while($line = mysql_fetch_array($result, MYSQL_ASSOC)){
    12.      echo '<option value="'.$line['id'].'">'.$line['name'].'</option>';
    13.      }
    14.      echo '</select>';
    15. }
    16. ?>
    17.  
    Все проходит Нормально.
    Первый селектор выбирал. Появляется второй селектор как нужно!
    НО в нем пусто... Смотрю в Firebug:
    и там:
    HTML:
    1. <select id="selecteddistrict" name="district" onChange="GetDistrict()"></select>
    Тоесть проблема в вытаскивание из базы....
     
  2. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    В фаербаге есть инфа о запросе и ошибке в случае если она есть , если нет , то будет ответ гет запроса
     
  3. sano45

    sano45 Активный пользователь

    С нами с:
    28 июл 2011
    Сообщения:
    15
    Симпатии:
    0
    Это ясно. Как раз GET запрос прошел удачно и ответ получен:
    HTML:
    1.  <select id="selecteddistrict" name="district" onChange="GetDistrict()"></select>
    но нету вот этой части:
    PHP:
    1.  
    2.      while($line = mysql_fetch_array($result, MYSQL_ASSOC)){
    3.      echo '<option value="'.$line['id'].'">'.$line['name'].'</option>';
    4.      }
    и не понятно почему....
     
  4. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    $query = "SELECT * FROM district WHERE city_name='$city'";
     
  5. sano45

    sano45 Активный пользователь

    С нами с:
    28 июл 2011
    Сообщения:
    15
    Симпатии:
    0
    Благадарю:) Все заработало!
     
  6. sano45

    sano45 Активный пользователь

    С нами с:
    28 июл 2011
    Сообщения:
    15
    Симпатии:
    0
    Еще пару вопросов:

    1. Как можно сделать, чтобы русский в запросе оставался русским, а не:
    http://test1.ru/13/select.php?city=%D0% ... 0%B0%D0%BD
    А должен был: http://test1.ru/13/select.php?city=Курган
    2. Есть база:
    [sql]INSERT INTO `address` (`id`, `city`, `district`, `street`, `home`) VALUES
    (1, 'Курган', 'Заозерный', '3-микрорайон', '9 дом'),
    (2, 'Курган', 'Заозерный', '6-микрорайон', '10 дом'),
    (3, 'Курган', 'Северный', 'Зеленая', '4 дом'),
    (4, 'Курган', 'Северный', 'Садовая', '50 дом'),
    (5, 'Курган', 'Шевелевка', '4-я Больничная', '10 дом');[/sql]

    например я делаю запрос:
    [sql] mysql_query("SELECT city FROM address",$db);[/sql]

    тогда он мне в селекторе выводит 5 раз город Курган. А мне нужно чтобы он проверял
    1=2=3=4=5(выводил 1 раз город Курган), а если 1=2=3=4!=5 и начинается 5=6=7=8(записываем город другой)
    Но чтобы все районы выводил и также проверял на одинаковость)
     
  7. sano45

    sano45 Активный пользователь

    С нами с:
    28 июл 2011
    Сообщения:
    15
    Симпатии:
    0
    И стоит ли себе выносить мозг с этим? Или лучше разделить базы?
    База City
    База District
    и т.д.