Перейти к содержимому


Пользователь месяца
ShowPrint ShowPrint 1-й за Сентябрь
Очков активности: 283 2 темы, 21 сообщение, 7 баллов репутации
Сайт: ShowPrint.ru
ТОП самых активных за этот месяц
  • Фотография Medvedoc
    #1

    Medvedoc
    Очков активности: 510 9 тем, 58 сообщений, 4 балла репутации

  • Фотография ShowPrint
    #2

    ShowPrint (ShowPrint.ru)
    Очков активности: 312 Вне конкурса за определение пользователя месяца

  • Фотография Ixman
    #3

    Ixman (o5cat.ru)
    Очков активности: 216 0 тем, 24 сообщения, 6 баллов репутации

  • Фотография BLIK
    #4

    BLIK
    Очков активности: 210 Вне конкурса за определение пользователя месяца

  • Фотография Игорь Ку
    #5

    Игорь Ку (dudesday.ru)
    Очков активности: 126 4 темы, 9 сообщений, 4 балла репутации

  • Фотография WGN
    #6

    WGN (worldgamenews.com)
    Очков активности: 88.5 Вне конкурса за определение пользователя месяца

  • Фотография Алексей111
    #7

    Алексей111 (xvideo24.ru)
    Очков активности: 66 8 тем, 20 сообщений, 1 балл репутации

  • Фотография yuran
    #8

    yuran (yurbol.ru)
    Очков активности: 37.5 1 тема, 22 сообщения, 1 балл репутации

  • Фотография Zevss
    #9

    Zevss (domles43.ru)
    Очков активности: 22.5 2 темы, 9 сообщений, 1 балл репутации

  • Фотография falka
    #10

    falka (mygoodjob.ru)
    Очков активности: 16.5 3 темы, 2 сообщения, 1 балл репутации

  • Показать весь ТОП 10

Kwork.ru - услуги фрилансеров от 500 руб.

Поддержите форум! =)
Апдейты
  • Яндекс тИЦ: 26.09.2018
  • Яндекс выдача: 20.10.2018
Топ 5 участников по репутации


Связанные динамичные списки Select

#1 Kdes70

Kdes70
  • Неактивные
  • 55 сообщений
  • Репутация: 0
4

Отправлено 18 April 2012 - 19:08

Доброго времени суток!!!
Нужна помощь переделать скрипт который состоит из двух связанных списков [страна]->[город]
мне нужно получить [категория]->[подкатегория] притом значения <option> подставлялись из БД
в БД есть вот такие таблицы:
CREATE TABLE `categories` (
  `id` int(11) NOT NULL auto_increment,
  `title` varchar(255) default NULL,
  `meta_d` varchar(255) NOT NULL,
  `meta_k` varchar(255) NOT NULL,
  `text` text NOT NULL,
  PRIMARY KEY  (`id`)
CREATE TABLE `sub_categories` (
  `id` int(4) NOT NULL auto_increment,
  `cat_id` int(4) NOT NULL,
  `meta_k` varchar(255) NOT NULL,
  `meta_d` varchar(255) NOT NULL,
  `title` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)

вот нашел вот такой скрипт
начал переделывать и застопорился на одном моменте очень нужна помощь сам справится не смогу опыта очень мало.
вот структура формы:

<form action="" method="post">
<table>
<tr>
  <td>Страна: </td>
  <td><select id="cat" name="cat" onchange="getCatList(this)">
   <option value="">Выберите страну</option>
  <? $result = mysql_query("SELECT title,id FROM categories",$db);  
			if (!$result)
			{
	echo "<p>Запрос на выборку данных из базы не прошел. <br> <strong>Код ошибки:</strong></p>";
	exit(mysql_error());
			}
	if (mysql_num_rows($result) > 0)
{
	$myrow = mysql_fetch_array($result);
	do
{
	printf ("<option value='%s'>%s</option>",$myrow["id"],$myrow["title"]);[/left][/size][/font][/color]
[color=#000000][font=Verdana, Tahoma, Arial, sans-serif][size=3][left]}
	while ($myrow = mysql_fetch_array($result));
}
	?>
	</select>
  </td>
</tr>
<tr>
  <td>Город: </td>
  <td><select id="subcat" name="subcat">
  </select>
  </td>
</tr>
</table>
</form>


Здесь я вывел первый список ,второй должен подставляться из внешнего файла.

После в файле <script type="text/javascript" src="chained.js"></script>

подставил свои значения (правда не уверен что все сделал правильно)


var ajax = new Array();
function getCatList(sel)
{
var catCode = sel.options[sel.selectedIndex].value;
document.getElementById('subcat').options.length = 0; // Empty city select box
if(catCode.length>0){
  var index = ajax.length;
  ajax[index] = new sack();
  ajax[index].requestFile = 'getcities.php?catCode='+catCode; // Specifying which file to get
  ajax[index].onCompletion = function(){ createCities(index) }; // Specify function that will be executed after file has been found
  ajax[index].runAJAX();  // Execute AJAX function
}
}
function createCities(index)
{
var obj = document.getElementById('subcat');
eval(ajax[index].response); // Executing the response from Ajax as Javascript code
}


потом это все как я понимаю идет вот сюда <script type="text/javascript" src="ajax.js"></script>
и теперь следующий файл который и вызвал у меня всю проблему это getcities.php
не знаю как вывести из БД подкатегории , умоляю напишите как это зделать!!!! или если есть решение моей задачи другим способом покажите плиз!!!! Уже второй день бьюсь над этим все что выдал мне google это самый наипростейший способ
getcities.php выглядит он так:
<?php
if(isset($_GET['catCode'])){  ..это пришло из [color=#333333]chained.js[/color]
	  switch($_GET['catCode']){
	  case "ru":
	  echo "obj.options[obj.options.length] = new Option('Москва','1');\n";
	  echo "obj.options[obj.options.length] = new Option('Санкт-Петербург','2');\n";
	  echo "obj.options[obj.options.length] = new Option('Волгоград','3');\n";
	  echo "obj.options[obj.options.length] = new Option('Владивосток','4');\n";
	  break;
	  case "ua":
	  echo "obj.options[obj.options.length] = new Option('Киев','11');\n";
	  echo "obj.options[obj.options.length] = new Option('Одесса','12');\n";
	  echo "obj.options[obj.options.length] = new Option('Львов','13');\n";
	  break;
	  case "us":
	  echo "obj.options[obj.options.length] = new Option('Нью-Йорк','21');\n";
	  echo "obj.options[obj.options.length] = new Option('Чикаго','22');\n";
	  echo "obj.options[obj.options.length] = new Option('Вашингтон','23');\n";
	  break;
	  }
	  }  
?>

 

 

  • 0

#2 c0ns0l3

c0ns0l3
  • Неактивные
  • 264 сообщений
  • Репутация: 49

Отправлено 30 April 2012 - 21:45

Такс, пойдем по стопам..

printf ("<option value='%s'>%s</option>",$myrow["id"],$myrow["title"]);[/left][/size][/font][/color]
[color=#000000][font=Verdana, Tahoma, Arial, sans-serif][size=3][left]}

У тебя в селекте, идут опции, данные которых должны передаться в РНР на вывод подкатегорий,но у тебя в есть только value, в который ты подставляешь ID с БД, тебе нужно еще привязать имя, переменной в твоем случаи это catCode тоесть должно на выходе получиться следующее


<option value="232" name="catCode" value="Страна с кодом 232 "/>
Теперь у тебя будет передаваться catCode в РНР, там его обрабатывать... делай по аналогу как ты выводил 1й список, только SQL запрос изменится немножко
$result = mysql_query("SELECT title,id FROM sub_categories WHERE meta_k = ".$_GET['catCode'],$db);

Таким образом, у тебя из БД sub_categories будут выбраны столбцы title,id в которых meta_k = value из твоей формы, тоесть ID страны, области .. или что ты там будешь писать... тоесть тебе нужно будет заполнить в БД еще и это поле..

тоесть общий код будет выглядить так:
<?php
if(isset($_GET['catCode']){
  $result = mysql_query("SELECT title,id FROM sub_categories WHERE meta_k = ".$_GET['catCode'],$db); 
  if(!result)
   die;
		 if (mysql_num_rows($result) > 0){
   while ($myrow = mysql_fetch_array($result)){
    echo "obj.options[obj.options.length] = new Option('".$myrow['title']."','".$myrow['id']."');n";
   }
  }
}
?>

  • 1

#3 Kdes70

Kdes70
    Topic Starter
  • Неактивные
  • 55 сообщений
  • Репутация: 0

Отправлено 31 May 2012 - 20:30

Блогодарю за дохотчивое пояснение!!!
  • 0

#4 admin

admin
  • Пользователь PRO
  • 5275 сообщений
  • Репутация: 55

Отправлено 31 May 2012 - 20:52

Ой спасибо! А я только хотел тему с таким же вопросом создавать :(
  • 0

#5 c0ns0l3

c0ns0l3
  • Неактивные
  • 264 сообщений
  • Репутация: 49

Отправлено 01 June 2012 - 07:39

А уже видишь, на все ответили :)


  • 1


Оформление форума – IPBSkins.ru