За последние 24 часа нас посетили 38243 программиста и 1722 робота. Сейчас ищут 610 программистов ...

Функция в одном файле вызывается, а в другом файле php нет

Тема в разделе "PHP для новичков", создана пользователем AlexsaiL, 26 фев 2017.

  1. AlexsaiL

    AlexsaiL Активный пользователь

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    Функция с забросом к БД и переводом в ассоциативный массив передает, и приходит результат в один файл php, а в другой файл не приходит результат. Файл с функцией подключен, но прилетает пустой массив.
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    что?) Нифига не понятно) давай код и смотри логи. Где чет падает наверно.
     
  3. AlexsaiL

    AlexsaiL Активный пользователь

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    код с запросами к БД. в файле ProductModel.php
    Код (Text):
    1.  
    2. function getProductsByCat($itemId) {
    3.     $itemId = intval($itemId);
    4.     $sql = "SELECT t1.ID,
    5. t1.NAME as NAME,
    6. t1.PICTURE as PICTURE,
    7. t1.PRICE_RUS as PRICE_RUS,
    8. t1.ARCHIVE as ARCHIVE,
    9. t1.GROUP_NAME as GROUP_NAME,
    10. t1.ID_PRODUCT as ID_PRODUCT1,
    11. t2.ID_PRODUCT as ID_PRODUCT2,
    12. 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}' ";
    13.    
    14.     $rs = mysql_query($sql);
    15.    
    16.     return createSmartyRsArray($rs);
    17. }


    контроллер страницы категорий (меню)
    Код (Text):
    1. <?php
    2.  
    3. /*
    4. * categoryController.php
    5. *
    6. * Контроллер страницы категорий {/category/1}
    7. *
    8. */
    9.  
    10. //подключаем модели
    11. include_once '../models/CategoriesModel.php';
    12. include_once '../models/ProductsModel.php';
    13.  
    14. /*
    15. * формирование страницы категории
    16. *
    17. * @param object $smarty шаблонизатор
    18. */
    19. function indexAction($smarty) {
    20.     $catId = isset($_GET['id']) ? $_GET['id'] : null;
    21.     if($catId == null) exit();
    22.    
    23.     $pictureBig = null;
    24.     $rsProducts = null;
    25.     $rsChildCats = null;
    26.     // получаем строку из бд данные по текущей категории страницу которой мы открыли.
    27.     $rsCategory = getCatById($catId); // заводим переменную $rsCategory и присваиваем значение, результатом выполнения функции - getCatById (получить категорию по её индитификатору) и параметром передадим эту функцию индетификатор который к нам пришел параметром _GET .
    28.     // $rsCategory- определяет какой является категория: главной или дочерней, в дальнейшем обрашаться к бд либо будем получать товар, либо дочерние категории
    29.     //d($rsCategory);
    30.     // если главная категория то показываем дочерние категории,
    31.     // иначе показываем товар
    32.     if($rsCategory['ID_GROUP_OF_PRODUCTS'] != 0) {
    33. //        $rsChildCats = getChildrenForCat($catId);
    34. //    }
    35. //    else {
    36.         $rsProducts = getProductsByCat($catId);
    37.         //d($rsProducts);
    38.     }
    39.     $rsCategories = getAllMainCatsWithChildren();
    40.     $smarty->assign('pageTitle', 'Товары категории' . $rsCategory['name']);
    41.    
    42.     $smarty->assign('pictureBig', $pictureBig);
    43.     $smarty->assign('rsCategory', $rsCategory);
    44.     $smarty->assign('rsProducts', $rsProducts);
    45.     $smarty->assign('rsChildCats', $rsChildCats);
    46.    
    47.     $smarty->assign('rsCategories', $rsCategories);
    48.    
    49.     loadTemplate($smarty, 'header');
    50.     loadTemplate($smarty, 'category');
    51.     loadTemplate($smarty, 'footer');
    52. }
    Контроллер страницы товара
    Код (Text):
    1. <?php
    2.  
    3. /**
    4. * ProductController.php
    5. *
    6. * Контроллер страницы товара {/product/1}
    7. *
    8. */
    9.  
    10. //подключаем модели
    11. include_once '../models/CategoriesModel.php';
    12. include_once '../models/ProductsModel.php';
    13. /**
    14. *
    15. * Формирование главной таблицы сайта
    16. *
    17. * @param object $smarty  шаблонизатор
    18. */
    19.   function indexAction($smarty) { // параметром передаем ему объект smarty
    20.       $itemId = isset($_GET['id']) ? $_GET['id'] : null;
    21.       if($itemId == null) exit();
    22.      
    23.    
    24.       //получить данные продукта
    25.       $rsProduct = getProductById($itemId);
    26.       //d($rsProduct);
    27.      
    28.      
    29.       $rsProducts = getProductsByCat($itemId);
    30.  
    31.       $rsCategories = getAllMainCatsWithChildren(); //record set categories(набор данных категории) переменной присваиваем результат
    32.      
    33.       $smarty->assign('pageTitle', ' '); // инициализируем переменную pageTitle (заголовок страницы) и присваиваем значение 'Главная страница сайта' ;
    34.       $smarty->assign('rsCategories', $rsCategories);// инициализируем переменную rsCategories и передадим ей переменнную $rsCategories
    35.       $smarty->assign('rsProduct', $rsProduct);
    36.       $smarty->assign('rsProducts', $rsProducts);
    37.  
    38. // с помощью функции loadTemplate(загрузка шаблона) данную переменную передадим в шаблон и выведем её там в определенных местах.// вторым парамметром -> ('index')указываем какой шаблон вызвать и какой стоит обработать    
    39.       loadTemplate($smarty, 'header');
    40.       loadTemplate($smarty, 'product');
    41.       loadTemplate($smarty, 'footer');
    42.   }  
    --- Добавлено ---
    есть еще файл: Модель для таблицы категорий. тоже запросы к БД
    --- Добавлено ---
    массив пустой прилетает в ProductController.php
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    $itemId точно передаешь?
    --- Добавлено ---
    что значит прилетает в ProductController?
    --- Добавлено ---
    В product controller вызывается метод getProductsByCat и результат пустой?
     
  5. AlexsaiL

    AlexsaiL Активный пользователь

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    ну значит проверяй что передаешь.
    Может запрос выполняется с ошибкой, может $itemId кривой какой то.
     
  7. AlexsaiL

    AlexsaiL Активный пользователь

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    в созданном запросе к бд присваиваю в эту переменную $itemId, в файле categoryController.php меняю c function getProductsByCat($itemId) на $rsProducts = getProductsByCat($catId); $catId и все работает, а в productController.php оставляю $itemId, но прилетают болты(пустота)
    --- Добавлено ---
    при запросе к бд выдает результат нужный, но появляется такая строка в бд: Данное выделение не содержит уникального столбца. Изменение сетки, выставление галочки, редактирование, копирование и удаление невозможно. (я как понимаю это не критично). при том этот запрос нормально выводит на главной странице ассоц массив и выкидывает в смарти всю нужную инфу, а на страницу товара не выводит
    --- Добавлено ---
    а так искал ошибки, что то не нашел, вроде правильно
     
  8. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Я понимаю, ты огорчен, возможно подавлен, мир уже не так ярок... но собирись.
    Если в одном месте метод работает в другом нет, значит ты передаешь что то не то)
    Вручную пропиши вместо $itemId корректное значение которое отработает и посмотри на результтат.
     
  9. AlexsaiL

    AlexsaiL Активный пользователь

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    ))))
    при отработке запроса функции на странице продуктов прилетает:
    Код (Text):
    1. SELECT t1.ID,
    2. t1.NAME as NAME,
    3. t1.PICTURE as PICTURE,
    4. t1.PRICE_RUS as PRICE_RUS,
    5. t1.ARCHIVE as ARCHIVE,
    6. t1.GROUP_NAME as GROUP_NAME,
    7. t1.ID_PRODUCT as ID_PRODUCT1,
    8. t2.ID_PRODUCT as ID_PRODUCT2,
    9. 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):
    1. SELECT t1.ID,
    2. t1.NAME as NAME,
    3. t1.PICTURE as PICTURE,
    4. t1.PRICE_RUS as PRICE_RUS,
    5. t1.ARCHIVE as ARCHIVE,
    6. t1.GROUP_NAME as GROUP_NAME,
    7. t1.ID_PRODUCT as ID_PRODUCT1,
    8. t2.ID_PRODUCT as ID_PRODUCT2,
    9. 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')
     
  10. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    честно скажу я не понимаю что ты там пишешь, коды какие то...
    в product controller в $rsProduct = getProductById($itemId); вместо $itemId списал вручную правильное значение?
    Отработало?
     
  11. AlexsaiL

    AlexsaiL Активный пользователь

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    да, но не отработало