[英]How to refresh content (wishlist) without reloading the page?
我正在通过玩弄 TMDb 的 API 来学习 PHP。 我正在建立一个有效的愿望清单。 现在脚本应该变得更舒服了。
我有一个功能,可以在可以单击愿望清单的每个电影页面上输出。
函数 getButtons()
function getButtons() {
global $movieID;
echo '<button type="button" class="btn btn-success">Besitze ich</button> ';
/*
* Überprüfe, ob der Film bereits in der Wunshcliste verfügbar ist
*/
$pdo = new PDO(
'mysql:host=localhost;dbname=moviesdb',
'root',
''
);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$stmt = $pdo->prepare("SELECT * FROM wishlist WHERE user_id = '".$_SESSION['id']."' AND movie_id = '". $_GET['movieID'] ."'");
$stmt->execute();
$countEntries = $stmt->rowCount();
//echo $countEntries;
if ($countEntries >= 1) {
echo '<a href="wishlist.php?movieID='. $movieID .'&action=remove"><button type="button" class="btn btn-danger">Von Wunschliste entfernen</button></a> ';
}
else {
echo '<a href="wishlist.php?movieID='. $movieID .'&action=add"><button type="button" class="btn btn-primary">Auf meine Wunschliste</button></a> ';
}
echo '<button type="button" class="btn btn-danger">Verliehen an</button>';
echo '</div>'; // end div col
echo '</div>'; // end div row
echo '<hr>';
}
如果用户点击“愿望清单”按钮,他将通过wishlist.php?movieID=XYZ?action=add
转发到 wishlist.php。
心愿单.php
<?php
$pdo = new PDO(
'mysql:host=localhost;dbname=moviesdb',
'root',
''
);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$stmt = $pdo->prepare("SELECT * FROM wishlist WHERE user_id = '" . $_SESSION['id'] . "'");
$stmt->execute();
?>
<?php
/*
* Prüfe, ob überhaupt Einträge vorhanden sind
*/
echo '<p>Hallo ' . $_SESSION['name'] . ', es befinden sich ' . $stmt->rowCount() . ' Einträge in deiner Wunschliste.</p>';
/*
* Debug Variablen
*/
//var_dump($_SESSION['id']);
//var_dump($_GET['movieID']);
//var_dump($_GET['action']);
/*
* Überprüfe die action
*/
if (isset($_GET['action'])) {
if ($_GET['action'] == 'add') {
$stmt = $pdo->prepare("SELECT * FROM wishlist WHERE user_id = '" . $_SESSION['id'] . "' AND movie_id = '" . $_GET['movieID'] . "'");
$stmt->execute();
$countEntries = $stmt->rowCount();
// echo $countEntries;
if ($countEntries >= 1) {
echo '<p>Der Film befindet sich bereits auf deiner Wunschliste!</p>';
} else {
$stmt = $pdo->prepare("INSERT INTO wishlist (user_id, movie_id) VALUES (:user_id, :movie_id)");
$stmt->execute(['user_id' => $_SESSION['id'], 'movie_id' => $_GET['movieID']]);
echo '<p>Der Film wurde deiner Wunschliste hinzugefügt.</p>';
}
}
if ($_GET['action'] == 'remove') {
$stmt = $pdo->prepare("DELETE FROM wishlist WHERE user_id = '" . $_SESSION['id'] . "' AND movie_id = '" . $_GET['movieID'] . "'");
$stmt->execute();
$countEntries = $stmt->rowCount();
// echo $countEntries;
if ($countEntries >= 1) {
echo '<p>Der Film wurde aus deiner Wunschliste gelöscht.</p>';
}
}
}
if ($stmt->rowCount() > 0) {
$stmt = $pdo->prepare("SELECT * FROM wishlist WHERE user_id = '" . $_SESSION['id'] . "'");
$stmt->execute();
echo '<table class="table table-striped table-sm">';
echo '<thead>';
echo '<tr>';
echo '<th scope="col">Cover</th>';
echo '<th scope="col">Titel</th>';
echo '<th scope="col">Eintrag löschen</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
foreach ($stmt as $row) {
$url = "https://api.themoviedb.org/3/movie/" . $row['movie_id'] . "?api_key=" . $apiKey . "&" . $language . "&" . $sortBy . ""; // path to your JSON file
$data = file_get_contents($url); // put the contents of the file into a variable
$movie = json_decode($data); // decode the JSON feed
echo '<tr>';
echo '<td class="align-middle"><img src="https://image.tmdb.org/t/p/w45/' . $movie->poster_path . '" class="img-thumbnail"></td>';
echo '<td class="align-middle"><a href="getMovie.php?movieID=' . $row['movie_id'] . '">' . $movie->title . ' (' . substr($movie->release_date, 0, 4) . ')</a></td>';
echo '<td class="align-middle"><a href="wishlist.php?movieID=' . $row['movie_id'] . '&action=remove"><span class="badge badge-danger">Entfernen</span></a></td>';
echo '<tr>';
}
echo '</tbody>';
echo '</table>';
}
?>
<?php include 'footer.php'; ?>
问题:如果我想让更改可见,我总是必须在浏览器中重新加载页面。 我怎样才能以不同的方式解决它?
尝试使用 javascript 或 javascript 框架,您可以使用 jquery 发出请求并动态显示数据。 创建一个 js 函数,在按钮单击等事件触发时获取并显示它们。
<script>
function getdata(){
$.get("http://example.com/fetchdata", function(data,status){
for(){
//loop your data
}
});
}
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.