在数据库"view_count"列值未更新时



我有一个功能,用户可以查看作业。我想根据查看最多的作业向用户显示作业。因此,当视图这个作业按钮将被点击,他们将是表上的数据库view_count,其值将增加。我为此写了一个脚本,但它不起作用。可能AJAX请求没有被正确发送或接收,因此脚本没有被执行。

here is the button

<a id="view-job-btn-<?php echo $row['job_id']; ?>"
target="_blank"
href="explore-job.php?jobid=<?php echo $row['job_id']; ?>"
class="btn btn-primary view-job-btn"
data-job-id="<?php echo $row['job_id']; ?>">
View This Job
<span class="view-count"><?php echo $row['view_count']; ?></span>
</a>

and script

<script type="text/javascript" >

document.addEventListener('DOMContentLoaded', function() {
const viewJobBtn = document.getElementById('view-job-btn-<?php echo $row['job_id']; ?>');
viewJobBtn.addEventListener('click', function() {
// Rest of the code here
const jobId = viewJobBtn.dataset.jobId;

const xhr = new XMLHttpRequest();
xhr.open('POST', 'update-view-count.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(xhr.responseText);

const response = JSON.parse(xhr.responseText);
if (response.success) {
const viewCountElement = viewJobBtn.querySelector('.view-count');
const currentViewCount = parseInt(viewCountElement.textContent);
viewCountElement.textContent = currentViewCount + 1;
console.log(response);
console.log(currentViewCount);
}
}
else{
console.log("Erororor");
}
};
xhr.send('jobId=' + encodeURIComponent(jobId));
});
});

</script>

update-view-count.php file code:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Check if the job ID is set in the AJAX request
if(isset($_POST['jobId'])) {
$jobId = $_POST['jobId'];

error_log("Received job ID: " . $_POST['jobId']);
// TODO: Update the view count for the job in the database
// Assuming the table name is tbl_jobs
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "job_portal";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "UPDATE tbl_jobs SET view_count = view_count + 1 WHERE enc_id = '$jobId'";
$result = $conn->query($sql);
if (!$result) {
echo "Database error: " . $conn->error;
} else {
echo "View count updated successfully";
}
$conn->close();
} else {
echo "Job ID not set";
}
?>

我有一个功能,用户可以查看作业。我想根据查看最多的作业向用户显示作业。因此,当视图这个作业按钮将被点击,他们将是表上的数据库view_count,其值将增加。"data-job-id"的值使用数据集属性设置按钮的属性。这将获得"jobId"的值。变量。

然后,我创建一个新的XMLHttpRequest对象,并设置请求,通过使用POST请求将jobId值发送到update-view-count.php文件来更新视图计数。

当请求完成时,onreadystatechange事件中的函数将被执行。如果请求成功(即,readyState为4,status为200),将通过获取"view-count"来更新按钮上的视图计数。元素并自增其值。

update-view-count.php中使用error_log(...)而不是echodie。这使得PHP写入Apache的error.log。回声无处可去。

在mysql命令行工具中手动运行UPDATE检查SQL。

最新更新