【解決方法】DB ID onclick に基づいて動的ボタンをリダイレクトし、同じ ID に関連付けられたレコードを取得する方法


動的ボタンがあり、クリックすると (コース概要)、mysql db レコード ID を取得し、ページにリダイレクトします。

クリックされたIDに関連付けられたすべてのデータを取得し、コースの概要が異なっていても同じページに表示したいと考えています。
それは機能していません。

私が試したこと:

//button_clicked.php:
<?php 
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
include('connect.php');

// Fetch course data from database
$query = "SELECT id, btn_label, title FROM course";
$result = mysqli_query($conn, $query);
// Generate buttons with course IDs as identifiers
while ($row = mysqli_fetch_assoc($result)) {
    $courseID = $row['id'];
    $courseName = $row['btn_label'];
 
    echo "<button class='courseButton' onclick='redirectToCourse($courseID)'>$courseName</button>";

}
mysqli_free_result($result);

?>
<script src="bttn_clicked.js"></script>
</body>
</html>

//button_clicked.js

function redirectToCourse(courseID) {
    window.location.href = "course_display.php?id=" + courseID;
 }

解決策 1

最善かつ最も安全な方法は、「button_clicked.php」ページですでに宣言したセッションを利用することです。

引用:

セッション変数は、複数のページにわたって使用されるユーザー情報 (ユーザー名、コース名など) を保存することによって機能します。 デフォルトでは、セッション変数は、ユーザーがブラウザを閉じるか、セッションが終了するまで持続します。

変数を設定するには –

PHP
<?php
//Set session variables...
$_SESSION["courseID"] = $courseID;
$_SESSION["courseName"] = $courseName;
?>

これらの値を新しいページ「course_display.php」で使用するには –

PHP
<?php
session_start(); // Always start the page with 'session_start()...

//Echo session variables that were set on your previous page...
echo "User ID is - " . $_SESSION["courseID"] . ".<br>";
echo "Course Name is - " . $_SESSION["courseName"] . ".";
?>

セッションが開いていて有効である限り、これらの値をどのページでも使用できます。

セッションに含まれるすべての変数を表示するには –

PHP
<?php
print_r($_SESSION);
?>

セッションが終了したら必ずセッションを破棄してください –

PHP
<?php
session_start();

//Remove all session variables...
session_unset();

//Destroy the session...
session_destroy();
?>

これはセッション処理の基本であり、Google で検索するとさらに多くのことがわかりますが、正しい方向に導くことができます。 詳細については、こちらもお読みください –
PHPセッション[^]

コメント

タイトルとURLをコピーしました