2

I'm trying to use some mysql data in creating part of a variable name to refer to another variable already declared elsewhere. Basically how can I get the $damage_name be part of the if statement boolean check?

$conditions = array(
        'bent_num' => 0,
        'spine_torn' => 0,
        'pages_torn' => 0,
        'water_damage' => 0,
        'pages_highlighted' => 0,
        'pages_noted' => 0,
        'taped' => 0,
        'stained' => 0,
        'mold' => 0,
        'scratched' => 0
        );
    while ($row = mysql_fetch_assoc($res))
    {           
        $damage_name = $conditions[$row['type']]; 

        if (isset($conditions[$row['type']]) && $_SESSION[SELL_is_ . $damage_name . ];  == 'y')
        {
            $condition_score = $condition_score - $row['value'];
        }
    }

4 Answers 4

3

Broken syntax and concatenation. Try:

$_SESSION['SELL_is_' . $damage_name];
  • SELL_is_ needs to be quoted.
  • You had an extra concatenation operator after $damage_name
  • An extra semicolon after the closing square bracket.
Sign up to request clarification or add additional context in comments.

Comments

1

I think you mean:

$_SESSION[constant("SELL_is_" . $damage_name)]

I'm assuming SELL_is_ is a defined constant (because of the capitalization). To get the value of a define, either use the full name, or use constant.

Comments

1
$_SESSION[SELL_is_ . $damage_name . ]; 

should be

$_SESSION["SELL_is_" . $damage_name];

Comments

0

try:

if (isset($conditions[$row['type']]) && $_SESSION["SELL_is_$damage_name"]  == 'y')

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.