我需要从141部电影中筛选出10部最老的电影。完成此操作后,我需要使他们每个人都链接到他们的电影说明页面。 所以,我用它来拍摄最老的电影:
customTextField
并使用以下链接进行链接:
$movies = json_decode(file_get_contents('https://raw.githubusercontent.com/yegor-sytnyk/movies-list/master/db.json'))->movies;
$numbers = array_column($movies, 'year','title');
$numbers2=asort($numbers, SORT_NUMERIC);
$numbers3=array_slice($numbers, 0, 10);
还有single.php页面:
<?php foreach($numbers3 as $key=>$value){?>
<a href="single.php?movie_id"><?php echo "$key-$value",'<br>';?></a>
<?php }?>
在我按10部特定的电影后,我找不到ID来显示内容...:(
答案 0 :(得分:0)
您在这里缺少等号(“ =”):
<a href="single.php?movie_id"><?php echo "$key-$value",'<br>';?></a>
应为:
<a href="single.php?movie_id=<?php echo $movie_id?>" ><?php echo $key-$value; ?></a><br/>
只需添加(临时)类似的内容
print_r($_GET);
...在single.php脚本顶部,以查看单击链接时收到的值。
答案 1 :(得分:0)
我宁愿使用电影的真实ID作为参数:
<?php
$data = json_decode(file_get_contents('https://raw.githubusercontent.com/yegor-sytnyk/movies-list/master/db.json'), true);
$movies = array_key_exists('movies', $data) ? $data['movies'] : [];
$filtered_movies = $movies;
uasort( $filtered_movies, function ($a, $b) {
return $a['year'] - $b['year'];
});
$filtered_movies = array_slice($filtered_movies, 0, 10);
foreach ($filtered_movies as $id => $movie) {
?>
<a href="single.php?movie_id=<?= $id ?>"><?= $movie['year']." - ".$movie['title'] ?></a>
<?php
}
json_decode可以解码为关联数组,而不是对象。对于这种情况,这是更有利的解决方案。现在,在single.php
中通过唯一ID获取电影也更漂亮:
$movieId = $_GET['movie_id'];
$data = json_decode(file_get_contents('https://raw.githubusercontent.com/yegor-sytnyk/movies-list/master/db.json'), true);
$movies = array_key_exists('movies', $data) ? $data['movies'] : [];
if (array_key_exists($movieId, $movies)) {
?>
Movie details:<br>
Title: <?= $movies[$movieId]['title'] ?><br>
Year: <?= $movies[$movieId]['year'] ?><br>
Genres: <?= join(', ', $movies[$movieId]['genres']) ?><br>
<?php
} else {
?>
The desired movie does not exist.
<?php
}