CodeIgniter Forums
[Solved] isset not working correct. - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: Using CodeIgniter (https://forum.codeigniter.com/forumdisplay.php?fid=5)
+--- Forum: General Help (https://forum.codeigniter.com/forumdisplay.php?fid=24)
+--- Thread: [Solved] isset not working correct. (/showthread.php?tid=61527)



[Solved] isset not working correct. - wolfgang1983 - 04-22-2015

Hello all, I am trying to make a <body class="<?php echo $class;?>"> to help with my specialized css 

For example if isset uri->segment(1) and (2) then would show something like this <body class="page-category-121"> which is correct

But if the uri segments not set I need it to be <body class="common-home"> that would mean it on base url page the home page for some reason when on home page it shows just <body class="-">

When on main url / base url how can I make it show  <body class="common-home">


PHP Code:
$page_id $this->input->get('page_id');
$path $this->input->get('path');
$route $this->uri->segment(1).'/'.$this->uri->segment(2);

if (isset(
$route)) {

if (isset(
$page_id)) {
$class '-' $page_id;
} elseif (isset(
$path)) {
$class '-' $path;
} else {
$class '';
}

$data['class'] = str_replace('/''-'$route).$class;
        
} else {

$data['class'] = 'common-home';





RE: isset not working correct. - kilishan - 04-22-2015

The problem is that the variables $page_id and $path are set so will always evaluate to TRUE. Use empty() instead

Code:
$page_id = $this->input->get('page_id');
$path = $this->input->get('path');
$route = $this->uri->segment(1).'/'.$this->uri->segment(2);

if ($route != '/')
{
   if (! empty($page_id))
   {
       $class = '-' . $page_id;
   } elseif (! empty($path))
   {
       $class = '-' . $path;
   } else
  {
       $class = '';
   }
}



RE: isset not working correct. - CroNiX - 04-22-2015

$this->uri->segment(x) always returns a value, and so will $this->input->get(x), so they will always pass "isset". If you are using CI2.x, they return FALSE if the segment or get parameter didn't exist. So that's probably what you want to check for (!==FALSE) instead of isset().


RE: isset not working correct. - wolfgang1983 - 04-22-2015

(04-22-2015, 07:29 AM)kilishan Wrote: The problem is that the variables $page_id and $path are set so will always evaluate to TRUE. Use empty() instead


Code:
$page_id = $this->input->get('page_id');
$path = $this->input->get('path');
$route = $this->uri->segment(1).'/'.$this->uri->segment(2);

if ($route != '/')
{
   if (! empty($page_id))
   {
       $class = '-' . $page_id;
   } elseif (! empty($path))
   {
       $class = '-' . $path;
   } else
  {
       $class = '';
   }
}

Thanks every one works great now.