Добрый день! Работаю на Codignaiter и вчера столкнулся с проблемой которую не могу решить до сих пор. Мне необходимо вывести на страницу информацию сразу с 2 таблиц, но мне неудаеться реализовать это технически. Простой вывод (вывод с одной таблицы) я произвожу так: 1) В модели пишу функцию которая выбирает все значения из определенной таблицы и помещает их в массив: PHP: function get_table(){ $query = $this->db->get("cart"); return $query->result_array(); } 2) В контроллере я принимаю массив полученный в модели, вот таким образом: PHP: $this->data_1['post_array'] = $this->main_model->get_table(); 3) Передаю этот массив во вьювер совой страницы, вот так: PHP: $this->load->view('pages/product/index', $this->data_1); 4) на самой странице, разбираю этот массив при помощи вот такого форыча: PHP: <?php foreach ($post_array as $cart):?> <?=$cart['img']?> <?=$cart['articul']?> // и т.д. <?php endforeach?> А вот как реализовать по этой же схеме вывод из 2 таблиц я разобраться не могу( Делаю так: 1) создаю вторую функцию в модели которая делает выборку из второй таблицы: PHP: function get_feedback(){ $query = $this->db->get("feedback"); return $query->result_array(); } 2) Принимаю массив из этой функции в контроллере: PHP: $this->data_2['feedback_array'] = $this->main_model->get_feedback(); 3) Передаю этот (второй) массив во вьювер совой страницы, вот так: PHP: $this->load->view('pages/product/index', $this->data_1, $this->data_2); 4) на самой странице, разбираю этот массив при помощи вот такого форыча, как и предыдущий: PHP: <?php foreach ($feedback_array as $feedbackt):?> <?=$feedback['name']?> <?=$feedback['email']?> // и т.д. <?php endforeach?> Но желаемого результат это не приносит, второй форыч не работает, хотя если не передавать первый во вьювер, то работать будет, то есть вот так: 1) случай первый: PHP: $this->load->view('pages/product/index', $this->data_1/*, $this->data_2*/); //на страницу выводится информация из первой таблицы 2) случай второй: PHP: $this->load->view('pages/product/index', /*$this->data_1, */$this->data_2); //на страницу выводится информация из второй таблицы таблицы 3) случай третий: PHP: $this->load->view('pages/product/index', $this->data_1, $this->data_2); //на страницу выводится информация только из первой таблицы, если data_1 и data_2 поменять местами, то будет выводиться только вторая таблица Из всего выше сказанного я сделал вывод что все работает правильно кроме последнего 3-го пункта где я передаю массивы во вьювер, то есть здесь: PHP: $this->load->view('pages/product/index', $this->data_1, $this->data_2); Понимаю что скорее всего вот это "$this->data_1, $this->data_2" нужно записать как-то по другому, но как именно я не могу разобраться уже второй день. Прочитал кажется всю документацию по кодигнайтеру, и методу "join" но не нашел нечего что было бы применимо к моему случаю. Прошу помочь разобраться, казалось бы мелочная проблема, а голова уже пухнет( Заранее благодарен
@smartCreate делай отладку, чтобы понять на каком этапе что-то работает не как надо http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html https://php.ru/forum/threads/howto-...i-po-shagam-i-s-kartinkami.58974/#post-474550
чувак запихни всё в один массив PHP: $this->data_1['array']['0'] = $this->main_model->get_table(); $this->data_1['array']['1'] = $this->main_model->get_feedback(); --- Добавлено --- это метод $this->load->view() принимает два аргумента, а ты пытаешься передать три
@machetero, последовал вашему совету и сделал так: PHP: function __construct() { parent::__construct(); $this->load->model('main_model'); $this->load->library('email'); $this->load->dbforge(); $this->data['post_array']['0'] = $this->main_model->get_table(); $this->data['post_array']['1'] = $this->main_model->get_feedback(); } function load_product() { $this->load->view('pages/product/index', $this->data); } И кажись прокатило, но частично. Я получил целую кучу ошибок на странице, в местах где должна выводиться необходимая информация. Хотя ранее у меня была всего одна: "Message: Undefined variable: post_array", то есть имя массива "post_array" было не известно, то есть не передавалось из контроллера. Сейчас же я получаю вместо одной этой ошибки, множество вот таких: "Message: Undefined index: name", name - это значение которое храниться в массиве и несет в себе информацию из таблицы, таких сообщений у меня ровно столько же сколько и строк в таблицах. От сюда вывод - благодаря Вашему совету, оба массива с данными из разных таблиц были переданы во вьювер, но возникла новая проблема, форыч который ранее успешно разбирал массив, сейчас очевидно работает не корректно, выглядит он следующим образом: PHP: <?php foreach ($post_array as $feedback):?> // feedback - это имя таблицы <?=$feedback['name']?> <?=$feedback['email']?> // и т.д. <?php endforeach?> Предполагаю что теперь проблема заключается именно в форыче. Подскажите пожалуйста что с ним стало не так??
PHP: <?php $feedback = $post_array[1]; foreach ($feedback as $val): ?> // <?= $val['name'] ?> <?= $val['email'] ?> <?php endforeach; ?> <?php $table = $post_array[0]; foreach($table as $v): ?> <?php //делаем что-то с $table ?> <?php endforeach; ?>
@machetero, Прошу прощения за задержавшуюся благодарность) Все работает, очень помог, спасибо большое