78832
![unexpected T_ELSEIF [closed]](https://www.xszz.org/skin/wt/rpic/t20.jpg)
Question:
$pages = array("grac", "zamknij", "dolaczyc");
$pagesid = array("showNews", "showThread", "showProfile");
foreach ($pagesid as $page) {
if (isset($_GET[$page])) {
include('sobra/'.$page.'.php');
}
}
// just pages
elseif (in_array($_GET['page'], $pages)) {
include("$_GET[page].php");
}
// error
else include('error.php');
gives:<br /><i>Parse error: syntax error, unexpected T_ELSEIF in C:\WAMP\www\sdgag\index.php on line 33</i>
This should work i think.. what the problem can be?
Thanks
Answer1:Perhaps another approach. Do your logic, and determine what page you want to include ultimately. After all of the logic has been done, include your determined page.
<em>The following is untested, and may contain errors. Let me know, and I'll update the code.</em>
<?php
// Predefined list of acceptable pages
$pages = array("one","two","three");
$pagesid = array("four","five","six");
// Gather any user-defined page request
$desPage = trim($_GET["page"]);
// Assume they are wrong, and need to see error.php
$pageToLoad = "error.php";
// If the user request is not empty
if (!empty($desPage)) {
if (in_array($desPage,$pages)) {
$pageToLoad = $desPage . ".php";
}
} else {
// User request is empty, check other variables
foreach ($pagesid as $pageid) {
if (isset($_GET[$pageid])) {
$pageToLoad = $pageid . ".php";
}
}
}
// Show output page
include($pageToLoad);
?>
Answer2:The elseif and the else aren't attached to the if, you've put them outside of the foreach loop block.
Answer3:<strong>There is one closing bracket to much before the else.</strong>
It should read:
$pages = array("grac", "zamknij", "dolaczyc");
$pagesid = array("showNews", "showThread", "showProfile");
foreach ($pagesid as $page) {
if (isset($_GET[$page])) {
include('sobra/'.$page.'.php');
}
// just pages
else if (in_array($_GET['page'], $pages)) {
include("$_GET[page].php");
}
// error
else include('error.php');
}
<strong>If you indent your source code correctly such errors show up fast and you can fix them yourself.</strong>
Answer4: