Получение данных из БД в массив с помощью foreach - PullRequest
1 голос
/ 20 апреля 2011

У меня есть таблица базы данных с событиями в них:

id |    title    | description | day_start  | day_end    | user_id

1  |   sometitle | blabla      | 2011-04-20 | 2011-04-21 |   1
2  |   title 2   | bleble      | 2011-04-20 | 2011-04-21 |   1

Я хочу прочитать это из моей базы данных с циклом foreach.

Я хочу сохранить это в $data[day_start]

Например: $data['2011-04-21'] должен содержать два массива в этом случае, по одному для каждого события. Я не уверен, как это сделать. У меня был следующий код (в CI):

(аргумент $start - это дата, например 2011-04-20).

    public function get_event_data($start)
{   
    $data = array();

    $query = $this->db->query(
                                "SELECT * 
                                 FROM tblEvents
                                 WHERE user_id = '" . $this->session->userdata('id') . "'
                                 AND day_start = '" . $start . "';"
                             );

    foreach($query->result() as $row)
    {
        $data[$row->day_start]  = array(
                            'title'         =>          $row->title,
                            'description'   =>          $row->description,
                            'day_start'     =>          $row->day_start,
                            'day_end'       =>          $row->day_end,
                            'time_start'    =>          $row->time_start,
                            'time_end'      =>          $row->time_end,
                            'user_id'       =>          $row->user_id
                  );
    }
    return $data;
}

Однако, как и ожидалось, это только выводит событие SECOND (так как я использую '=', который переопределяет данные, которые помещаются в массив в первый раз):

Array ([2011-04-20] => Array ( [title] => Тестовое событие 2 [description] => Второе событие. [day_start] => 2011-04-20 [day_end] => 2011-04-20 [time_start] => 12 [time_end] => 13 [user_id] => 1))

(данные здесь отличаются от тех, что я указал сверху, но речь идет об идее, а не о данных).

Я пытался использовать. =, Но затем php жалуется, что такого индекса нет. Причина. Я не инициировал его и пытаюсь добавить к нему.

Итак, я попробовал с if(isset($data[$start]) блоком, но это тоже никуда меня не привело.

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

Ответы [ 2 ]

3 голосов
/ 20 апреля 2011

1001 * попробовать *

$data[$row->day_start][]  = array(

Второй набор [] создаст автоматически итеративный массив, поэтому никакие данные не будут перезаписаны.

0 голосов
/ 20 апреля 2011

Если я не понимаю, CI позволяет вам возвращать массив результатов, который делает то же самое, что и ваш код выше.

return $query->result_array();

Сделал бы это.

Если вы не хотите всех ваших данных в массиве, не выбирайте * и берите только то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...