2009-08-05 7 views
1

je fait une demande de prendre la lecture en cours le titre et l'artiste à partir d'un flux radio Internet, et je l'ai afficher en clair sur cette page:Comment stocker des données modifiées dans une base de données?

http://thelisthq.net/z1035.php

La sortie est tout simplement un php echo » $ La variable 'command, mais $ variable change constamment, alors comment puis-je stocker chaque valeur différente de $ variable dans une base de données. La fin plan de garder une liste de toutes les chansons qui jouent sur une certaine période de temps.

Répondre

11

Vous devrez configurer le script php pour qu'il s'exécute toutes les x minutes environ, et au lieu de répéter le résultat, vérifiez l'entrée de la base de données la plus récente par rapport au morceau en cours de lecture et ajoutez un nouveau record.

D'abord, certains SQL pour mettre en place une nouvelle table:

CREATE TABLE SongList (
    ID int primary key auto_increment not null, 
    Song char(255) not null, 
    PlayTime Datetime not null 
); 

Ensuite, modifiez votre script PHP pour insérer des enregistrements dans la base de données au lieu de faire écho à l'écran:

<?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); 
} 
?> 

Configurer une tâche planifiée ou un travail cron pour exécuter php -f z1035.php chaque minute.

Pour voir la liste complète des chansons, créer un nouveau fichier 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> 
+0

Quelle réponse complète! – Jamie

+1

+1, excellente réponse. – Brandon

Questions connexes