Попытка передать переменную из одной функции в другую для помещения в массив в той же модели - PullRequest
0 голосов
/ 24 мая 2010

Хорошо, это звучит очень странно. Я пытаюсь сделать это. У меня есть функция, которая загружает / изменяет размер фотографий на сервер. Он хранит пути в БД. Мне нужно прикрепить идентификатор компании к ряду фотографий.

Вот что у меня есть:

function get_bus_id() {
    $userid = $this->tank_auth->get_user_id();
    $this->db->select('b.id');
    $this->db->from ('business AS b');
    $this->db->where ('b.userid', $userid);
    $query = $this->db->get();
        if ($query->num_rows() > 0) {
          // RESULT ARRAY RETURN A MULTIDIMENSIONAL ARRAY e.g. ARRAY OF DB RECORDS
          // ( ROWS ), SO IT DOENS'T FIT
          //return $query->result_array();
          // THE CORRECT METHOD IS row_array(), THAT RETURN THE FIRST ROW OF THE 
          // RECORDSET
          $query->row_array();
            }

Это идентификатор бизнеса. Затем у меня есть функция загрузки, которая ниже:

/* Uploads images to the site and adds to the database. */
    function do_upload() {

        $config = array(
            'allowed_types' => 'jpg|jpeg|gif|png',
            'upload_path' => $this->gallery_path,
            'max_size' => 2000
        );

        $this->load->library('upload', $config);
        $this->upload->do_upload();
        $image_data = $this->upload->data();

        $config = array(
            'source_image' => $image_data['full_path'],
            'new_image' => $this->gallery_path . '/thumbs',
            'maintain_ratio' => true,
            'width' => 150,
            'height' => 100
        );

        $this->load->library('image_lib', $config);
        $this->image_lib->resize();

        $upload = $this->upload->data();
        $bus_id = $this->get_bus_id();

        $data = array(
            'userid' => $this->tank_auth->get_user_id(),
            'thumb' => $this->gallery_path . '/thumbs/' . $upload['file_name'],
            'fullsize' => $upload['full_path'],
            'busid'=> $bus_id['id'],
        );

        echo var_dump($bus_id);

        $this->db->insert('photos', $data);
    }

Проблема, с которой я столкнулся, заключается в следующем:

Произошла ошибка PHP

Серьезность: Уведомление

Сообщение: неопределенный индекс: id

Имя файла: models / gallery_model.php

Номер строки: 48

Я перепробовал все возможные способы, чтобы переоценить ценность, но мои ограниченные знания продолжают мешать. Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

0 голосов
/ 24 мая 2010

Проблема в том, что если бизнес не найден, ваша функция ничего не возвращает.В результате в $bus_id ничего нет (даже массив).Вы, вероятно, должны сделать так, чтобы ваша get_bus_id() функция возвращала ложь следующим образом:

        if ($query->num_rows() > 0) {
            return $query->result_array();
        } else {
            return false;
        }

, затем после вызова get_bus_id() вы можете проверить, если $bus_id == false, и, возможно, вернуть false, чтобы обозначить ошибку от do_upload()

0 голосов
/ 25 мая 2010

Хорошо, у меня это работает.Это полный и рабочий код:

/* Uploads images to the site and adds to the database. */
    function do_upload() {

        $config = array(
            'allowed_types' => 'jpg|jpeg|gif|png',
            'upload_path' => $this->gallery_path,
            'max_size' => 2000
        );

        $this->load->library('upload', $config);
        $this->upload->do_upload();
        $image_data = $this->upload->data();

        $config = array(
            'source_image' => $image_data['full_path'],
            'new_image' => $this->gallery_path . '/thumbs',
            'maintain_ratio' => true,
            'width' => 150,
            'height' => 100
        );

        $this->load->library('image_lib', $config);
        $this->image_lib->resize();

        $upload = $this->upload->data();
        $bus_id = $this->get_bus_id();

        /*
        TABLE STRUCTURE =============
            id, the row ID
            photoname
            thumb
            fullsize
            busid
            userid
        */



        $data = array(
            'id'        => 0 , // I GUESS IS AUTO_INCREMENT
            'photoname'    => '',
            'thumb'        => $this->gallery_path . '/thumbs/' . $upload['file_name'],
            'fullsize'    => $upload['full_path'],
            'busid'=> $bus_id['id'],
            'userid' => $this->tank_auth->get_user_id(),
        );

        // CHECK THE DATA CREATED FOR INSERT

        $this->db->insert('photos', $data);
    }

// Получить идентификатор предприятия из БД

function get_bus_id() {
        $userid = $this->tank_auth->get_user_id();
        $this->db->select('b.id');
        $this->db->from ('business AS b');
        $this->db->where ('b.userid', $userid);
        $query = $this->db->get();
            if ($query->num_rows() > 0) {
              // RESULT ARRAY RETURN A MULTIDIMENSIONAL ARRAY e.g. ARRAY OF DB RECORDS
              // ( ROWS ), SO IT DOENS'T FIT
              //return $query->result_array();
              // THE CORRECT METHOD IS row_array(), THAT RETURN THE FIRST ROW OF THE
              // RECORDSET
              return $query->row_array();
            }
        }
0 голосов
/ 24 мая 2010

не уверен, как задать вам вопрос, не отправив "ответ" ...

что в строке 48? какой файл является gallery_model.php? Судя по звукам, это может быть ключ массива, который не был инициализирован, или проблема в запросах к базе данных.

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