tiffer Posted September 5, 2010 Share Posted September 5, 2010 Hi I have recently moved hosting providers; I have a php include on my website, which feeds latest posts from my forums to my homepage. The code I use is <?php include ('../mb/getposts/posts.php?id=80')?> Now, this code used to work on my old host, but no longer works on my new host, giving an error of Warning: include(../mb/getposts/posts.php?id=80) [function.include]: failed to open stream: No such file or directory in /home/site/public_html/folder/page.php on line 41 Warning: include(../mb/getposts/posts.php?id=80) [function.include]: failed to open stream: No such file or directory in /home/site/public_html/folder/page.php on line 41 Warning: include() [function.include]: Failed opening '../mb/getposts/posts.php?id=80' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/site/public_html/folder/page.php on line 41 I can also include the script as <?php include ('../mb/getposts/posts.php')?> and when I do this the script works as it should do, but showing the default option. The ?id=xx bit allows me to choose what forum id I want the posts to be shown on my homepage as I have lots of individual homepages (long story) and to try and keep files small, I decided to wrap the latest posts php file into something where i could use one file for all the forums IDs that I need to show Does anyone know why this will not work? I am thinking it's a problem with the php config of my new server, and have asked my hosts, but they are telling me that this is out of their scope of support.. Any ideas would be appreciated Quote Link to comment Share on other sites More sharing options...
JasonLewis Posted September 5, 2010 Share Posted September 5, 2010 Try declaring the $id variable prior to including your script. $id = 80; include('../mb/getposts/posts.php'); Quote Link to comment Share on other sites More sharing options...
tiffer Posted September 5, 2010 Author Share Posted September 5, 2010 Hi, Using code: <?php $id = 80; include ('../mb/getposts/posts.php')?> gets rid of the error, but does not use the right variable, it defaults to the script's default id (i.e it brings up id=2 instead of id=80 Quote Link to comment Share on other sites More sharing options...
JasonLewis Posted September 5, 2010 Share Posted September 5, 2010 There there is something wrong with your posts.php file. You're probably doing this: if(!isset($_GET['id'])){ $id = 2; }else{ $id = $_GET['id']; } You'd want to be doing this now, because you're not declaring a $_GET superglobal, your declaring a standard variable. if(!isset($id)){ $id = 2; } You won't need to set it to itself again because it'll already be set. Quote Link to comment Share on other sites More sharing options...
tiffer Posted September 5, 2010 Author Share Posted September 5, 2010 Hi, The posts.php file for the ?id=xx is: <?php /** * VB Recent Topics - example usage and instructions * @author George Gonzalez <webmaster@socaltrailriders.org> * @version 2.0 * @package Recent_Topics * @link http://www.vbulletin.org/forum/showthread.php?t=134320 */ // THIS MUST BE CALLED FIRST. IF DOING FROM A DIFFERENT DIRECTLY, ADJUST THE FOLLOWING... require_once('recent_topics.class.php'); $_GET[id] = ereg_replace("[^0-9]","","$_GET[id]"); if($_GET[id] ==""){$_GET[id] = 2;} /** * DISPLAY OPTIONS **/ /* Include_from and exclude_from are forum ID filters. Use one or the other but NOT both. List the forum ID's seperated by commas. Defaults to all forums if nothing is present. ex1) to include only forums with ID's 45, 47, and 50... 'include_from' => '45,47,50' ex2) to exclude forums with ID's 11, 13, 18... 'exclude_from' => '11,13,18' Quantity is how many topics to bring back. This is optional. Default is 10. Time format is the same date() format. Refer to http://us.php.net/date for details. This is optional and defaults to 3:34 PM. */ $options = array( 'include_from' => $_GET[id], 'exclude_from' => '', 'quantity' => '15', 'time_format' => 'D j F, g:i A'); // initialize the recent_topics object and stick the options array into it $rt = new recent_topics($options); /* From here, you have lots of options. If you're okay with PHP, use get_array() to retrieve the raw topic data and format the output however you want... ex3) $topics_array = $rt->get_array(); Use get_html_table() to return a string of the recent topics in table format... ex4) $topics_table = $rt->get_html_table(); echo $topics_table; Use get_html_list() to return a string of the recent topics in list format... ex5) $topics_list = $rt->get_html_list(); echo $topics_list; Or, directly output a table or list with either the display_html_table() or display_html_list() methods... ex6) $rt->display_html_table(); ex7) $rt->display_html_list(); */ $rt->display_html_table(); // now, unset the object to close the db connection and clean it up unset($rt); // you may rinse and repeat however many times you want ... ?> Would I just need t change $_GET[id] = ereg_replace("[^0-9]","","$_GET[id]"); if($_GET[id] ==""){$_GET[id] = 2;} to the sample you mentioned below? Quote Link to comment Share on other sites More sharing options...
JasonLewis Posted September 5, 2010 Share Posted September 5, 2010 Yes, and then replace any occurrences of $_GET[id] with just $id. Quote Link to comment Share on other sites More sharing options...
tiffer Posted September 5, 2010 Author Share Posted September 5, 2010 Thanks! That works now, however, if I wanted to go to the page myself (not as a php include) with the vairable, http://mydomain.com/mb/getposts/posts.php?id=80 This just shows the default variable of 2 - Is there anything we can change to make this side work too? Quote Link to comment Share on other sites More sharing options...
JasonLewis Posted September 5, 2010 Share Posted September 5, 2010 Ah, yeah. Easy, instead of doing it like this: $id = 80; include('path/to/file.php'); Use: $_GET['id'] = 80; Then the code I showed you before in posts.php can be almost changed back, but we'll use something a bit different. if(isset($_GET['id']) && preg_match('/[0-9]+/', $_GET['id'])){ $id = $_GET['id']; }else{ $id = 2; } That checks to see if the ID has been set and that it is a number, you could also use is_numeric if you wanted to instead of the regular expression. Quote Link to comment Share on other sites More sharing options...
tiffer Posted September 5, 2010 Author Share Posted September 5, 2010 Cheers ProjectFear All is working fine now Thanks for all your help Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.