ФорумПрограммированиеJavaScript → Снова вопрос по динамическим select-ам

Снова вопрос по динамическим select-ам

  • Lion_astana

    Сообщения: 10 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2010 г. 0:41

    Привет всем!Помогите советом или делом если можете.Проблема-не могу вставить массив с данными не из 1.txt и 2.txt, а из базы данных.Пробовал по-всякому, например так:
    $db = mysql_connect ("localhost","alex","12345");
    mysql_select_db("optoviki",$db);



    $country_id = @intval($_GET['country_id']);

    $result2 = mysql_query ("SELECT `id`,`title` FROM `gorod` WHERE `id_strana` = $country_id",$db);
    $myrow2 = mysql_fetch_array($result2);
    list($id,$title) = $myrow2;
    $result = array('type'=>'success','regions'=>array($id,$title));


    /*
    * Упаковываем данные с помощью JSON
    */
    print json_encode($result);


    При такой писанине во втором селекте появляется по 2 одинаковых опшена:undefined.
    Оригинал был взят из статьи с этого же сайта,вот он:
    $country_id = @intval($_GET['country_id']);

    if (file_exists(dirname(__FILE__) . '/' . $country_id . '.txt')) {
    $regions = array();
    $regs = file(dirname(__FILE__) . '/' . $country_id . '.txt');
    $i=1;
    foreach ($regs as $r) {
    $regions[] = array('id'=>$i, 'title'=>trim($r));
    $i++;
    }

    $result = array('type'=>'success', 'regions'=>$regions);
    }
    else {
    $result = array('type'=>'error');
    }

    /*
    * Упаковываем данные с помощью JSON
    */
    print json_encode($result);


    есть какие-нибудь мысли?
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 18 ноября 2010 г. 2:14, спустя 1 час 33 минуты 40 секунд


    $regions = array();
    while($myrow2=mysql_fetch_assoc($result2)) {
    $regions[] = $myrow2;
    }

    $result = array('type'=>'success','regions'=>$regions);
  • Lion_astana

    Сообщения: 10 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2010 г. 2:26, спустя 11 минут 40 секунд

    Всё равно не работает, правда увеличилось количество undefined -ов в опшенах.Есть ещё идеи?
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 18 ноября 2010 г. 2:29, спустя 2 минуты 49 секунд

    хуйня войня, учите яваскрипт и json
    Спустя 23 сек.
    и поиграйте в "угадай слова", а слова те - котоыре вы ищите на клиенте и отправляете на сервере
    Сапожник без сапог
  • Lion_astana

    Сообщения: 10 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2010 г. 2:38, спустя 9 минут 38 секунд

    Я в данный момент как раз и учу яваскрипт, по пути возникают вопросы на которые не могу найти ответы, поэтому и спрашиваю на данном форуме.Тем более что в статье про динамические селекты написано:

    "А у меня все в базе?

    Без проблем, можете, используя country_id, вытаскивать регионы из базы, если храните данные в ней."



    Вот я и пробую это осуществить, думал будет всё без геммороя, но увы…
    Ещё у кого-нибудь есть мысли?
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 18 ноября 2010 г. 4:23, спустя 1 час 44 минуты 9 секунд

    Lion_astana, покажите ка дамп базы и код на жс
  • Lion_astana

    Сообщения: 10 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2010 г. 5:18, спустя 55 минут 4 секунды

    Вот жс(тот же самый как и в примере):

    $(document).ready(function () {
    $('#country_id').change(function () {
    var country_id = $(this).val();
    if (country_id == '0') {
    $('#region_id').html('');
    $('#region_id').attr('disabled', true);
    return(false);
    }
    $('#region_id').attr('disabled', true);
    $('#region_id').html('<option>загрузка…</option>');

    var url = 'get_regions.php';

    $.get(
    url,
    "country_id=" + country_id,
    function (result) {
    if (result.type == 'error') {
    alert('error');
    return(false);
    }
    else {
    var options = '';
    $(result.regions).each(function() {
    options += '<option value="' + $(this).attr('id') + '">' + $(this).attr('title') + '</option>';
    });
    $('#region_id').html(options);
    $('#region_id').attr('disabled', false);
    }
    },
    "json"
    );
    });
    });


    Вот БД(с таблицей gorod к которой я обращаюсь):

    – phpMyAdmin SQL Dump
    – version 2.6.1
    – http://www.phpmyadmin.net

    – Хост: localhost
    – Время создания: Ноя 18 2010 г., 10:09
    – Версия сервера: 5.0.45
    – Версия PHP: 5.2.4

    – БД: `optoviki`


    – ——————————————————–


    – Структура таблицы `gorod`


    CREATE TABLE `gorod` (
    `id` int(5) NOT NULL auto_increment,
    `id_strana` int(3) NOT NULL,
    `title` varchar(255) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=24 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=24 ;


    – Дамп данных таблицы `gorod`


    INSERT INTO `gorod` VALUES (1, 1, 'Астана');
    INSERT INTO `gorod` VALUES (2, 1, 'Алматы');
    INSERT INTO `gorod` VALUES (3, 1, 'Шымкент');
    INSERT INTO `gorod` VALUES (4, 1, 'Семей');
    INSERT INTO `gorod` VALUES (5, 2, 'Ижевск');
    INSERT INTO `gorod` VALUES (6, 2, 'Екатеринбург');
    INSERT INTO `gorod` VALUES (7, 2, 'Ковров');
    INSERT INTO `gorod` VALUES (8, 3, 'Варшава');
    INSERT INTO `gorod` VALUES (9, 1, 'Тараз');
    INSERT INTO `gorod` VALUES (22, 1, 'Рудный');
    INSERT INTO `gorod` VALUES (21, 2, 'Санкт-Петербург');
    INSERT INTO `gorod` VALUES (20, 2, 'Москва');
    INSERT INTO `gorod` VALUES (23, 1, 'Костанай');
    Спустя 100 сек.
    Кодировка 1251, когда менял на utf-8 всё то же самое, без изменений,т.е. undefined в опшенах.
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 18 ноября 2010 г. 5:37, спустя 18 минут 59 секунд

    Хз, но такое чувство что падла в жс засела :)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 18 ноября 2010 г. 5:43, спустя 5 минут 51 секунду

    $(result.regions).each(function() {
    options += '<option value="' + $(this).attr('id') + '">' + $(this).attr('title') + '</option>';
    });

    у вас не дом объект, жукери мозг выносит новикам по полной =))

    Сапожник без сапог
  • Lion_astana

    Сообщения: 10 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2010 г. 5:50, спустя 7 минут 43 секунды

    у вас не дом объект, жукери мозг выносит новикам по полной =))

    Но должен же быть вариант какой-то, как считаете?Ведь раз он из текстовых файлов нормально всё тянет, то из базы тоже должен быть вариант.
    Дааааааа, тут без пузыря не разберёшься…..
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 18 ноября 2010 г. 6:13, спустя 22 минуты 51 секунду

    for(var i=0;i<result.regions.length;i++) {
    options += '<option value="' + result.regions.id + '">' + result.regions.title + '</option>';
    });
    так попробуй
    Сапожник без сапог
  • Lion_astana

    Сообщения: 10 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2010 г. 6:26, спустя 12 минут 42 секунды

    Зависимый селект теперь вообще не работает….
    Спустя 49 сек.
    Правильно вставил Ваш код?:
    $(document).ready(function () {
    $('#country_id').change(function () {
    var country_id = $(this).val();
    if (country_id == '0') {
    $('#region_id').html('');
    $('#region_id').attr('disabled', true);
    return(false);
    }
    $('#region_id').attr('disabled', true);
    $('#region_id').html('<option>загрузка…</option>');

    var url = 'get_regions.php';

    $.get(
    url,
    "country_id=" + country_id,
    function (result) {
    if (result.type == 'error') {
    alert('error');
    return(false);
    }
    else {
    var options = '';
    for(var i=0;i<result.regions.length;i++) {
    options += '<option value="' + result.regions.id + '">' + result.regions.title + '</option>';
    });

    $('#region_id').html(options);
    $('#region_id').attr('disabled', false);
    }
    },
    "json"
    );
    });
    });
  • Lion_astana

    Сообщения: 10 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2010 г. 9:42, спустя 3 часа 15 минут 42 секунды

    Этот код сведёт меня с ума, кто-нибудь может помочь?
  • LIFF

    Сообщения: 188 Репутация: N Группа: Адекваты

    Spritz 18 ноября 2010 г. 12:34, спустя 2 часа 52 минуты 26 секунд

    Lion_astana, покажи что в result приходит
    Спустя 49 сек.
    в фаербаге можешь посмотреть
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 18 ноября 2010 г. 17:08, спустя 4 часа 34 минуты 28 секунд

    скоро должен появиться Дуд с заманчивым предложением в 200 баксов))
    Высокоуровневое абстрактное говно

Пожалуйста, авторизуйтесь, чтобы написать комментарий!