Agregar contador de reproducciones en reproductor de música

  • Autor Autor Wext
  • Fecha de inicio Fecha de inicio
W

Wext

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola gente como están 😀 pues tengo mi web (Radio regeneracion ~ Escuchar y descargar musica nunca fue tan facil.) y pues es un buscador en script jeje me gustaría que en pop up de las canciones donde la reproduce tuviera un contador que dijera "Esta canción a sido escuchada %'s veces" no c como ponerlo ya que el listen.php es un archivo generalizado agradecería mucho su ayuda c:
 
Haces una tabla

Tabla: visitas_video
Columnas: id_video, visitas

Simplecita para no acomplejarnos xD

en el archivo rescatas la variable (asumamos que es id)

Insertar CODE, HTML o PHP:
$id=$_GET['id'];
existe=mysql_num_rows(mysql_query("select id_video from visitas_video WHERE id_video='$id'"));
if ($existe>0)
{
mysql_query("UPDATE visitas_video SET visitas=visitas+1 WHERE id_video='$id'");
}
else
{
mysql_query("INSET INTO visitas_video ($id,1)");
}

Para obtener...

Insertar CODE, HTML o PHP:
$resultado=mysql_fetch_array(mysql_query("SELECT visitas FROM visitas_video WHERE "));
$cantidad_visitas=$resultado[0]['visitas'];
if ($cantidad_visitas>0)
{
$cantidad="Esta canción a sido escuchada $cantidad_visitas veces"; //más de 1
}
else
{
$cantidad="Esta canción a sido escuchada $cantidad_visitas vez"; //solo 1
}

Mil disculpas si tiene algún error de sintaxis ya que no tengo donde probarlo xD
 
Puedes crear un tabla que se llame visits por ejemplo, con campos id autoincrementable, ip del visitante, id de la canción. Luego en el archivo listen.php puedes hacer una comprobación si la ip ya ha escuchado esa canción que no se vuelva a insertar:
PHP:
$realip = ($_SERVER['REMOTE_ADDR'] ? mysql_real_escape_string($_SERVER['REMOTE_ADDR']) : mysql_real_escape_string($_SERVER['X_FORWARDER_FOR']));
ctype_digit($_GET['id']) or die('El id es necesario');
if(!mysql_num_rows(mysql_query('SELECT id FROM visits WHERE ip = \''.$realip.'\' && song = \''.$_GET['id'].'\''))){
  mysql_query('INSERT INTO visits (ip, song) VALUES (\''.$realip.'\', \''.$_GET['id'].'\')');
}
Luego, para obtener las visitas:
PHP:
echo 'Esta canción ha sido visitada ',mysql_num_rows(mysql_query('SELECT id FROM visits WHERE song = \''.$_GET['id'].'\'')),' veces';
No sé si sea exactamente lo que quieras, pero puede servir para darte una idea de cómo hacerlo.
Saludos
 
Puedes crear un tabla que se llame visits por ejemplo, con campos id autoincrementable, ip del visitante, id de la canción. Luego en el archivo listen.php puedes hacer una comprobación si la ip ya ha escuchado esa canción que no se vuelva a insertar:
PHP:
$realip = ($_SERVER['REMOTE_ADDR'] ? mysql_real_escape_string($_SERVER['REMOTE_ADDR']) : mysql_real_escape_string($_SERVER['X_FORWARDER_FOR']));

ctype_digit($_GET['id']) or die('El id es necesario');
if(!mysql_num_rows(mysql_query('SELECT id FROM visits WHERE ip = \''.$realip.'\' && song = \''.$_GET['id'].'\''))){
  mysql_query('INSERT INTO visits (ip, song) VALUES (\''.$realip.'\', \''.$_GET['id'].'\')');
}
Luego, para obtener las visitas:
PHP:
echo 'Esta canción ha sido visitada ',mysql_num_rows(mysql_query('SELECT id FROM visits WHERE song = \''.$_GET['id'].'\'')),' veces';
No sé si sea exactamente lo que quieras, pero puede servir para darte una idea de cómo hacerlo.
Saludos

Ya te había dicho algo por msn, pero para que el usuario lo vea, lo hago aquí también. Yo cambiaría:

PHP:
$realip = ($_SERVER['REMOTE_ADDR'] ? mysql_real_escape_string($_SERVER['REMOTE_ADDR']) : mysql_real_escape_string($_SERVER['X_FORWARDER_FOR']));
por
PHP:
$realip = mysql_real_escape_string($_SERVER['REMOTE_ADDR'] ? $_SERVER['REMOTE_ADDR'] : $_SERVER['X_FORWARDER_FOR']);
Aunque en realidad, use proxy o no, "REMOTE_ADDR" no estará vacío. Es decir, cuando el usuario usa proxy, "REMOTE_ADDR" contendrá la IP de dicho proxy, mientras que la real pasará a estar en "X_FORWARDER_FOR". Por lo que que debería comprobarse antes si "X_FORWARDER_FOR" está vacío o no (lo que viene a ser ponerlo al revés). Aunque hay casos en los que tampoco extraería la IP real, por ejemplo, cuando el servidor usa CDN. Para obtener la IP real, generalmente se crea una función más completa... pero como este tema no trata sobre eso, proseguiré con lo demás.

En la parte de obtener las visitas, aunque sólo se obtiene el id, si existiera un hipotético caso donde la canción sea popular y tenga cientos o miles de visitas, el servidor puede sufrir, o peor aún, llorar y discutir con el dueño. Podrías reemplazar:

PHP:
echo 'Esta canción ha sido visitada ',mysql_num_rows(mysql_query('SELECT id FROM visits WHERE song = \''.$_GET['id'].'\'')),' veces';
por
PHP:
$hits = mysql_fetch_row(mysql_query('SELECT id FROM visits WHERE song = \''.$_GET['id'].'\''));
echo 'Esta canción ha sido visitada '.$hits[0].' ve'.($hitsl[0] == 1 ? 'z' : 'ces');

Si no quieres hacerlo así, y no te importa gastar más recursos en vano, puedes usar printf o sprintf. Como en C++, esto hará que donde "%'s" (pero correctamente), aparezca el valor. No obstante, como es sólo uno el valor a mostrar y no usas idiomas ni nada, te recomiendo dejarlo así.

Como consejo final, lo mejor que podrías hacer es divorciarte de "MySQL" y, sin casarte ni prometerte, empezar a usar "MySQLi"... u otro como PDO.
 
Atrás
Arriba