ФорумПрограммированиеPHP для идиотов → Передача массива

Передача массива

  • mxwuser

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

    Spritz Сен. 19, 2010, 2:26 д.п., спустя 16 минут 6 секунд

    Написал это:

    <?php

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

    $sql = "SELECT `name` FROM `city` WHERE country_id =".(int)$country_id;
    $query = mysql_query($sql) or die("Query failed : " . mysql_error());

    $result = array('type'=>'', 'regions' => array());
    if (!mysql_error()){
    $result['type'] = 'success';

    while ($res = mysql_fetch_assoc($query)){
    $result['regions'][] = array(
    'id' => $res['id'],
    'title' => $res['title']
    );
    }
    } else {
    $result['type'] = 'fail';
    }

    print_r ($result);

    ?>

    В итоге ничего не происходит. При принте массива выдает следующиее:

    Array ( [type] => success [regions] => Array ( ) )

    Что-то не так, видимо…
  • adw0rd

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

    Spritz Сен. 19, 2010, 2:36 д.п., спустя 9 минут 47 секунд

    это

    $sql = "SELECT `name` FROM `city` WHERE country_id =".(int)$country_id;
    $query = mysql_query($sql) or die("Query failed : " . mysql_error());

    замени на это

    $sql = "SELECT `name` FROM `city` WHERE country_id =".(int)$country_id;
    exit($sql);
    $query = mysql_query($sql) or die("Query failed : " . mysql_error());


    полученый sql запрос выполни в консоли mysql и отпиши есть ли результаты
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • master

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

    Spritz Сен. 19, 2010, 2:44 д.п., спустя 8 минут 21 секунду

    mxwuser, наверное надо проследить путь выполнения скрипта, посмотреть какие циклы и условия выполняются, какие нет. как тебе такая мысль?
    не всё полезно, что в swap полезло
  • mxwuser

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

    Spritz Сен. 19, 2010, 2:47 д.п., спустя 2 минуты 50 секунд

    Так,  попробывал просто на странице пропринтить полученный массив:
    {"type":"success","regions":[{"id":1,"title":"Piter"},{"id":2,"title":"Moscow"},{"id":3,"title":"Kazan"},{"id":4,"title":"Tymen"}]} . Тоесть массив собирается нормально, но он почему-то в список не выводиться(
    Спустя 65 сек.
    master

    Там я накосячил, мне рабочий код дали, просто я не так подправил сначала.
  • Givi

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

    Spritz Сен. 19, 2010, 11:59 д.п., спустя 9 часов 12 минут 10 секунд

    $result = array('type'=>'', 'regions' => array());
    это что за блядство ?! Ты так определяешь тип переменной?
  • Nyaah

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

    Spritz Сен. 19, 2010, 12:27 п.п., спустя 28 минут 4 секунды


    $result = array('type'=>'', 'regions' => array());
    это что за блядство ?! Ты так определяешь тип переменной?
    Чего тебе не нравится, массив как массив, у меня вообще периодически такие лестницы из массивов возникают, особенно когда формирую объект для json_encode, закачаешься =)
    Work, buy, consume, die
  • Givi

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

    Spritz Сен. 19, 2010, 12:44 п.п., спустя 16 минут 35 секунд

    Nyaah, суть в том, что данная строка не формирует массив, а просто объявляет его. То есть, по сути ТС не чехлит что это и для чего нужно. И уж тем более он явно не чехлит как что из себя представляют многомерные массивы.
  • Nyaah

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

    Spritz Сен. 19, 2010, 1:06 п.п., спустя 22 минуты 7 секунд

    ну да, объявляет, если жаваскрипту нужно обязательно, чтобы в получаемом джейсон объекте были поля тайп и ресалт, и чтоб ресалт был массивом, то все правильно он делает. "Всегда инциализируйте переменные!" - сказал нам перпод по программированию на первом зянятии на первом курсе =)
    Work, buy, consume, die
  • mxwuser

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

    Spritz Сен. 19, 2010, 2:06 п.п., спустя 1 час 28 секунд

    Массив нормальный, но вот обработчиком он не передается почему-то. Причиной тому, по всей видимости является строка mysql выборки. Если ее стереть, и подставить на в массив обычные переменные или строки - все работает на ура, в противном случае, нифига не передается.
    Спустя 54 сек.
    а именно из-за этой строки: $query = mysql_query($sql) or die("Query failed : " . mysql_error());
  • mxwuser

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

    Spritz Сен. 19, 2010, 2:12 п.п., спустя 6 минут

    Все, понял в чем дело. Я к обработчику не инклюдил БД. Все теперь работает, всем спасибо за помощь (=
  • Givi

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

    Spritz Сен. 19, 2010, 8:02 п.п., спустя 5 часов 49 минут 12 секунд

    Nyaah, блиа, я ж не против объявления, и даже "за", но ведь нах не нужно туда совать структуру, особенно если проделанное будет идти как первый элемент массива. А для объявления достаточно сделать так: $var = array();
  • master

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

    Spritz Сен. 29, 2010, 2:30 п.п., спустя 9 дней 18 часов 28 минут

    Givi,
    если жаваскрипту нужно обязательно, чтобы в получаемом джейсон объекте были поля тайп и ресалт, и чтоб ресалт был массивом

    только не ресалт, а regions
    не всё полезно, что в swap полезло

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