php - 当网页上下载 pdf 链接时增加 SQL 数据库中的值

标签 php html mysql database web

我正在我的网站上创建一个电子书帐户:客户可以在其中拥有一个电子书库,每次下载电子书时,我需要向数据库添加 1 以便客户能够看到下载次数。我无法弄清楚我需要的代码行,我已经做了研究,但没有什么可以帮助解决这个特定的查询。这是我到目前为止所拥有的,它从 sql 表中提取信息并显示在 html 表中:

                    <p>List of Publications</p>
                    <?php

//连接 $query = "从 AccountTest 中选择 *";

$query = mysql_query($query);
$numrows = mysql_num_rows($query);

        ?>
    <table style="width: 80%; border:2px #be9c81 dashed; padding:10px 10px 10px 10px"align="center" >
        <tr>    

            <td>            <?php if ($numrows > 0){
    while($row = mysql_fetch_array($query))
    {
    ?>


            <a href="<?php echo $row['Link']; ?>" target="_blank">
            <img style="padding:20px 20px 20px 20px" alt=""  src="<?php echo $row['Image'];  ?>" /></a> <?php
    }

} else 

echo "Wrong Query";

?>

        </tr>

最佳答案

你可以使用 JQuery

电子书下载.php

<head>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

<script type="javascript/text">
// JavaScript Document
function Downloaded(id) {
    var data = {'id':id};
    $.post( "downloaded.php", data);
}
</script>
</head>

<p>List of Publications</p>

<?php
//connect $query = "SELECT * FROM AccountTest";
$query = mysql_query($query);
$numrows = mysql_num_rows($query);
?>
<table style="width: 80%; border:2px #be9c81 dashed; padding:10px 10px 10px 10px"align="center" >
    <tr>
<?php 
if ($numrows > 0){
    while($row = mysql_fetch_array($query)) {
    ?>    
    <td><a href="<?php echo $row['Link']; ?>" onclick="Downloaded(<?php echo $row['id']; ?>);" target="_blank"><img style="padding:20px 20px 20px 20px" alt=""  src="<?php echo $row['Image'];  ?>" /></a></td>
    <?php
    }
} else {
    echo "Wrong Query";
}
?>
    </tr>
</table>

下载的.php

if(isset($_POST['id']) && is_numeric($_POST['id'])) {
    $sql = "UPDATE table SET downloaded=downloaded+1 WHERE id = $_POST['id']";
}

编辑:我还没有测试过这段代码。此外,用户可能没有启用 JavaScript,在这种情况下,它不会计算下载次数,因此,如果您需要计算下载次数(例如,他们支付了如此多的费用),您可以确保他们在显示下载之前启用了 JavaScript。

更新:使用新选项卡和 PHP 记录下载然后呈现的另一种方法

<p>List of Publications</p>

<?php
//connect $query = "SELECT * FROM AccountTest";
$query = mysql_query($query);
$numrows = mysql_num_rows($query);
?>
<table style="width: 80%; border:2px #be9c81 dashed; padding:10px 10px 10px 10px"align="center" >
    <tr>
<?php 
if ($numrows > 0){
    while($row = mysql_fetch_array($query)) {
    ?>    
    <td><a href="download.php?id=<?php echo $row['id']; ?>" target="_blank"><img style="padding:20px 20px 20px 20px" alt=""  src="<?php echo $row['Image'];  ?>" /></a></td>
    <?php
    }
} else {
    echo "Wrong Query";
}
?>
    </tr>
</table>

<?php
######## download.php #######################
if(isset($_GET['id']) && is_numeric($_GET['id'])) {
    $query = "SELECT * FROM ebooks WHERE id = $_GET['id']";
    $query = mysql_query($query);
    $numrows = mysql_num_rows($query);
    if ($numrows > 0) {
        $sql = "UPDATE table SET downloaded=downloaded+1 WHERE id = $_POST['id']"; // update downloaded
        while($row = mysql_fetch_array($query)) {
            header('Content-Type: application/pdf');
            header('Content-disposition: attachment;filename='.$row['name'].'pdf');
            readfile($row['link']); // should be an absolute path
        }
    }
}
?>

关于php - 当网页上下载 pdf 链接时增加 SQL 数据库中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23426047/

相关文章:

database - 更新 Mysqldump 文件

PHP shell_exec() 有时不起作用

javascript - 打开自定义模式窗口时如何添加过渡效果?

html - Bootstrap 4 轮播响应式设计

javascript - "cannot read property length of null"- 谷歌

php - 在 MySQL 和 PHP 中管理图像

php - Magento - 从管理订单页面添加/删除功能的正确方法?

php - 警告 : mysqli_query(): Couldn't fetch mysqli

javascript - 我可以缩短这个脚本吗? (更新数据库表并刷新)

php - 替换 PHP :FunctionName with the PHP function return