Guest FirefoxRocks Posted December 5, 2009 Share Posted December 5, 2009 It isn't ideal for a search results page to return 950 entries. Currently they are paginated through JavaScript/jQuery but I was hoping that I could use PHP to do this instead (and maybe move onto AJAX later on).Right now the code (that displays non-paginated data) is this: $yt = new Zend_Gdata_YouTube(); $yt->setMajorProtocolVersion(2); $q = $yt->newVideoQuery(); $q->setVideoQuery($a); $videoFeed = $yt->getVideoFeed($q->getQueryUrl(2)); function printEntireFeed($videoFeed) { foreach($videoFeed as $videoEntry) { echo "<li>\n" .$videoEntry->getVideoTitle() . " <span class='hl'>" . $videoEntry->getVideoId() . "</span>\n<p>" . $videoEntry->getVideoDuration() . " seconds - " . $videoEntry->getVideoViewCount()." views"; } // See whether we have another set of results try { $videoFeed = $videoFeed->getNextFeed(); } catch (Zend_Gdata_App_Exception $e) { return; } if ($videoFeed) { printEntireFeed($videoFeed); } } printEntireFeed($videoFeed); As you can see, the results are returned through getNextFeed if there are more, and there is no way to specify a start/end range in the function as a variable or hardcoded.What is the proper way to do this? Write everything into an array and display only those array elements through a GET variable? The problem with that is the unnecessary bandwidth of retrieving all the results plus the memory (and speed) of the PHP code execution.More info: http://code.google.com/apis/youtube/2.0/de...html#Pagination Link to comment Share on other sites More sharing options...
justsomeguy Posted December 6, 2009 Share Posted December 6, 2009 You'll need the "next" link to include the number to start at, so if you display the first 10 then the next link should include 10 as the position to start at. You can just add a global counter in your code to keep track of how many you've printed. Link to comment Share on other sites More sharing options...
Guest FirefoxRocks Posted December 6, 2009 Share Posted December 6, 2009 Yes I understand that, it would look like "search.php?q=christmas&start=25" but how do I retrieve the next 23 videos from YouTube using the function in the API? Link to comment Share on other sites More sharing options...
justsomeguy Posted December 7, 2009 Share Posted December 7, 2009 You can use a global counter to keep track of how many you've gotten. Link to comment Share on other sites More sharing options...
Guest FirefoxRocks Posted December 7, 2009 Share Posted December 7, 2009 How do I do that? Link to comment Share on other sites More sharing options...
thescientist Posted December 7, 2009 Share Posted December 7, 2009 a global variable is one that is declared within a script but outside of any functions. That way multiple functions can read and right to the variable. It falls under the topic of scoping. Link to comment Share on other sites More sharing options...
Guest FirefoxRocks Posted December 7, 2009 Share Posted December 7, 2009 I still don't understand how I can use that (or a counter) to specify which number of videos to start retrieving though. Can you provide some code example please? Link to comment Share on other sites More sharing options...
justsomeguy Posted December 7, 2009 Share Posted December 7, 2009 Check here, this discusses global variables:http://www.php.net/manual/en/language.variables.scope.php Link to comment Share on other sites More sharing options...
Guest FirefoxRocks Posted December 8, 2009 Share Posted December 8, 2009 I don't think you understand what I am not understanding here. I know what a global variable is. I just don't know how you can use it to reduce the amount of data you are getting from the YouTube server.The problem here is that either the server is very slow or the process of retrieving a few hundred videos are slow. With or without an array, I don't think it's the echoing part that is slow. Link to comment Share on other sites More sharing options...
justsomeguy Posted December 8, 2009 Share Posted December 8, 2009 If you have a counter then you can figure out when to stop asking for new videos, which means you need to modify the printEntireFeed function to update and check the global counter. Link to comment Share on other sites More sharing options...
Guest FirefoxRocks Posted December 8, 2009 Share Posted December 8, 2009 If you have a counter then you can figure out when to stop asking for new videos, which means you need to modify the printEntireFeed function to update and check the global counter.Yes but how do you specify when to start asking for videos? Link to comment Share on other sites More sharing options...
justsomeguy Posted December 8, 2009 Share Posted December 8, 2009 You would need to check the YouTube API documentation to see if it includes a method to skip a certain number of results without needing to loop through them. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.