Функция с забросом к БД и переводом в ассоциативный массив передает, и приходит результат в один файл php, а в другой файл не приходит результат. Файл с функцией подключен, но прилетает пустой массив.
код с запросами к БД. в файле ProductModel.php Код (Text): function getProductsByCat($itemId) { $itemId = intval($itemId); $sql = "SELECT t1.ID, t1.NAME as NAME, t1.PICTURE as PICTURE, t1.PRICE_RUS as PRICE_RUS, t1.ARCHIVE as ARCHIVE, t1.GROUP_NAME as GROUP_NAME, t1.ID_PRODUCT as ID_PRODUCT1, t2.ID_PRODUCT as ID_PRODUCT2, t2.ID_GROUP_OF_PRODUCTS as ID_GROUP_OF_PRODUCTS FROM `product` t1 LEFT JOIN `link_gr-of-prod_with_prod` t2 ON t1.ID_PRODUCT = t2.ID_PRODUCT WHERE `ID_GROUP_OF_PRODUCTS` = '{$itemId}' "; $rs = mysql_query($sql); return createSmartyRsArray($rs); } контроллер страницы категорий (меню) Код (Text): <?php /* * categoryController.php * * Контроллер страницы категорий {/category/1} * */ //подключаем модели include_once '../models/CategoriesModel.php'; include_once '../models/ProductsModel.php'; /* * формирование страницы категории * * @param object $smarty шаблонизатор */ function indexAction($smarty) { $catId = isset($_GET['id']) ? $_GET['id'] : null; if($catId == null) exit(); $pictureBig = null; $rsProducts = null; $rsChildCats = null; // получаем строку из бд данные по текущей категории страницу которой мы открыли. $rsCategory = getCatById($catId); // заводим переменную $rsCategory и присваиваем значение, результатом выполнения функции - getCatById (получить категорию по её индитификатору) и параметром передадим эту функцию индетификатор который к нам пришел параметром _GET . // $rsCategory- определяет какой является категория: главной или дочерней, в дальнейшем обрашаться к бд либо будем получать товар, либо дочерние категории //d($rsCategory); // если главная категория то показываем дочерние категории, // иначе показываем товар if($rsCategory['ID_GROUP_OF_PRODUCTS'] != 0) { // $rsChildCats = getChildrenForCat($catId); // } // else { $rsProducts = getProductsByCat($catId); //d($rsProducts); } $rsCategories = getAllMainCatsWithChildren(); $smarty->assign('pageTitle', 'Товары категории' . $rsCategory['name']); $smarty->assign('pictureBig', $pictureBig); $smarty->assign('rsCategory', $rsCategory); $smarty->assign('rsProducts', $rsProducts); $smarty->assign('rsChildCats', $rsChildCats); $smarty->assign('rsCategories', $rsCategories); loadTemplate($smarty, 'header'); loadTemplate($smarty, 'category'); loadTemplate($smarty, 'footer'); } Контроллер страницы товара Код (Text): <?php /** * ProductController.php * * Контроллер страницы товара {/product/1} * */ //подключаем модели include_once '../models/CategoriesModel.php'; include_once '../models/ProductsModel.php'; /** * * Формирование главной таблицы сайта * * @param object $smarty шаблонизатор */ function indexAction($smarty) { // параметром передаем ему объект smarty $itemId = isset($_GET['id']) ? $_GET['id'] : null; if($itemId == null) exit(); //получить данные продукта $rsProduct = getProductById($itemId); //d($rsProduct); $rsProducts = getProductsByCat($itemId); $rsCategories = getAllMainCatsWithChildren(); //record set categories(набор данных категории) переменной присваиваем результат $smarty->assign('pageTitle', ' '); // инициализируем переменную pageTitle (заголовок страницы) и присваиваем значение 'Главная страница сайта' ; $smarty->assign('rsCategories', $rsCategories);// инициализируем переменную rsCategories и передадим ей переменнную $rsCategories $smarty->assign('rsProduct', $rsProduct); $smarty->assign('rsProducts', $rsProducts); // с помощью функции loadTemplate(загрузка шаблона) данную переменную передадим в шаблон и выведем её там в определенных местах.// вторым парамметром -> ('index')указываем какой шаблон вызвать и какой стоит обработать loadTemplate($smarty, 'header'); loadTemplate($smarty, 'product'); loadTemplate($smarty, 'footer'); } --- Добавлено --- есть еще файл: Модель для таблицы категорий. тоже запросы к БД --- Добавлено --- массив пустой прилетает в ProductController.php
$itemId точно передаешь? --- Добавлено --- что значит прилетает в ProductController? --- Добавлено --- В product controller вызывается метод getProductsByCat и результат пустой?
в созданном запросе к бд присваиваю в эту переменную $itemId, в файле categoryController.php меняю c function getProductsByCat($itemId) на $rsProducts = getProductsByCat($catId); $catId и все работает, а в productController.php оставляю $itemId, но прилетают болты(пустота) --- Добавлено --- при запросе к бд выдает результат нужный, но появляется такая строка в бд: Данное выделение не содержит уникального столбца. Изменение сетки, выставление галочки, редактирование, копирование и удаление невозможно. (я как понимаю это не критично). при том этот запрос нормально выводит на главной странице ассоц массив и выкидывает в смарти всю нужную инфу, а на страницу товара не выводит --- Добавлено --- а так искал ошибки, что то не нашел, вроде правильно
Я понимаю, ты огорчен, возможно подавлен, мир уже не так ярок... но собирись. Если в одном месте метод работает в другом нет, значит ты передаешь что то не то) Вручную пропиши вместо $itemId корректное значение которое отработает и посмотри на результтат.
)))) при отработке запроса функции на странице продуктов прилетает: Код (Text): SELECT t1.ID, t1.NAME as NAME, t1.PICTURE as PICTURE, t1.PRICE_RUS as PRICE_RUS, t1.ARCHIVE as ARCHIVE, t1.GROUP_NAME as GROUP_NAME, t1.ID_PRODUCT as ID_PRODUCT1, t2.ID_PRODUCT as ID_PRODUCT2, t2.ID_GROUP_OF_PRODUCTS as ID_GROUP_OF_PRODUCTS FROM `product` t1 LEFT JOIN `link_gr-of-prod_with_prod` t2 ON t1.ID_PRODUCT = t2.ID_PRODUCT WHERE `ID_GROUP_OF_PRODUCTS` = '0' а при проверки этого же запроса на странице категорий прилетает: Код (Text): SELECT t1.ID, t1.NAME as NAME, t1.PICTURE as PICTURE, t1.PRICE_RUS as PRICE_RUS, t1.ARCHIVE as ARCHIVE, t1.GROUP_NAME as GROUP_NAME, t1.ID_PRODUCT as ID_PRODUCT1, t2.ID_PRODUCT as ID_PRODUCT2, t2.ID_GROUP_OF_PRODUCTS as ID_GROUP_OF_PRODUCTS FROM `product` t1 LEFT JOIN `link_gr-of-prod_with_prod` t2 ON t1.ID_PRODUCT = t2.ID_PRODUCT WHERE `ID_GROUP_OF_PRODUCTS` = '300' Где `ID_GROUP_OF_PRODUCTS` = '300' берет категорию товаров ('300')
честно скажу я не понимаю что ты там пишешь, коды какие то... в product controller в $rsProduct = getProductById($itemId); вместо $itemId списал вручную правильное значение? Отработало?