• 0

PHP / CSS question


Question

I have a script that calculates a number based on user inputs. I am trying to highlight the resulting cell based on the submitted value.

$vartotal is the result when the form is submited <20 is suppose to be highlighed green, >30 Orange and > 34 red. howerver the only one that is working is >34 - Red.

I was hoping someone will see what I am doing wrong.

TIA


$varIndicatorClass = "";
if($vartotal < 20){
$varIndicatorClass = 'class="highlight"';
}
$varIndicatorClass = "";
if($vartotal > 30){
$varIndicatorClass = 'class="highlight2"';
}
$varIndicatorClass = "";
if($vartotal > 34){
$varIndicatorClass = 'class="highlight1"';
}
[/CODE]

The cell that is highlighted

[CODE]<td '.$varIndicatorClass.'>'.$vartotal.'</td>[/CODE]

Link to comment
https://www.neowin.net/forum/topic/1156174-php-css-question/
Share on other sites

15 answers to this question

Recommended Posts

  • 0

You only need to initialize varIndicatorClass once:

   $varIndicatorClass = "";

   if($vartotal &lt; 20){
	$varIndicatorClass = 'class="highlight"';
	}
   else if($vartotal &gt; 30){
	$varIndicatorClass = 'class="highlight2"';
	}
   else if($vartotal &gt; 34){
	$varIndicatorClass = 'class="highlight1"';
	}

edit: you should also use an else statement for situations like this.

  • Like 1
  • 0

I screwed up, because it was late when I replied and I didn't read the code properly.

In the code I pasted above highlight2 will be chosen when the vartotal is above 30 (which includes > 34).

Removing the else statements would work, checking in reverse order would work, or getting more specific with the conditions would work:

Reverse order:

   $varIndicatorClass = "";

   if($vartotal &gt; 34){
        $varIndicatorClass = 'class="highlight1"';
        }
   else if($vartotal &gt; 30){
        $varIndicatorClass = 'class="highlight2"';
        }
   else if($vartotal &lt; 20){
        $varIndicatorClass = 'class="highlight"';
        }

More specific:

   $varIndicatorClass = "";

   if($vartotal &lt; 20){
        $varIndicatorClass = 'class="highlight"';
        }
   else if($vartotal &gt; 30 &amp;&amp; $vartotal &lt;= 34){
        $varIndicatorClass = 'class="highlight2"';
        }
   else if($vartotal &gt; 34){
        $varIndicatorClass = 'class="highlight1"';
        }

  • 0

I screwed up, because it was late when I replied and I didn't read the code properly.

In the code I pasted above highlight2 will be chosen when the vartotal is above 30 (which includes > 34).

Removing the else statements would work, checking in reverse order would work, or getting more specific with the conditions would work:

Reverse order:

   $varIndicatorClass = "";

   if($vartotal &gt; 34){
		$varIndicatorClass = 'class="highlight1"';
		}
   else if($vartotal &gt; 30){
		$varIndicatorClass = 'class="highlight2"';
		}
   else if($vartotal &lt; 20){
		$varIndicatorClass = 'class="highlight"';
		}

More specific:

   $varIndicatorClass = "";

   if($vartotal &lt; 20){
		$varIndicatorClass = 'class="highlight"';
		}
   else if($vartotal &gt; 30 &amp;&amp; $vartotal &lt;= 34){
		$varIndicatorClass = 'class="highlight2"';
		}
   else if($vartotal &gt; 34){
		$varIndicatorClass = 'class="highlight1"';
		}

you can also nest the code :p

Like so:


$varIndicatorClass = "";
if($vartotal > 30){
$varIndicatorClass = 'class="highlight"';
if($vartotal > 34){
$varIndicatorClass = 'class="highlight2"';
}
} else if($vartotal < 20){
$varIndicatorClass = 'class="highlight1"';
}
[/CODE]

  • 0

you can also nest the code :p

Like so:


$varIndicatorClass = "";
if($vartotal < 20){
$varIndicatorClass = 'class="highlight"';
if($vartotal > 30){
$varIndicatorClass = 'class="highlight2"';
if($vartotal > 34){
$varIndicatorClass = 'class="highlight1"';
}
}
}
[/CODE]

That won't work though, it will only go into that block if it's < 20, then you test if it's > 30/34 within that block.

  • 0

That won't work though, it will only go into that block if it's < 20, then you test if it's > 30/34 within that block.

Oops my bad I didn't see the < instead of > :p

fixed it

small asthetic thing, why are you doing $var='class="value"' when you can do $var="value" and put the "class=" bit in the html portion itself?

I wonder about that myself too but maybe he wants to use something else then class on certain values :/

  • 0

small asthetic thing, why are you doing $var='class="value"' when you can do $var="value" and put the "class=" bit in the html portion itself?

Cells that don't meet those conditions don't have a class.

It's not how I would do it, but it keeps the HTML generation part tidier.

  • 0

Do you guys all hate switch statements, or something? :laugh:

If you get to if, elseif, elseif, the syntax gets much cleaner if you just move to switch. Plus, if you ever have to stack classes (i.e, > 30 has classes for >30 and > 20), a switch makes it much easier.

  • Like 1
  • 0

Do you guys all hate switch statements, or something? :laugh:

If you get to if, elseif, elseif, the syntax gets much cleaner if you just move to switch. Plus, if you ever have to stack classes (i.e, > 30 has classes for >30 and > 20), a switch makes it much easier.

I'm always thinking like if and else if and else in my mind when writing stuff xD

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Dragon's Dogma 2: Dark Arisen expansion to bring snowy region, new updates also coming by Pulasthi Ariyasinghe Capcom had a surprise waiting for Dragon's Dogma fans today in the Nintendo Direct presentation. The company revealed an expansion for the second installment with a name that should be familiar to series veterans. Coming later this year, Dragon's Dogma 2: Dark Arisen is promising a massive new region to explore, new monsters, fresh skills to learn, and more. The studio says players will be heading to the Northern region of the world, named Norgan, to find new secrets about an undying "Fallen Dragon." There will be forgotten relics that the protagonist can find to unlock fresh weapons and skills the expansion is introducing. Players will also be able to find mysterious equipment from a previous Arisen as a part of the expansion, all part of 12 Lost Rites Dungeon Challenges they must complete to gain access. In Neowin's own review, I found Dragon's Dogma 2 to be an impressive RPG when it launched back in 2024, giving the title an 8.5/10 for its class variants, companion system, and immersive exploration. "Once a prosperous region of the kingdom of Vermund, it was abandoned many years ago for reasons unknown," says Capcom about the new region. "Long has it been since any soul traveled its paths. Blanketed in heavy snow, these frigid lands are home to savage hordes and creatures of unbelievable power. Those who are capable of vanquishing such fearsome foes, or those who possess a keen eye for exploration, will find themselves rewarded with powerful relics." Dragon’s Dogma 2: Dark Arisen expansion launches on October 9, 2026, with a $29.99 price tag. Ahead of the expansion release, Capcom is also planning to release two free updates to the base game. The first will land tomorrow, June 10, bringing more accessible fast travel with an Eternal Ferrystone and other quality-of-life adjustments. The second update will land sometime in August, aiming to improve frame rates, add more save slots, and bring even more community-requested adjustments. This expanded Dark Arisen edition is also launching on the Nintendo Switch 2 on the same day the content comes to PC, Xbox Series X|S, and PlayStation 5.
    • Classic themes are just the colors on the bar like the olden days, if you use the image themes, it does fancy transparent backgrounds and it makes the elements of the app look like they are transparent bubbles. This sample image shows what it looks like.  
    • Good point, unfortunately. NextDNS has far more filters and workarounds than uBlock, and it's easy to implement.
  • Recent Achievements

    • Week One Done
      rubentuben8 earned a badge
      Week One Done
    • Week One Done
      ARaclen earned a badge
      Week One Done
    • One Year In
      jojodbn earned a badge
      One Year In
    • One Month Later
      jojodbn earned a badge
      One Month Later
    • Week One Done
      jojodbn earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      524
    2. 2
      PsYcHoKiLLa
      231
    3. 3
      +Edouard
      124
    4. 4
      ATLien_0
      87
    5. 5
      Steven P.
      83
  • Tell a friend

    Love Neowin? Tell a friend!