2

I think I've been staring at this for too long that now I'm failing to identify the problem.

Can someone kindly point out where this is going wrong?

Error:

Parse error: syntax error, unexpected 'if' (T_IF) in /Applications/MAMP/htdocs/mipbi/includes/classes/html.php on line 11

Code:

public static function textbox($name, $maxlength=''){
    return "<input type='text' id='$name' name='$name'  maxlength='$maxlength' value='". if (isset($_POST[$name])) { echo $name; } ."' >";
}

The error is generated at the if statement line.

2
  • what's the if doing concatenated to a return followed by an echo? Commented Jul 29, 2013 at 2:05
  • Its so bad I can't even spell right, lol. Thanks. Commented Jul 29, 2013 at 2:05

5 Answers 5

2

You cannot use if statements in such a way. Use the ternary operator for that purpose or have your variable pre-made before the concatenation.

public static function textbox($name, $maxlength=''){
    return "<input type='text' id='$name' name='$name'  
    maxlength='$maxlength' value='". (isset($_POST[$name]) ? $name : '')."' >";
}

Alternative:

public static function textbox($name, $maxlength='')
{
    if( !isset($_POST[$name] ) {
        $myname = $name;
    } else {
        $myname = '';
    }

return "<input type='text' id='$name' name='$name'  
maxlength='$maxlength' value='". $myname ."' >";

}
Sign up to request clarification or add additional context in comments.

Comments

1

You can't use if statements like that.

To do what you want to achieve you'll need to do this:

public static function textbox($name, $maxlength=''){
    return "<input type='text' id='$name' name='$name'  maxlength='$maxlength' value='".(isset($_POST[$name]) ? $name : '')."' >";
}

Comments

1

try it this way:

public static function textbox($name, $maxlength=''){
    return "<input type='text' id='".$name."' name='".$name."'  maxlength='".$maxlength."' value='".( (isset($_POST[$name]) ? $name:'')."' >";
}

Comments

0
public static function textbox($name, $maxlength=''){
    return "<input type='text' id='$name' name='$name'  maxlength='$maxlength' value='". if (isset($_POST[$name])) { echo $name; } ."' >";
}

should be:

public static function textbox($name, $maxlength=''){
    $ret = "<input type='text' id='$name' name='$name'  maxlength='$maxlength' value='";
    if (isset($_POST[$name])) { $ret .= $name; }
    return $ret . "' >";
}

Comments

0

You can't use the if function inside the retuned value string. I would build the string you want to return first, then return it. In my example the string to be returned is $out. Even if the above worked this is easier to read and maintain.

$out= "<input type='text' id='$name' name='$name'  maxlength='$maxlength' value='";
if (isset($_POST[$name])) {
    $out.= $name; 
} 
$out .='" >";
return $out;

1 Comment

Can you expand on why/how your proposed solution solves the question?

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.