Ошибка Warning: Invalid argument supplied for foreach() in /home4/thesisth/public_html/pdfsearchmachine/classes/rss.php on line 14
означает, что конструкция foreach не получила итерацию (обычно массив). Что в вашем случае означало бы, что $rs['items']
пусто ... возможно, поиск не дал результатов?
Я бы рекомендовал сначала добавить несколько проверок к результатам $rss->get("...")
, а также выполнить действие, если запрос не выполняется или не возвращает результатов:
<?php
$search = isset($_GET["search"]) ? $_GET["search"] : "default search term";
$start = "something here"; // This was left out of your original code
$colorCount = "0";
$replace = " ";
$with = "+";
$search = str_replace($replace, $with, $search);
$rs = $rss->get("http://api.search.yahoo.com/WebSearchService/rss/webSearch.xml?appid=yahoosearchwebrss&query=originurlextension%3Apdf+$search&adult_ok=1&start=$start");
if (isset($rs) && isset($rs['items'])) {
foreach ($rs['items'] as $item) {
$title = $item['title']; // Get the title of the result
$description = $item['description']; // Get the description of the result
$urllink = $item['guid']; // Get the link eg amazon.com
$color = ($colorCount % 2) ? ROW2_COLOR : ROW1_COLOR;
include "resulttemplate.php";
echo "\n";
$colorCount++;
}
}
else {
echo "Could not find any results for your search '$search'";
}
Другие изменения:
- $ start не был объявлен до вашего
$rss->get("...")
вызова
- включил выражение
$color
if / else в троичную операцию с меньшим количеством сравнений
- Я не был уверен, какова цель
if ($rs = $rss->get("...")) { }
, поэтому я удалил его.
Я бы также рекомендовал использовать require
вместо include
, поскольку это приведет к фатальной ошибке, если resulttemplate.php не существует, что, на мой взгляд, является лучшим способом обнаружения ошибок, чем предупреждения PHP, которые будут продолжать выполнение , Однако я не знаю всей вашей ситуации, так что она может оказаться бесполезной.
Надеюсь, это поможет!
Приветствия