За последние 24 часа нас посетили 55038 программистов и 1749 роботов. Сейчас ищут 820 программистов ...

Скрипт выбора региона города улицы дома

Тема в разделе "PHP и базы данных", создана пользователем samara, 5 май 2015.

  1. samara

    samara Новичок

    С нами с:
    5 май 2015
    Сообщения:
    46
    Симпатии:
    0
    Структура :
    Код (Text):
    1. CREATE TABLE Kladr ( `name` VARCHAR( 40 ),
    2. `socr` VARCHAR( 10 ),
    3. `code` VARCHAR( 13 ),
    4. `index` VARCHAR( 6 ),
    5. `gninmb` VARCHAR( 4 ),
    6. `uno` VARCHAR( 4 ),
    7. `ocatd` VARCHAR( 11 ),
    8. `status` VARCHAR( 1 )) ;
    9.  
    10. CREATE TABLE Street (`name` VARCHAR( 40 ),
    11. `socr` VARCHAR( 10 ),
    12. `code` VARCHAR( 17 ),
    13. `index` VARCHAR( 6 ),
    14. `gninmb` VARCHAR( 4 ),
    15. `uno` VARCHAR( 4 ),
    16. `ocatd` VARCHAR( 11 )) ;
    17.  
    18. CREATE TABLE Doma (`name` VARCHAR( 40 ),
    19. `korp` VARCHAR( 10 ),  
    20. `socr` VARCHAR( 10 ),
    21. `code` VARCHAR( 19 ),
    22. `index` VARCHAR( 6 ),
    23. `gninmb` VARCHAR( 4 ),
    24. `uno` VARCHAR( 4 ),
    25. `ocatd` VARCHAR( 11 ));
    26.  
    27. CREATE TABLE Flat (`name` VARCHAR( 40 ),
    28. `code` VARCHAR( 23 ),
    29. `index` VARCHAR( 6 ),
    30. `gninmb` VARCHAR( 4 ),
    31. `uno` VARCHAR( 4 ),
    32. `np` VARCHAR( 4 ));
    33.  
    34. CREATE TABLE Socrbase(`level` VARCHAR( 5 ),
    35. `scname` VARCHAR( 10 ),
    36. `socrname` VARCHAR( 29 ),
    37. `kod_t_st` VARCHAR( 3 ));
    38.  
    39.  
    40. CREATE TABLE Altnames(`oldcode` VARCHAR( 19 ),
    41. `newcode` VARCHAR( 19 ),
    42. `level` VARCHAR( 1 ));
    43.  
    44. CREATE TABLE country(`name` VARCHAR( 40 ),
    45. `id` VARCHAR( 19 ));
    скрипт:
    Код (Text):
    1. <?
    2. // указываем параметры для подключения к MySQL
    3. $host='localhost'; // имя хоста
    4. $database='baza'; // имя базы данных
    5. $user='admin'; // заданное вами имя пользователя
    6. $pswd='pasw'; // заданный вами пароль
    7. // подключаемся к MySQL
    8. $dbh = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
    9. mysql_select_db($database) or die("Не могу подключиться к базе.");
    10.  
    11. define("db_prefix","pb_");
    12.  
    13. function is_sel($a, $field)
    14. {
    15.   $b = isset($_POST[$field])?$_POST[$field]:NULL;
    16.   if($a == $b) return 'selected="selected"';
    17. }
    18.  
    19. $res = mysql_query('SELECT * FROM '.db_prefix.'country');
    20. ?>
    21. <form id="frm" method="post">
    22. <select name="country" onchange="document.getElementById('frm').submit()" >
    23. <option value='null'>- Выберите страну -</option>
    24. <?
    25. // выводим все строки из столбца name таблицы country
    26.     while($row = mysql_fetch_array($res))
    27.       echo "<option ".is_sel($row['id'],'country')." value='" . $row['id'] . "'>" . $row['name'] . "</option>\r\n";
    28. echo "</select>";
    29.  
    30. if(isset($_POST['country']))
    31. {
    32.   $res=mysql_query('SELECT * FROM '.db_prefix.'area WHERE country="'.mysql_real_escape_string($_POST['country']).'"');
    33.  
    34.   if(mysql_num_rows($res)){
    35.  
    36.   echo "<select name=\"region\" onchange=\" document.getElementById('frm').submit();\" >
    37.     <option  id=\"region\" value='0'>- Выберите pегион -</option>";
    38.  
    39.     while($row = mysql_fetch_array($res))
    40.       echo "<option ".is_sel($row['id'],'region')." value='" . $row['id'] . "'>" . $row['name'] . "</option>\r\n";
    41.  
    42.   echo "</select>";
    43.  
    44.   }else{ // выбираю города без учета региона
    45.  
    46.   $res=mysql_query('SELECT * FROM '.db_prefix.'city WHERE country='.mysql_real_escape_string($_POST['country']));
    47.  
    48.   echo "<select id=\"city\" name=\"city\" onchange=\"document.getElementById('frm').submit()\" >
    49.     <option  value='0'>- Выберите город -</option>";
    50.  
    51.     while($row = mysql_fetch_array($res))
    52.       echo "<option ".is_sel($row['id'],'city')." value='" . $row['id'] . "'>" . $row['name'] . "</option>\r\n";
    53.  
    54.   echo "</select>";
    55.  
    56.   }
    57.  
    58. }
    59.  
    60. $region = isset($_POST['region'])?$_POST['region']:NULL;
    61. if($region && $region !== 0)
    62. {
    63.   $res=mysql_query('SELECT * FROM '.db_prefix.'city WHERE area='.(int)$_POST['region']);
    64.  
    65.   echo "<select id=\"city\" name=\"city\" onchange=\"document.getElementById('frm').submit()\" >
    66.     <option  value='0'>- Выберите город -</option>";
    67.  
    68.     while($row = mysql_fetch_array($res))
    69.       echo "<option ".is_sel($row['id'],'city')." value='" . $row['id'] . "'>" . $row['name'] . "</option>\r\n";
    70.  
    71.   echo "</select>";
    72.  
    73. }
    74. ?>
    75. </form>
    76. <?
    77. $city = isset($_POST['city'])?$_POST['city']:NULL;
    78. if($city && $city !== 0)
    79. {
    80.   $res=mysql_query('SELECT * FROM '.db_prefix.'city WHERE id='.(int)$_POST['city'].' LIMIT 1');
    81.   $row = mysql_fetch_array($res);
    82.   echo "<h1>Хочу в ".$row['name']."!</h1>";
    83. }
    84. ?>
    Данные планирую подтянуть из КЛАДР, затык собственно в :
    Код (Text):
    1. $res = mysql_query('SELECT * FROM '.db_prefix.'country');
    неработает
    Код (Text):
    1. $res = mysql_query('SELECT * FROM 'country');
    работает, но русские буквы отражает ?????
    не грешно ли так использовать, сильно не пиннайте только учусь,....
    если чтото у когото по интереснее есть если не жалко то преветствуется =)
     
  2. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Есть поинтереснее. mysqli_query, ибо mysql_query устарела.
    далее, я так полагаю, тут кое-что забыто: .$db_prefix.