[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по аяксу
roland_07
Есть вот такой код (позаимствованный):
HTML
var dr = document; 
var div_selectr; 
var reqr = Create();
    
    
function Razdel() 
{     
div_selectr = "podrazdel";     
var c = dr.getElementById('id_razdel').value; 
query = "id_razdel="+c; 
Request(query); 


function Create(){  
    if(navigator.appName == "Microsoft Internet Explorer"){  
        reqr = new ActiveXObject("Microsoft.XMLHTTP");  
    }else{  
        reqr = new XMLHttpRequest();  
    }  
    return reqr;  
}  
function Request(query) 

reqr.open('post', 'selectsr.php' , true ); 
reqr.onreadystatechange = Refresh; 
reqr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); 
reqr.send(query);              
}  
function Refresh() 

var c,d;
c = reqr.readyState; 
    if( c == 4 ) 
    {
    d = reqr.responseText;  
    
    dr.getElementById(div_selectr).innerHTML = d; 
    }
}


Вопрос: мне необходимо сделать чтобы было два отдельных селекта страны- города и разделы-подразделы, что необходимо добавить или убрать.
Я новичок и только начинаю во всем этом разбираться, подскажите пожалуйста. Заранее спасибо



Спустя 24 минуты, 18 секунд (18.06.2009 - 23:25) twin написал(а):
Ну как минимум нужно добаввить серверную часть.

Спустя 50 минут, 2 секунды (19.06.2009 - 00:15) roland_07 написал(а):
два файла на рнр у меня есть
вот:
PHP
<?
function 
razdel()
{
$razdel_id = isset($_POST['id_razdel'])?$_POST['id_razdel']:NULL;
// выбираем столбец name из таблицы country
$query "SELECT * FROM `razdel`";
$res mysql_query($query);
$select "<select style=color:0000FF id=\"id_razdel\" name=\"id_razdel\" onchange=\"Razdel()\" >
<option value='0'>- Выберите раздел -</option>"
;
    while(
$row mysql_fetch_array($res))
    {
    
$select .= "<option ";
        if(
$row['id_razdel'] == $razdel_id)
        
$select .="selected=\"selected\"";
    
$select .= " value='".$row['id_razdel']."'>".$row['r_name']."</option>\r\n";
    }
$select .= "</select>";    
return     
$select;
}


и второй

PHP
include_once("config.php");  
 
 function 
podrazdel()
{
$razdel_id = isset($_POST['id_razdel'])?$_POST['id_razdel']:NULL;
$query "SELECT * FROM `podrazdel` WHERE `id_razdel`='".(int)$razdel_id."'";
$res mysql_query($query);
$select "<select  style=color:0000FF id=\"id_podrazdel\"  name=\"podrazdel\"  >
<option   value='0'>-  &nbsp; Выберите подраздел  &nbsp; -</option>"
;
    while(
$row mysql_fetch_array($res))
    {
    
$select .= "<option value='".$row['id_podrazdel']."'>".$row['pd_name']."</option>\r\n"
    }
$select .= "</select>";    
return     
$select;
}


if(isset(
$_POST['id_razdel'])) 
echo 
podrazdel(); 

конфигурационный как и у всех

Спустя 7 часов, 4 минуты, 57 секунд (19.06.2009 - 07:20) twin написал(а):
Вот на неограниченное количество
HTML
function Razdel(id)
{
div_selectr = "podrazdel_"+id;
var c = dr.getElementById('id_razdel_'+id).value;
query = "id_razdel="+c+'&sel='+id;
Request(query);
}


PHP
<?php
function razdel
($sel)
{
$razdel_id = isset($_POST['id_razdel'])?$_POST['id_razdel']:NULL;
// выбираем столбец name из таблицы country
$query = "SELECT * FROM `razdel_".$sel."`";
$res = mysql_query($query);
$select = "<select style=color:0000FF id=\"id_razdel_".$sel."\" name=\"id_razdel_".$sel."\" onchange=\"Razdel(".$sel.")\" >
<option value='0'>- Выберите раздел -</option>"
;
    while($row = mysql_fetch_array($res))
    {
    $select .= "<option ";
        if($row['id_razdel'] == $razdel_id)
        $select .="selected=\"selected\"";
    $select .= " value='".$row['id_razdel']."'>".$row['r_name']."</option>\r\n";
    }
$select .= "</select>";    
return     $select
;
}




PHP
<?php
include_once("config.php");  
 
 function podrazdel
($sel)
{
$razdel_id = isset($_POST['id_razdel'])?$_POST['id_razdel']:NULL;
$query = "SELECT * FROM `podrazdel_".$sel."` WHERE `id_razdel`='".(int)$razdel_id."'";
$res = mysql_query($query);
$select = "<select  style=color:0000FF id=\"id_podrazdel_".$sel."\"  name=\"podrazdel_".$sel."\"  >
<option   value='0'>-  &nbsp; Выберите подраздел  &nbsp; -</option>"
;
    while($row = mysql_fetch_array($res))
    {
    $select .= "<option value='".$row['id_podrazdel']."'>".$row['pd_name']."</option>\r\n"; 
    
}
$select .= "</select>";    
return     $select
;
}

$sel = isset($_POST['sel'])?$_POST['sel']:NULL;
if(isset(
$_POST['id_razdel'])) 
echo podrazdel
($sel);


Вызывать так:

HTML
<?php echo razdel(1) ?>
<div id="podrazdel_1" ></div>
<?php echo razdel(2) ?>
<div id="podrazdel_2" ></div>
<?php echo razdel(3) ?>
<div id="podrazdel_3" ></div>


Ну и таблицы должны соответственно быть пронумерованы

Спустя 3 дня, 1 час, 49 минут, 55 секунд (22.06.2009 - 09:10) roland_07 написал(а):
а еще вопрос: как сделать так чтобы второй селект не был скрыт, как сделать его видимым при загрузке страницы еще до выбора раздела?

Спустя 16 минут, 28 секунд (22.06.2009 - 09:26) twin написал(а):
Тут весь смысл в том, что второй селект подгружается с уже нужными значениями. Если вытаскивать его сразу, то в него пропишется вся таблица. Не вижу логики...

Спустя 1 час, 35 минут, 57 секунд (22.06.2009 - 11:02) HardWoman написал(а):
Если например подгружать сразу первый селект активным и необходимое количество неактивных без значений (или с одним по умолчанию). То при выборе значения из первого селекта. при помощи ajax - можно подгружать нужные значения во второй селект.

Как это делается не скажу. Чтоб воспроизвести такой код - мне нужно пару дней с книгами посидеть smile.gif

Но такое решение делал мой преподаватель. Ои но не очень сложное, но реализовалось на js и ajax (асинхронные обращения к серверу посредством js)Сделать такое можно.

Если отыщу скрипт - скину

Спустя 20 минут, 35 секунд (22.06.2009 - 11:23) roland_07 написал(а):
Спасибо!

Спустя 15 минут, 54 секунды (22.06.2009 - 11:39) roland_07 написал(а):
Вот еще вопрос назрел: после проверки данных формы если что-то не так заполнено все данные сохраняются в форме кроме поля в разделами, оно исчезает, и приходится снова выбирать раздел потом из появившегося списка подраздел, можно ли как-то сделать так чтобы оно не исчезало после валидации?

Спустя 48 минут, 28 секунд (22.06.2009 - 12:27) twin написал(а):
HTML
<div id="podrazdel_1" >
<select>
<option value='0'>- &nbsp; Выберите подраздел &nbsp; -</option>
</select>
</div>

Вот так будет пустой, потом загрузится нужный.
Быстрый ответ:

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