AAA Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Выбор марка->модель автомобиля с использованием Ajax

Имеются два селекта: марка и модель и переключатель: иностранное или отечественное авто. При выборе значения переключателя подгружается список марок автомобилей, при выборе марки подгружается список моделей, а при выборе модели можно ввести дополнительно год выпуска и/или загрузить некоторую информацию об этом автомобиле.

Производитель транспортного средства (ТС)  Иностранное ТС
 Отечественное ТС
 
Марка ТС
Модель ТС
Год выпуска ТС
Исходный код примера:
/* Выбор марка, модель, год выпуска автомобиля с использованием технологии Ajax
Взято http://htmlweb.ru/ajax/example/automarka.php
Разрешается использование в любых своих разработках.
Размешение кода в открытом доступе разрешается только с сохранением активной ссылки на источник.
Все остальные права принадлежат Колесникову Дмитрию Геннадьевичу (kdg@htmlweb.ru, ICQ 17754093).
*/

require_once($_SERVER['DOCUMENT_ROOT'].'/config.php');

CREATE TABLE IF NOT EXISTS pb_marka (
  id        int(10) unsigned NOT NULL auto_increment,
  `name`    char(64) collate cp1251_bin NOT NULL,
  product    tinyint(3) unsigned NOT NULL,
  PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin;

CREATE TABLE IF NOT EXISTS pb_model (
  id        int(10) unsigned NOT NULL auto_increment,
  marka        int(10) unsigned NOT NULL,
  `name`    char(64) collate cp1251_bin NOT NULL,
  PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin;

if(isset($_GET['product'])){
   $product=$_SESSION['product']=intval($_GET['product']); // 1-импортная
   echo '<option value=0 selected>Выберите марку</option>';
   $res = sql('SELECT * FROM '.db_prefix.'marka WHERE product='.$product.' ORDER by name');
   while($row = mysqli_fetch_array($res))
    echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>\n";
   exit;
}
elseif(isset($_GET['marka'])){
   $marka=$_SESSION['marka']=intval($_GET['marka']);
   $res = sql('SELECT * FROM '.db_prefix.'model WHERE marka='.$marka.' ORDER by name');
   /* todo if(DB::num_rows($res)>1) */ echo '<option value=0 selected>Выберите модель</option>';
    while($row = mysqli_fetch_array($res))
        echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>\n";
   exit;
}elseif(isset($_GET['model'])){
    $id_model=intval(param('model'));
    $res = sql('SELECT * FROM '.db_prefix.'model WHERE id='.$id_model.' LIMIT 1');
    if(!($row = mysqli_fetch_array($res)))die;
    $model=$row['name'];
    $id_marka=intval($row['marka']);
    $res = sql('SELECT * FROM '.db_prefix.'marka WHERE id='.$id_marka.' LIMIT 1');
    if(!($row = mysqli_fetch_array($res)))die;
    $marka=$row['name'];
    $product=intval($row['product']);

echo "
<div style='border: #C5D3DC 1px solid; padding: 10px; width: 97%;'>
производитель=<b>".($product==1?' импортное ТС':'отечественное ТС')."</b>
<br/>марка=<b>".$marka."</b>
<br/>модель=<b>".$model."</b>
</div>";
   die;
}


$script=@$_SERVER['SCRIPT_URL']; if(!$script)$script=@$_SERVER['REQUEST_URI'];

$_SESSION['marka']=$_SESSION['model']=0;
$_SESSION['product']=1;
?>
<table border="0" cellspacing="0" cellpadding="5" align="center">
<tr>
<td width="250">Производитель транспортного средства (ТС)
<td>
<input type="radio" CHECKED value="1" name="product"
    onClick="ajaxLoad('marka', '<?=$script?>?product='+this.value, '','',''); ">&nbsp;Иностранное ТС<br>
<input type="radio" value="2" name="product"
    onClick="ajaxLoad('marka', '<?=$script?>?product='+this.value, '','',''); ">&nbsp;Отечественное ТС<br>
<td width="250">&nbsp;

<tr>
<td colspan="3" class="blank">
<tr>
<td id="markat">Марка ТС
<td><select style="WIDTH: 200px; height:21" name="marka" id="marka" onLoad='this.focus = false;'
onChange="getObj('model').disabled=''; ajaxLoad('model', '<?=$script?>?marka='+this.options[this.selectedIndex].value, '','','');">
    <option value=0 selected>Выберите марку</option>
<?
$res = DB::sql('SELECT * FROM '.db_prefix.'marka WHERE product=1 ORDER by name');
while($row = DB::fetch_assoc($res))
   echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>\n";
?>
</select>
<tr>
<td colspan="3" class="blank">&nbsp;</td>
<tr>
<td id="modelt">Модель ТС</td>
<td><select style="WIDTH: 200px; height:21" name="model" id="model" <?=(@$marka?'':'disabled="disabled"') ?>
onChange="ajaxLoad('info', '<?=$script?>?model='+this.options[this.selectedIndex].value, '','','');" >
    <option value selected disabled="disabled">Выберите модель</option>
</select></td></tr>
<tr>
<td colspan="3" class="blank">&nbsp;</td>
<tr>
<td id="explt">Год выпуска ТС
<td><select style="WIDTH: 200px; height:21" name="expl">
    <option value selected>Выберите значение</option>
<? for($i=0;$i<=15;$i++) echo "<option value='".$i."'>".(intval(date("Y"))-$i)."</option>\n";
?>
</select></td></tr>

</table>

<div id="info"></div>


<script language=JavaScript><!--
function getObj(objID)
{
    if (document.getElementById) {return document.getElementById(objID);}
    else if (document.all) {return document.all[objID];}
    else if (document.layers) {return document.layers[objID];}
}

function ajaxLoad(obj,url,defMessage,post,callback){
  var ajaxObj;
  if (defMessage) document.getElementById(obj).innerHTML=defMessage;
  if(window.XMLHttpRequest){
      ajaxObj = new XMLHttpRequest();
  } else if(window.ActiveXObject){
      ajaxObj = new ActiveXObject("Microsoft.XMLHTTP");
  } else {
      return;
  }
  ajaxObj.open ((post?'POST':'GET'), url);
  if (post&&ajaxObj.setRequestHeader)
      ajaxObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=windows-1251;");

  ajaxObj.onreadystatechange = ajaxCallBack(obj,ajaxObj,(callback?callback:null));
  ajaxObj.send(post);
  return false;
  }
function updateObj(obj, data, bold, blink){
   if(bold)data=data.bold();
   if(blink)data=data.blink();
   document.getElementById(obj).innerHTML = data; // упрощенный вариант, работает не во всех браузерах
  }
function ajaxCallBack(obj, ajaxObj, callback){
return function(){
    if(ajaxObj.readyState == 4){
       if(callback) if(!callback(obj,ajaxObj))return;
       if (ajaxObj.status==200)
        updateObj(obj, ajaxObj.responseText);
       else updateObj(obj, ajaxObj.status+' '+ajaxObj.statusText,1,1);
    }
}}

//--></script>

config.php

// указываем параметры для подключения к MySQL
$host='localhost'; // имя хоста
$database='baza'; // имя базы данных
$user='admin'; // заданное вами имя пользователя
$pswd='pasw'; // заданный вами пароль
// подключаемся к MySQL
$dbh = mysqli_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
mysqli_select_db($dbh,$database) or die("Не могу подключиться к базе.");

define("db_prefix","pb_");

function sql($query) {
    global $dbh;
    $res=mysqli_query ( $dbh, $query );
    if(!$res)die("Запрос:\n".$query."\n");
    return $res;
}

Всего за 400руб вы получите полный код примера и наполненную базу в формате MySQL.

Регистрация Войти Войти через VK
При нажатии кнопки Оплатить и загрузить, Вы подтверждаете согласие с условиями использования скрипта, описанными на этой странице.
Вы будете перенаправлены на страницу выбора способа оплаты, после оплаты 400 рублей (~7$) начнется загрузка файла.
Чтобы мы не потеряли Вашу оплату при потере соединения, укажите Ваш действующий
адрес электронной почты
Сомневаетесь? Вы всегда сможете задать вопросы и получить помощь.


.

© Copyright 2008- by KDG



Rambler's Top100