tags:

views:

215

answers:

2

Hi there everyone im new to PHP and Joomla and I have developed a component in Joomla but my code is giving me errors. I have tried to solve the problem but I’am unable to solve it. So can anyone suggest me what is the problem with my code? Thanks in advance.

Here are my two files:

1st view.html.php

defined('_JEXEC') or die('=;)');

jimport('joomla.application.component.view');

class namnamViewlistrestaurant extends JView
{
    function display($tpl = null)
    {
        $item = 'item';
        RestUser::RestrictDirectAccess();
        //-- Custom css
        JHTML::stylesheet( 'style.css', 'components/com_namnam/assets/css/' );

        $cuisine=Lookups::getLookup('cuisine');
        $lists['cuisine'] = JHTML::_('select.genericlist', $cuisine, 'idcuisine[]', 'class="inputbox" size="7"', 'value', 'text', $item->idcuisine);

        $category=Lookups::getLookup('restcategory');
        $lists['category'] = JHTML::_('select.genericlist', $category, 'idcategory[]', 'class="inputbox" multiple="multiple" size="7"', 'value', 'text', $item->idcategory);

        $items  = & $this->get('Data');
        $pagination =& $this->get('Pagination');

        $lists = & $this->get('List');

        $this->assignRef('items', $items);
        $this->assignRef('pagination', $pagination);
        $this->assignRef('lists', $lists);
        parent::display($tpl);

    }//function

}//class

And 2nd is listrestaurant.php

defined('_JEXEC') or die('=;)');

jimport('joomla.application.component.model');

class namnamModellistrestaurant extends JModel
{
    var $_data;
    var $_total = null;
    var $_pagination = null;

    function __construct()
    {
        parent::__construct();
        global $mainframe, $option;

        $limit      = $mainframe->getUserStateFromRequest( 'global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int' );
        $limitstart = $mainframe->getUserStateFromRequest( $option.'.limitstart', 'limitstart', 0, 'int' );
        $limitstart = ($limit != 0 ? (floor($limitstart / $limit) * $limit) : 0);
        $this->setState('limit', $limit);
        $this->setState('limitstart', $limitstart);
    }

    function _buildQuery()
    {
        $where = array();
        $where[]=" idowner=".RestUser::getUserID()." ";
        if ($this->search)
        {
            $where[] = 'LOWER(name) LIKE \''. $this->search. '\'';
        }

        $where =( count($where) ) ? ' WHERE ' . implode( ' AND ', $where ) : '';
        $orderby = '';

        #_ECR_MAT_FILTER_MODEL1_

        if (($this->filter_order) && ($this->filter_order_Dir))
        {
            $orderby    = ' ORDER BY '. $this->filter_order .' '. $this->filter_order_Dir;
        }

        $this->_query = ' SELECT *'
        . ' FROM #__namnam_restaurants '
        . $where
        . $orderby
        ;

        return $this->_query;
    }


    function getData()
    {
        if (empty($this->_data))
        {
            $query = $this->_buildQuery();
            $this->_data = $this->_getList($query, $this->getState('limitstart'), $this->getState('limit'));
        }
        return $this->_data;
    }

    function getList()
    {
        // table ordering
        $lists['order_Dir'] = $this->filter_order_Dir;
        $lists['order']     = $this->filter_order;

        // search filter
        $lists['search']= $this->search;

        return $lists;
    }

    function getTotal()
    {
        // Load the content if it doesn't already exist
        if (empty($this->_total))
        {
            $query = $this->_buildQuery();
            $this->_total = $this->_getListCount($query);
        }

        return $this->_total;
    }

    function getPagination()
    {
        // Load the content if it doesn't already exist
        if (empty($this->_pagination))
        {
            jimport('joomla.html.pagination');
            $this->_pagination = new JPagination($this->getTotal(), $this->getState('limitstart'), $this->getState('limit') );
        }

        return $this->_pagination;
    }




}//class

And the errors are:

Notice: Trying to get property of non-object in C:\wamp\www\namnam.com\components\com_namnam\views\listrestaurant\view.html.php on line 26

Notice: Trying to get property of non-object in C:\wamp\www\namnam.com\components\com_namnam\views\listrestaurant\view.html.php on line 29

Notice: Undefined property: namnamModellistrestaurant::$search in C:\wamp\www\namnam.com\components\com_namnam\models\listrestaurant.php on line 38

Notice: Undefined property: namnamModellistrestaurant::$filter_order in C:\wamp\www\namnam.com\components\com_namnam\models\listrestaurant.php on line 48

Notice: Undefined property: namnamModellistrestaurant::$search in C:\wamp\www\namnam.com\components\com_namnam\models\listrestaurant.php on line 38

Notice: Undefined property: namnamModellistrestaurant::$filter_order in C:\wamp\www\namnam.com\components\com_namnam\models\listrestaurant.php on line 48

Notice: Undefined property: namnamModellistrestaurant::$filter_order_Dir in C:\wamp\www\namnam.com\components\com_namnam\models\listrestaurant.php on line 76

Notice: Undefined property: namnamModellistrestaurant::$filter_order in C:\wamp\www\namnam.com\components\com_namnam\models\listrestaurant.php on line 77

Notice: Undefined property: namnamModellistrestaurant::$search in C:\wamp\www\namnam.com\components\com_namnam\models\listrestaurant.php on line 80

+1  A: 

I'd say the errors are pretty self explaining. What exactly is your problem?

In view.html.php you have the variable $item and try to access the properties $item->idcuisine and $item->idcategory but actually, $item is just a string

 $item = 'item';

and hence cannot have properties.


In listrestaurant.php your class does not seem to have a property search or filter_order. You don't define them in your class, but I don't know about the parent class JModel.

Felix Kling
this is the parent class can u plz elobrate on this issue
anwar
thanks a lot almost my 80% of errors are gone but still 2 errors are there plz help me on that:Notice: Trying to get property of non-object in C:\wamp\www\namnam.com\components\com_namnam\views\listrestaurant\view.html.php on line 28Notice: Trying to get property of non-object in C:\wamp\www\namnam.com\components\com_namnam\views\listrestaurant\view.html.php on line 31
anwar
i need to know what changes to make?????????
anwar
@anwar: I don't know your application. You have to assign a valid object to `$item`.
Felix Kling
A: 

defined('_JEXEC') or die('=;)');

jimport('joomla.application.component.model');

class namnamModelajax extends JModel { var $_data; var $_total = null; var $_pagination = null;

function __construct()
{
    parent::__construct();
    global $mainframe, $option;

    $limit      = $mainframe->getUserStateFromRequest( 'global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int' );
    $limitstart = $mainframe->getUserStateFromRequest( $option.'.limitstart', 'limitstart', 0, 'int' );
    $limitstart = ($limit != 0 ? (floor($limitstart / $limit) * $limit) : 0);
    $this->setState('limit', $limit);
    $this->setState('limitstart', $limitstart);
}

function _buildQuery()
{
    $where = array();
    $where[]=" idowner=".RestUser::getUserID()." ";
    if ($this->search)
    {
        $where[] = 'LOWER(name) LIKE \''. $this->search. '\'';
    }

    $where =( count($where) ) ? ' WHERE ' . implode( ' AND ', $where ) : '';
    $orderby = '';

    #_ECR_MAT_FILTER_MODEL1_

    if (($this->filter_order) && ($this->filter_order_Dir))
    {
        $orderby    = ' ORDER BY '. $this->filter_order .' '. $this->filter_order_Dir;
    }

    $this->_query = ' SELECT *'
    . ' FROM #__namnam_restaurants '
    . $where
    . $orderby
    ;

    return $this->_query;
}


function getSponRest($limiter)
{
    $db=$this->_db;
    $query="SELECT id as id,restaurant_name as name FROM #__namnam_restaurants where published=1 and issponsored=1 limit $limiter";
    $db->setQuery($query);
    //$result =$db->loadResult();
    $result =$db->loadObjectList();
    return $result;
}

function getAllRestaurants($limiter)
{
    $db=$this->_db;
    $query="SELECT id as id,restaurant_name as name FROM #__namnam_restaurants where published=1 limit $limiter";
    $db->setQuery($query);
    $result =$db->loadObjectList();
    return $result ;
}

function getStaffFavs($limiter)
{
    $db=$this->_db;
    $query="SELECT id as id,restaurant_name as name FROM #__namnam_restaurants where published=1 and stafffav=1 limit $limiter";
    $db->setQuery($query);
    $result =$db->loadObjectList();
    return $result ;
}


function getCuisines()
{
    $db=$this->_db;
    $query="select id as id,name as name from jos_namnam_cuisine where id in(select distinct idcuisine from jos_namnam_relcuisine)";
    $db->setQuery($query);
    $result =$db->loadObjectList();
    return $result ;
}


function getCategories()
{
    $db=$this->_db;
    $query="select id as id,name as name from jos_namnam_restcategory where id in(select distinct idcategory from jos_namnam_relcategory)";
    $db->setQuery($query);
    $result =$db->loadObjectList();
    return $result ;
}
function getRestByCuisine($limiter,$id)
{
    $db=$this->_db;
    $query="SELECT j.id as id, j.restaurant_name as name FROM jos_namnam_restaurants j, jos_namnam_relcuisine b where b.idforeign=j.id and b.idcuisine=$id limit $limiter";
    $db->setQuery($query);
    $result =$db->loadObjectList();
    return $result ;
}
function getRestByCategory($limiter,$id)
{
    $db=$this->_db;
    $query="SELECT j.id as id, j.restaurant_name as name FROM jos_namnam_restaurants j, jos_namnam_relcategory b where b.idforeign=j.id and b.idcategory=$id limit $limiter";
    $db->setQuery($query);
    $result =$db->loadObjectList();
    return $result ;
}

function RegisterUser($post)
{

}

function login()
{
    // Check for request forgeries
    //JRequest::checkToken('request') or jexit( 'Invalid Token' );

    global $mainframe;

    $options = array();
    $options['remember'] = JRequest::getBool('remember', false);
    $options['return'] = $return;

    $credentials = array();
    //$credentials['username'] = JRequest::getVar('username', '', 'method', 'username');
    //$credentials['password'] = JRequest::getString('passwd', '', 'post', JREQUEST_ALLOWRAW);

    $credentials['username'] = JRequest::getString('username');
    $credentials['password'] = JRequest::getString('passwd');

    //preform the login action
    $error = $mainframe->login($credentials, $options);

    if(!JError::isError($error))
    {
        //login succeeded
        return true;
    }
    else
    {
        //login failed
        //$arrayError[0]="#error";
        //$arrayError[1]="Invalid Username or Password";
        //$arrayError[2]="#error";
        //return '{"jsonValidateReturn":'.json_encode($arrayError).'}';
        print_r($error);
        $msg="Please enter correct Username and Password";
        return $msg;

    }
}



function getRestDetails($restID){

    $db=$this->_db;
    //$query="SELECT id as id,restaurant_name as name FROM #__namnam_restaurants where published=1 limit $limiter";
    $query='select r.id as id, r.restaurant_name as name,
        (select group_concat(a.name) as cuisinename from jos_namnam_cuisine a,jos_namnam_relcuisine b
        where a.id=b.idcuisine and b.idforeign=r.id) as cuisine,
        (select group_concat(rcat.name) as categoryname from jos_namnam_restcategory rcat,jos_namnam_relcategory relcat
        where rcat.id=relcat.idcategory and relcat.idforeign=r.id) as category,
        r.budget as budget,
        (SELECT group_concat(concat_ws("/",cty.cityname,dst.districtname,cnt.name)) as location
        FROM jos_namnam_restlocations restloc,jos_namnam_cities cty,jos_namnam_districts dst,
        jos_namnam_countries cnt where cty.id=restloc.idcity and dst.id=restloc.iddistrict and
        cnt.id=restloc.idcountry and restloc.idrestaurant=r.id) as locations,
        r.hotline as hotline,
        r.logo as logo,
        (select group_concat(rrloc.phone) as phone from jos_namnam_restlocations rrloc where rrloc.idrestaurant=r.id) as branchphones
        from jos_namnam_restaurants r where r.id='.$restID;

    $db->setQuery($query);
    $result =$db->loadObjectList();
    return $result ;


}


function getData()
{
    if (empty($this->_data))
    {
        $query = $this->_buildQuery();
        $this->_data = $this->_getList($query, $this->getState('limitstart'), $this->getState('limit'));
    }
    return $this->_data;
}

function getList()
{
    // table ordering
    $lists['order_Dir'] = $this->filter_order_Dir;
    $lists['order']     = $this->filter_order;

    // search filter
    $lists['search']= $this->search;

    return $lists;
}

function getTotal()
{
    // Load the content if it doesn't already exist
    if (empty($this->_total))
    {
        $query = $this->_buildQuery();
        $this->_total = $this->_getListCount($query);
    }

    return $this->_total;
}

function getPagination()
{
    // Load the content if it doesn't already exist
    if (empty($this->_pagination))
    {
        jimport('joomla.html.pagination');
        $this->_pagination = new JPagination($this->getTotal(), $this->getState('limitstart'), $this->getState('limit') );
    }

    return $this->_pagination;
}

}//class

anwar
this is the parent class
anwar
@anwar: No its not. It is the same class as above. Also you should not answer your own question if it is not a real answer. Anyway you should know which properties are available in your class and if it says `search` is not available, than it isn't and you cannot use it.
Felix Kling