سلام
در گالری عکس که طبق آموزش جلو رفتم دوتا از دسته بندیام قروقاطی نشون داده میشن. در کل 4 تا دسته بندی دارم. موقع کلیک روشون، دوتاشون درست کار میکنن و عکسهای مختص خودشونو نشون میدن ولی دوتای دیگه که دسته بندیهای اتومبیل و طبیعت هستن، چنتا از عکسهای اتومبیل با عکسهای طبیعت میان و چنتا از عکسای طبیعت با عکسای اتومبیل.
علتش چی میتونه باشه؟
متشکرم.
کدتون و تصویری از دیتای توی دیتابیستون رو بگذارین تا ببینیم مشکل از کجاست.
class CategoriesController extends Controller {
public $layout = '//layouts/category';
public $category;
public $photos;
public $page;
public $allPages;
public $order;
public function actionView($id, $order='id', $page=1){
if(!($category= Categories::model()->findByAttributes(array('id'=>$id, 'confirm'=>1)))){
throw new CHttpException(404,'دسته بندی با این نام پیدا نشد.');
}
$this->category = $category;
$itemPerPage=8;
$criteria= new CDbCriteria();
$criteria->addColumnCondition(array('category_id'=>$category->id,'confirm'=>1));
$allPhotos= Photos::model()->count($criteria);
$allPages= ceil($allPhotos/$itemPerPage);
$page= max(1, intval($page));
$order= strtolower($order);
if(!in_array($order, array('id','likes','visits'))){
$order= 'id';
}
$criteria->order=$order.' DESC';
$criteria->limit=$itemPerPage;
$criteria->offset= ($page-1)*$itemPerPage;
$photos= Photos::model()->findAll($criteria);
$this->photos = $photos;
$this->page = $page;
$this->allPages = $allPages;
$this->order= $order;
$this->render('view');
}
}
اینم عکس data در دیتابیس:
[
attachment=11]
چرا اینقدر فیلد تعریف کردین؟
class CategoriesController extends Controller
{
public $layout = '//layouts/category';
public function actionView($id, $order = 'id', $page = 1)
{
if(!($category = Categories::model()->findByAttributes(array('id' => $id, 'confirm' => 1)))) {
throw new CHttpException(404, 'دسته بندی با این نام پیدا نشد.');
}
$itemPerPage = 8;
$criteria = new CDbCriteria;
$criteria->addColumnCondition(array('category_id' => $id, 'confirm' => 1));
$photoCount = Photos::model()->count($criteria);
$pageCount = ceil($photoCount / $itemPerPage);
$page = max(1, intval($page));
$order = strtolower($order);
if(!in_array($order, array('id', 'likes', 'visits'))) {
$order = 'id';
}
$criteria->order = $order . ' DESC';
$criteria->limit = $itemPerPage;
$criteria->offset= ($page - 1) * $itemPerPage;
$photos = Photos::model()->findAll($criteria);
$this->render('view', compact('category', 'order', 'page', 'pageCount', 'photos');
}
}
توی ویو هم با متغیرهای عادی کار کنید و بصورت فیلد نگذارین. معمولاً فیلد رو وقتی میگذارن که بخوان توی Layout و... هم ازش استفاده کنن وگرنه متغیر رو به ویو پاس میدن.
کدتون بنظرم درسته و مشکلی نداره. درصورت امکان توی پیام خصوصی تیم ویور بدین ببینم مشکل چیه.
این مشکل به دلیل دستی وارد کردن اطلاعات در دیتابیس رخ داده بود که الآن با تکمیل شدن پروژه و درج داده ها از طریق PHP و Yii، همه عکسها در دسته بندی مختص خودشون به نمایش درمیان.
متشکرم.