Как посчитать загрузку файла с помощью нажатий кнопок с помощью php mysql - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть веб-страница, которая помогает загружать файлы из базы данных.Я хочу посчитать, сколько раз была нажата кнопка загрузки, и отобразить ее на своей веб-странице с уникальным идентификатором.Это моя страница загрузки.Любая помощь подойдет

<div class="container">
<div class="row">
<div class="col-12">
<div class="media">
<img src="./images/<?= $mainImage; ?>" alt="PowerBeatz" width="300" height="300" />
<div class="media-body">
<h5 class="mt-0"><span class="title"><?php echo $row['song']; ?></span></h5>
<?php echo $row['artist']; ?>
<div class="play">
<a href="file.php?id=<?php echo $row['song_id']; ?>" class="btn btn-primary"><i class="fa fa-download"></i> </a>
</div>
<div>
<p>Total Downloads: </p>
</div>
</div>
</div>
</div>
</div>
</div>

Это мой скрипт file.php, и мне нужен скрипт, чтобы показать, как его изменить, чтобы отобразить результаты подсчета на странице загрузки, пожалуйста, любая помощь

<?php
require_once './includes/connection.php';
$conn = dbConnect('read');
if(isset($_GET['id'])){
$songid = $_GET['id'];
}
$sql = 'SELECT * FROM homemp3 WHERE song_id ='.$songid;
$result = $conn->query($sql);
$row = mysqli_fetch_array($result);
$mp3 = 'homemp3/' .$row['filename'];
// Get a date and timestamp
if(file_exists($mp3)) {
header('Content-Type: audio/mpeg');
header('Content-Disposition: attachment; filename="' .basename($mp3). '"' );
header('Content-length: '. filesize($mp3));
header('Cache-Control: no-cache');
header('Content-Transfer-Encoding: binary'); 
readfile($mp3);
header('Location: ' . $_GET['url']);
exit;
}

My database structure...
song_id    filename    song   album_art    artist    downloads
   x          x           x      x            x         x

1 Ответ

0 голосов
/ 27 февраля 2019

Каждый раз, когда к файлу обращаются, это может быть в файле file.php, выполнить ОБНОВЛЕНИЕ в MYSQL со строкой идентификатора файла, обновить столбец с именем «загрузки» или что-то в этом роде.Обновите его, добавив к нему 1.

Например:

 UPDATE songs SET downloads=downloads+1 WHERE id = song_id

На приведенной выше странице вы получите столбец загрузок и отобразите его после «Всего загрузок».

Не зная, используете ли вы какой-либо фреймворк, вы могли бы воспользоваться этим, если вы просто пишете простой PHP с нуля, вы можете использовать вышеописанное, как это.Вот обновленный файл downloads.php:

<?php
ob_start();
try {
// Database connection
require_once './includes/connection.php';
$conn = dbConnect('read');
// Sql query from table
if(isset($_GET['id'])){
$songid = $_GET['id'];
}
$sql = 'SELECT filename, album_art, downloads, song, song_id, artist FROM homemp3 WHERE 
song_id ='.$songid;
$result = $conn->query($sql);
$row = mysqli_fetch_array($result);

<!doctype html>
<div class="container">
<div class="row">
<div class="col-12">
<div class="media">
<img src="./images/<?= $mainImage; ?>" alt="PowerBeatz" width="300" height="300" />
<div class="media-body">
<h5 class="mt-0"><span class="title"><?php echo $row['song']; ?></span></h5>
<?php echo $row['artist']; ?>
<div class="play">
<a href="file.php?id=<?php echo $row['song_id']; ?>" class="btn btn-primary"><i class="fa fa-download"></i> </a>
</div>
<div>
<p>Total Downloads: <?php echo $row['downloads']; ?></p>
</div>
</div>
</div>
</div>
</div>
</div>

А затем file.php

<?php
require_once './includes/connection.php';
$conn = dbConnect('read');
if(isset($_GET['id'])){
$songid = $_GET['id'];
}
$sql = 'SELECT * FROM homemp3 WHERE song_id ='.$songid;
$result = $conn->query($sql);
$row = mysqli_fetch_array($result);
$mp3 = 'homemp3/' .$row['filename'];

// Update download count
$conn = dbConnect('read');
$update = 'UPDATE homemp3 SET downloads=downloads+1 WHERE song_id ='.$songid;
$downloads = $conn->query($update);

// Get a date and timestamp
if(file_exists($mp3)) {
header('Content-Type: audio/mpeg');
header('Content-Disposition: attachment; filename="' .basename($mp3). '"' );
header('Content-length: '. filesize($mp3));
header('Cache-Control: no-cache');
header('Content-Transfer-Encoding: binary'); 
readfile($mp3);
header('Location: ' . $_GET['url']);
exit;
}

Не зная, как выглядит connection.php, я думаю, это будет работать.Попробуйте!

...