Come posso archiviare i dati di modifica in un database?
-
22-07-2019 - |
Domanda
Ho fatto una domanda per prendere il titolo e l'artista in riproduzione da uno streaming radio su Internet e lo visualizzo in testo normale in questa pagina:
http://thelisthq.net/z1035.php
L'output è semplicemente un comando php 'echo $ variabile', ma $ variabile è in continua evoluzione, quindi come posso memorizzare ogni diverso valore di $ variabile in un database. Il fine prevede di tenere un elenco di tutte le canzoni che suonano per un certo periodo di tempo.
Soluzione
Dovrai impostare lo script php in modo che venga eseguito ogni x minuti circa, e invece di fare eco al risultato, controlla la voce di database più recente rispetto al brano attualmente in riproduzione e, se è diverso, aggiungi un nuovo record .
Innanzitutto, alcuni SQL per impostare una nuova tabella:
CREATE TABLE SongList (
ID int primary key auto_increment not null,
Song char(255) not null,
PlayTime Datetime not null
);
Quindi, modifica lo script PHP per inserire i record nel database invece di fare eco allo schermo:
<?php
$song = get_song(); //not sure how you're doing that
$sql = "SELECT Song FROM SongList ORDER BY PlayTime DESC LIMIT 1";
list($prevSong) = mysql_fetch_row(mysql_query($sql));
if ($song !== $prevSong) {
$sql = "INSERT INTO SongList (Song, PlayTime) VALUES ('$song', NOW())";
mysql_query($sql);
}
?>
Imposta un'attività pianificata o un processo cron per eseguire php -f z1035.php
ogni minuto.
Per vedere l'intero elenco di brani, crea un nuovo file php station_history.php
<html>
<body>
<pre>
<?php
$sql = "SELECT Song, PlayTime FROM SongList LIMIT 20"; // Just the last 20 songs
$result = mysql_query($sql);
while(list($song, $playtime) = mysql_fetch_row($result)) {
echo "[$playtime] $song\n";
}
?>
</pre>
</body>
</html>