Php 将数据发布到json url时出现问题

Php 将数据发布到json url时出现问题,php,json,post,youtube-api,Php,Json,Post,Youtube Api,嘿,我相信这是一个简单的解决办法,但它让我发疯 我正在使用youtube api,并尝试将用户生成的搜索词发布到url中,如下所示: <form action="pagination.php" method="post"> <input style="width:50%" type="text" name="search_term"> <input type="submit" value="Submit"> </form> <? $sea

嘿,我相信这是一个简单的解决办法,但它让我发疯

我正在使用youtube api,并尝试将用户生成的搜索词发布到url中,如下所示:

<form action="pagination.php" method="post">
<input style="width:50%" type="text" name="search_term">
<input type="submit" value="Submit">
</form>

<?

$search_term = $_POST['search_term'];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://gdata.youtube.com/feeds  
/api/videos?q='.$search_term.'&safeSearch=none&orderby=viewCount&v=2&alt=json&start- 
index=75&max-results=50');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$output = curl_exec($ch);
curl_close($ch); 

$data = json_decode($output,true);

$info = $data["feed"];
$video = $info["entry"];
$nVideo = count($video);



echo "<ul style='float:right'>";
foreach($video as $video) {
echo '<img src="'.$video['media$group']['media$thumbnail'][0]['url'].'"><br><br>';
$title = $video['title']['$t'];
$video_id = $video['media$group']['yt$videoid']['$t'];
echo '<a href="search_4.php?video_get_id='.$video_id.'">'.$title.'</a>';
echo '<br>';
一切都很完美


任何帮助都将不胜感激

我发现了一些语法错误。 下面的代码适合我。 注意:更改文件名,以便您可以测试此文件并更新自己文件中的代码。 可能是故意的,但在开始时,它总是执行“无条件”的检索,因为代码是执行的

ENTER terms and press Submit button
<form action="ytcurltest1.php" method="post">
<input style="width:50%" type="text" name="search_term">
<input type="submit" value="Submit">
</form>

<?PHP
$search_term = $_POST['search_term'];
$startIndex = 1;
$maxResults = 25;
$ch = curl_init();
$url =  'http://gdata.youtube.com/feeds/api/videos?q='
     . $search_term
     . '&safeSearch=none&orderby=viewCount&v=2&alt=json'
     . '&start-index=' . $startIndex
     . '&max-results=' . $maxResults;
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$output = curl_exec($ch);
curl_close($ch); 

$data = json_decode($output,true);
if ( count($data) == 0 )
  {
    echo 'NO RESULTS FOUND. ENTER other terms';
    RETURN;
  }
$info = $data["feed"];
$video = $info["entry"];
$nVideo = count($video);

echo "<ul style='float:right'>";
foreach ($video as $video)
    {
     echo '<img src="'.$video['media$group']['media$thumbnail'][0]['url']
          .'"><br><br>';
     $title = $video['title']['$t'];
     $video_id = $video['media$group']['yt$videoid']['$t'];
     echo '<a href="search_4.php?video_get_id='.$video_id.'">'.$title.'</a>';
     echo '<br>';
   }
?>
输入术语并按提交按钮

$search\u term似乎在url:/api/videos?q='.$search\u term.&safeSearch=none&orderby=viewCount&v=2&alt=json&start-index=75&max results=50'@matttuman我想他的意思是你没有向我们展示你的全部代码,例如:你用来发布的表单可能没有在方法上使用post。这将导致一个空的搜索项。同样,这一行是错误的
curl\u init($search\u term)应该是
curl_init()
@Prix-是的,很抱歉,我应该解释一下,我在发布$search\u术语后回显了它,以确保它不是空的。我已经包含了上面的全部代码。脚本的名称也是分页。php@matttuman您还没有测试过代码,但是为什么不尝试从数据中转储结果呢?问题似乎不在表单上。或者您可以简单地检查天气搜索项是否有任何条目或isset,如果没有,则跳过后面的条目。是的,这是一个选项。但是,如果没有给出任何术语,那么一开始运行它并没有错。不完全是这样,例如,如果您对API有请求限制,那么在可以阻止的情况下,毫无理由地运行它显然是一件坏事。但是,这不是这里的问题,但要记住这一点。我同意你的观点,在加载文件时,如果不是有意的,则阻止执行请求。另一个选项是将代码拆分为两个文件:表单代码和请求代码。并使用客户端完成的脚本验证该字段。
ENTER terms and press Submit button
<form action="ytcurltest1.php" method="post">
<input style="width:50%" type="text" name="search_term">
<input type="submit" value="Submit">
</form>

<?PHP
$search_term = $_POST['search_term'];
$startIndex = 1;
$maxResults = 25;
$ch = curl_init();
$url =  'http://gdata.youtube.com/feeds/api/videos?q='
     . $search_term
     . '&safeSearch=none&orderby=viewCount&v=2&alt=json'
     . '&start-index=' . $startIndex
     . '&max-results=' . $maxResults;
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$output = curl_exec($ch);
curl_close($ch); 

$data = json_decode($output,true);
if ( count($data) == 0 )
  {
    echo 'NO RESULTS FOUND. ENTER other terms';
    RETURN;
  }
$info = $data["feed"];
$video = $info["entry"];
$nVideo = count($video);

echo "<ul style='float:right'>";
foreach ($video as $video)
    {
     echo '<img src="'.$video['media$group']['media$thumbnail'][0]['url']
          .'"><br><br>';
     $title = $video['title']['$t'];
     $video_id = $video['media$group']['yt$videoid']['$t'];
     echo '<a href="search_4.php?video_get_id='.$video_id.'">'.$title.'</a>';
     echo '<br>';
   }
?>