0

I am not the best at coding but slowly learning. Currently trying to make a Wordpress plugin using a guide but got stuck with the below text.

Main error is in the last if statement. Throwing a syntax error for the last elseif statement. The code works without the first elseif statement but I cannot understand why.

if($tot != 0) {

    $res = '<div class="time_div"><div class=" pickinfod"><p class="form-field form-field-wide session_options bikeselopt"><label for="session_choose">'.$def_sess.' season selected</label><input style="display:none;" type="text" name="wc_extra_fields_normaltour[sessionoption]" value='.$def_sess.' /></p></div><p class="form-field form-field-wide session_options"><label for="wc_extra_fields_normaltour[spickupstart]">Pickup Timings:</label><select name="wc_extra_fields_normaltour[spickupstart]" id="atest" class="bikeselopt" onchange="get_locbytime(this.value);" required="required"><option value="">Select</option>';

    for($i=0; $i<$tot; $i++){
        $res .= '<option value="'.$arr_unq[$i].'">'.$arr_unq[$i].'</option>';
    }

    $res.= '</select></p></div>';

} else {

    if(($sess_type == "only_summer") || ($sess_type == "only_winter")){

        if($def_sess == 'winter'){
            $new_sess= 'summer';
        } else {
            $new_sess= 'summer';
        }

        $res.="<div class='mes_div'><p>".$def_sess." Product: Available May 1st - September 30th. In Summer please try our Bike The Bridges Tour</p></div>";
    }
    elseif($def_sess == 'summer'){
        $new_sess= 'winter';
    } else {
        $new_sess= 'winter';
    }

    $res.="<div class='mes_div'><p>".$def_sess." Product: Available October 1st - April 30th. In Winter please try our Winter Bike The Bridges Tour</p></div>";

}

elseif(($sess_type == "both_call") || ($sess_type == "only_summer_wintercall") || ($sess_type == "only_winter_summercall")){

    $res.="<div class='mes_div'><p><a href='tel:64279455801'>Call us</a> or <a href='mailto:".get_option('admin_email')."'>Email us</a></p></div>";}

}
echo $res;die(0);
}
Liftoff
  • 24,717
  • 13
  • 66
  • 119

2 Answers2

3

After cleaning up your code, it's a little easier to see. Your outermost if-statement goes

if{}
else{}
elseif{}

This is an invalid order. else is the final clause of an if-statement.

Also, there's an extra closing bracket at the end of the code block.

Liftoff
  • 24,717
  • 13
  • 66
  • 119
0

The construct for if is

if (condition) {
   //true 
}
else {
   //false
}

The construct for if elseif

if (condition) {
   //true 
}
elseif {
   //elseif
}
elseif {
   //elseif
}
else {
   //false
}

You cannot mix match elseif and else. Else should be always at the last for elseif construct. So the last elseif statement does not fit the syntax.

Jay Ganesan
  • 113
  • 6