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


Пользователь месяца
Андрей WPMasterKZ Андрей WPMasterKZ 1-й за Ноябрь
Очков активности: 888 1 тема, 71 сообщение, 8 баллов репутации
Сайт: wpmaster.kz
ТОП самых активных за этот месяц
  • Фотография OlgaGetman
    #1

    OlgaGetman
    Очков активности: 405 4 темы, 78 сообщений, 3 балла репутации

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

    Mandarin
    Очков активности: 249 3 темы, 74 сообщения, 2 балла репутации

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

    BLIK
    Очков активности: 102 0 тем, 17 сообщений, 4 балла репутации

  • Фотография Андрей WPMasterKZ
    #4

    Андрей WPMasterKZ (wpmaster.kz)
    Очков активности: 87 Вне конкурса за определение пользователя месяца

  • Фотография TimurR
    #5

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

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

    Rodiola
    Очков активности: 42 1 тема, 11 сообщений, 2 балла репутации

  • Фотография thisismyname
    #7

    thisismyname
    Очков активности: 27 4 темы, 6 сообщений, 1 балл репутации

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

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

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

    m3Re
    Очков активности: 22.5 2 темы, 9 сообщений, 1 балл репутации

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

    pozitron123
    Очков активности: 22.5 2 темы, 9 сообщений, 1 балл репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 29.11.2018
  • Яндекс выдача: 11.12.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