我正在使用TMDB类似的电影API显示数据库的精确匹配结果。
$imdbid = $mysqli->real_escape_string($_GET['movie']);
$similarapiurl = "https://api.themoviedb.org/3/movie/{$imdbid}/similar?api_key=cfe422613b250f702980a3bbf9e90716";
$similarmovies = json_decode(file_get_contents($similarapiurl), true);
$i=0;
foreach ($similarmovies['results'] AS $similarmovie) {
$movietitle = $similarmovie['original_title'];
$movieyear = substr($similarmovie['release_date'], 0, 4);
$sql = "SELECT * FROM Movies WHERE EngTitle COLLATE utf8_general_ci='".$movietitle."' AND Year LIKE '%".$movieyear."%'";
$movieresult = $mysqli->query($sql);
if ($i==10) break;
if ($movieresult->num_rows > 0) {
while($row = $movieresult->fetch_assoc()) {
$i++;
?>
<div class="movie-card" data-id="<?php echo $row['ImdbID']; ?>">
<div class="item-card">
<div class="rating">
IMDB <span class="score"><?php echo $row['ImdbRating']; ?></span>
</div>
<div class="overlay ov-show">
<div class="description">
<?php echo mb_strimwidth($row['Description'], 0, 80, "..."); ?>
</div>
<div class="info">
<i class="fa fa-info-circle"></i> დაწვრილებით
</div>
<div class="actions">
<a href="/similar/<?php echo $row['ImdbID']; ?>" class="like">
<i class="fa fa-heart"></i> მაჩვენე მსგავსი
</a>
</div>
</div>
<img src="<?php echo $row['PosterURL']; ?>" alt="<?php echo $row['EngTitle']; ?>">
</div>
<div class="subtitle">
<h6><?php echo $row['GeoTitle']; ?></h6>
<span class="meta"><?php echo $row['EngTitle']; ?> / <?php echo $row['Year']; ?></span>
</div>
</div>
<?php
} $movieresult->free();
}
}
}
从代码中我可以看到,我在数组上运行foreach
循环,并在while
循环内部从数据库中获取结果。我在第10次运行中打破了foreach循环,所以它只显示前10个结果。
现在我要分页。我想运行循环,获取所有$movietitle
并显示前10,休息以呈现但隐藏,并在按钮或链接点击后显示。所以它看起来像分页,但会像标签内容一样立即。
我尝试了array_slice()
,但没有正确切割数组。我该怎么做?我应该在JavaScript或PHP中找到解决方案吗?