[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регионы-города: select и checkbox
trish
Надо сделать выбор региона из списка (select), а потом чтоб показывались соответственные города в checkbox, чтобы их можно было выбирать и потом по соответствующему городу выводились данные.
Таблица регионов cms_prices_region имеет поля: region, name
Таблица городов cms_prices_cities имеет поля: city, name, region
Таблицы объединены по полю region.

Вот код с селектом и чекбоксами, на основе прочитанной темы Страна>Регион>Город selectы:


<?php
// указываем параметры для подключения к MySQL
$host='localhost'; // имя хоста
$database='mybase'; // имя базы данных
$user='root'; // заданное вами имя пользователя
$pswd=''; // заданный вами пароль
// подключаемся к MySQL

$dbh = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к базе.");

// выбираем столбец name из таблицы cms_prices_region
$query = "SELECT * FROM `cms_prices_region`";
$res = mysql_query($query);
function sel_region($a)
{
$b = isset($_POST['region'])?$_POST['region']:NULL;
if($a == $b)
return 'selected="selected"';
}

?>

<!-- создаем форму select для выбора областей -->
<form id="frm" action="" method="post">
<select
name="region" onchange="document.getElementById('city').selected='selected';
document.getElementById('frm').submit()"
>
<option
value='null'>- Выберите область -</option>
<?php

// выводим все строки из столбца name таблицы cms_prices_region
while($row = mysql_fetch_assoc($res))
echo "<option ".sel_region($row['region'])." value='" . $row['region'] . "'>" . $row['name'] . "</option>\r\n";
?>
</select>
<?php
function
sel_city($a)
{
$b = isset($_POST['city'])?$_POST['city']:NULL;
if($a == $b)
return 'selected="selected"';
}

$query = "SELECT * FROM `cms_prices_cities` WHERE `region`='".$_POST['region']."'";
$res = mysql_query($query);
echo "<br> <input type=checkbox name=city value='all' > Все города  ";
while($row= mysql_fetch_assoc($res)){
echo "   <input type=checkbox name=\"city\" value='" . $row['city'] . "' >". $row['name'] . "  ";
}

?>
</form>



тут не работает мгновенное обновление городов, только если нажать enter.... а вот как сделать, чтоб города в checkbpx обновлялись одновременно при выборе новой области и чтобы запомнить выбранные значения городов (для дальнейшей выборки)



Спустя 35 минут, 7 секунд (19.11.2010 - 13:20) vagrand написал(а):
ajax

Спустя 10 минут, 57 секунд (19.11.2010 - 13:31) trish написал(а):
вот в примере, где использованы 2 списка все получается без ajax

<?php
// указываем параметры для подключения к MySQL
$host='localhost'; // имя хоста
$database='mybase'; // имя базы данных
$user='root'; // заданное вами имя пользователя
$pswd=''; // заданный вами пароль
// подключаемся к MySQL

$dbh = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к базе.");

// выбираем столбец name из таблицы country
$query = "SELECT * FROM `cms_prices_region`";
$res = mysql_query($query);
function sel_country($a)
{
$b = isset($_POST['country'])?$_POST['country']:NULL;
if($a == $b)
return 'selected="selected"';
}

?>

<!-- создаем форму select для выбора региона -->
<form id="frm" action="" method="post">
<select
name="country" onchange="document.getElementById('region').selected='selected';
document.getElementById('frm').submit()"
>
<option
value='null'>- Выберите регион -</option>
<?php

// выводим все строки из столбца name таблицы country
while($row = mysql_fetch_assoc($res))
echo "<option ".sel_country($row['region'])." value='" . $row['region'] . "'>" . $row['name'] . "</option>\r\n";
?>
</select>
<?php
function
sel_region($a)
{
$b = isset($_POST['region'])?$_POST['region']:NULL;
if($a == $b)
return 'selected="selected"';
}

$query = "SELECT * FROM `cms_prices_cities` WHERE `region`='".$_POST['country']."'";
$res = mysql_query($query);

echo "<select name=\"region\" onchange=\" document.getElementById('frm').submit();\" >
<option id=
\"region\" value='0'>- Выберите город -</option>";

while($row = mysql_fetch_assoc($res))
echo "<option ".sel_region($row['city'])." value='" . $row['city'] . "'>" . $row['name'] . "</option>\r\n";

echo "</select>";
?>
</form>


Спустя 2 дня, 20 часов, 11 минут, 53 секунды (22.11.2010 - 09:42) trish написал(а):
заработало мгновенное обновление - надо код

<select name="country" onchange="document.getElementById('region').selected='selected';
document.getElementById('frm').submit()"
>

заменить на код

<select name="country" onchange="document.getElementById('frm').selected='selected';
document.getElementById('frm').submit()"
>


Спустя 11 минут, 5 секунд (22.11.2010 - 09:53) trish написал(а):
Вот теперь другая проблема, надо чтоб выводило на печать сообщение:
Выбранная область - 'donetsk' Выбранный город - 'konstantinovka', 'kramatorsk'

т.е. чтобы можно было выбрать несколько городов ....
вот что у меня получается:


<?php
// указываем параметры для подключения к MySQL
$host='localhost'; // имя хоста
$database='mybase'; // имя базы данных
$user='root'; // заданное вами имя пользователя
$pswd=''; // заданный вами пароль
// подключаемся к MySQL

$dbh = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к базе.");

// выбираем столбец name из таблицы cms_prices_region
$query = "SELECT * FROM `cms_prices_region`";
$res = mysql_query($query);
function sel_region($a)
{
$b = isset($_POST['region'])?$_POST['region']:NULL;
if($a == $b)
return 'selected="selected"';
}

?>

<!-- создаем форму select для выбора областей -->
<form id="frm" action="" method="post">
<select
name="region" onchange="document.getElementById('frm').selected='selected';
document.getElementById('frm').submit()"
>
<option
value='null'>- Выберите область -</option>
<?php

// выводим все строки из столбца name таблицы cms_prices_region
while($row = mysql_fetch_assoc($res))
echo "<option ".sel_region($row['region'])." value='" . $row['region'] . "'>" . $row['name'] . "</option>\r\n";
?>
</select>
<?php
function
sel_city($a)
{
$b = isset($_POST['city'])?$_POST['city']:NULL;
if($a == $b)
return 'checked="checked"';
}

$query = "SELECT * FROM `cms_prices_cities` WHERE `region`='".$_POST['region']."'";
$res = mysql_query($query);
echo "<br> <input type=checkbox name=city value='all' > Все города  ";
while($row= mysql_fetch_assoc($res)){
echo "   <input type=checkbox name=\"city\" value='" . $row['city'] . "' >". $row['name'] . "  ";
}

//кнопка Посмотреть
echo "<br><br><input type=submit name=OK value=Посмотреть>";

$ct="'{$_REQUEST['city']}'";
$ct1="'{$_REQUEST['region']}'";

?>
</form>

<?

if (isset($_REQUEST['OK'])){
echo "Выбранная область - $ct1 Выбранный город - <font color='#3366FF'> $ct </font>";
}
?>

Спустя 1 день, 23 часа, 51 минута, 5 секунд (24.11.2010 - 09:45) trish написал(а):
В общем разобралась, вот ниже рабочий код. Подскажите, пожалуйста, как вывести на печать и шифры и имена областей/городов? Переменная $ct1="'{$_REQUEST['region']}'"; дает шифр области.

$query = "SELECT * FROM `cms_prices_region`";
$res = $inDB->query($query);

function sel_region($a)
{
$b = isset($_POST['region'])?$_POST['region']:NULL;
if($a == $b)
return 'selected="selected"';
}

function sel_city($a)
{
$b = isset($_POST['city'])?$_POST['city']:NULL;
if($a == $b)
return 'checked="checked"';
}

?>

<form id="frm" action="" method="post">
<select
name="region" onchange="document.getElementById('frm').selected='selected';
document.getElementById('frm').submit()"
>
<option
value='null'>- Выберите область -</option>
<?php

while($row = mysql_fetch_assoc($res))
echo "<option ".sel_region($row['region'])." value='" . $row['region'] . "'>" . $row['name'] . "</option>\r\n";

?>
</select>
<?php


// Выбор городов по соответствующей области
$query = "SELECT * FROM `cms_prices_cities` WHERE `region`='".$_POST['region']."'";
$res = $inDB->query($query);
//формируется список городов из checkbox-ов
echo "<br> <input type=checkbox name=city[] value='all' > Все города  ";
while($row= mysql_fetch_assoc($res)){

$name_city="". $row['name'] ."";
echo "   <input type=checkbox name=\"city[]\" ".sel_city($row['city'])." value='" . $row['city'] . "' >". $name_city . "  ";
}

$ct1="'{$_REQUEST['region']}'";
echo "<br><br><input type=submit name=OK value=Посмотреть>";

?>
</form>

<?

if (isset($_REQUEST['OK'])){
echo "Выбранная область - $ct1,  ";
foreach($_POST['city'] as $id){
echo "Выбранный город - <font color='#3366FF'> $id </font><br><br>";
}
?>

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.