[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка выпадающими списками
Карандышевъ
Я новичок, хочу своими руками реализовать следующее:

Есть 10 страниц, к примеру, названные:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
... и есть 3 категории:
x, y, z,

к категории X относятся 1, 2 и 3 страницы;
к категории Y: 4, 5, 6, 7
z: 8, 9, 10

Я хочу сделать фильтр, который будет представлять собой 2 выпадающих списка.
1й предлагает выбрать категорию (X, Y или Z), а второй в зависимости от категории, установленной в 1 списке, предлагает выбрать страницы.

Т.е. если в 1 списке я выбираю Х, то во 2м списке мне доступны только 1-3 страницы.

Будет масштабирование. Количество категорий вырастет не значительно, количество страниц будет расти Мне подсказали, что это следует делать через JS. Может у кого есть примеры подобного кода или кто может посоветует литературу для решения этой задачи.

Просьба, не путайте. Если не можете дать серьезный ответ, лучше не отвечайте вообще.
Michael
http://phpforum.ru/index.php?showtopic=48050

_____________
There never was a struggle in the soul of a good man that was not hard
Карандышевъ
Спасибо!
Карандышевъ
У меня должны быть установленны какие-нибудь программы, кроме, Денвера и Алаборн istyle, чтобы заработал этот код:

<?php

/* Выбор марка, модель, год выпуска автомобиля с использованием технологии 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 = mysql_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(mysql_num_rows($res)>1) */ echo '<option value=0 selected>Выберите модель</option>';

while($row = mysql_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 = mysql_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 = mysql_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>"
;

mysql_close();

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, '','',''); "> Иностранное ТС<br>

<input
type="radio" value="2" name="product"

onClick="ajaxLoad('marka', '<?=$script?>?product='+this.value, '','',''); "> Отечественное ТС<br>

<td
width="250"> 



<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 = sql('SELECT * FROM '.db_prefix.'marka WHERE product=1 ORDER by name');

while($row = mysql_fetch_array($res))

echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>\n";

?>

</select>

<tr>

<td
colspan="3" class="blank">

<tr>

<td
id="modelt">Модель ТС

<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>

<tr>

<td
colspan="3" class="blank">

<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>



</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>



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

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