Issue with my Simple If statment

I have this simple piece of code.
I am using GET to retrieve the catID from URL, then match it and set a backgorund image, some backgorund images can change per catID variable. When selected or clicked on.

It is not working, it is producing the catId in ech $_Get, but not matching it with $filename to set correct Image.

Ex. Browser catID may == 1, it code displays catid = 1, file name = deals_2.jpg.
This is worng. should be catid = 1 , filename = 1.

PLEASE HELP, missing something.


<?php	
  $imgpath = '/shushmedeals/templates/shushme_deals/images/';
  //$bgimgID = $item->id;

  $bgimgID = isset($_GET['categoryId']);
  $bgimgID = $_GET['categoryId'];
  echo $bgimgID;
  //echo 'shoot her eman';
  //echo  $imgpath;

  if($bgimgID){
  	$bgimgID = 1;
	$filename = '/shushmedeals/templates/shushme_deals/images/bg_home.jpg';
  } 
  if($bgimgID = 2){
  	$filename = '/shushmedeals/templates/shushme_deals/images/shushme_bg_img1.jpg';
  }
  if($bgimgID = 3){
  	 $filename = '/shushmedeals/templates/shushme_deals/images/shushme_bg_img2.jpg';
  } else {
  	 $filename = '/shushmedeals/templates/shushme_deals/images/shushme_bg_img3.jpg';
  }			 			 				  
  if($filename){ 
  	
  	echo '<br>'.$filename; 
  	// SET COOKIE 
  	//setcookie('bgimg',  $filename);	
  	//echo $_COOKIE['bgimg'];
  	
  } else { 
  	echo "There is no Background for this category"; 
  	// DO NOT SET COOKIE 
  } 


  // Print an individual cookie
  echo $_COOKIE["location"];
  
  ?>

The “if” statement is clumsy way to do this.
There are a few different ways to approach this problem.
If your filenames are consistent (eg a catId of 1 is for bg_img2.jpg, catId of 2 is bg_img3.jpg, etc) you can simply concatenate the catId (after modifying it)


$filename = $imgpath . 'shushme_bg_img' . ($bgimgID + 1) . ".jpg";

That single line replaces the entire ‘if’ block. But that will NOT accommodate your first case (the bg_home).

The other way to do this is by replacing your ‘if’ statement with a ‘switch’ statement (also known as a ‘case’).


switch($bgimgID) {
  case 1 : $filename = $imgpath . 'bg_home.jpg';
       break;
  case 2 : $filename = $imgpath . 'shushme_bg_img1.jpg';
      break;
  case 3 : $filename = $imgpath . 'shushme_bg_img2.jpg';
      break;
  default : //this is the safety valve in case the value does not match any of these cases
     $filename = $imgpath . 'bg_home.jpg';
}

This is precisely the type of logic for which the SWITCH statement is intended.

I’d use an array to lookup the ID to the background image


if( isset($_GET['categoryId']) ) {
    $imgpath = '/shushmedeals/templates/shushme_deals/images/';
    $bgimgID = (int)$_GET['categoryId'];
    $bgs = array(
        1 => 'bg_home.jpg',
        2 => 'shushme_bg_img1.jpg',
        3 => 'shushme_bg_img2.jpg',
    );
    
    //Have image for ID
    if( isset($bgs[$bgImgID]) ) {
        
        $filename = $imgpath . $bgs[$bgImgId];
        
        //Set cookie
    }
}

One problem is with this line

if($bgimgID = 2){       $filename = '/shushmedeals/templates/shushme_deals/images/shushme_bg_img1.jpg';   }

For comparison you should use a double equal “==”

if($bgimgID == 2){       $filename = '/shushmedeals/templates/shushme_deals/images/shushme_bg_img1.jpg';   }

Appreciate everyones feedback, you guys are genuis.

I was able to come up with code as you posted using case switch method.
And added more lines for settings of session variables.

Amazing work fellas.

Thank you all very much.