Таблица регионов 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>";
}
?>