Ver Mensaje Individual
  #3 (permalink)  
Antiguo 29/07/2014, 14:22
Avatar de iEnrique
iEnrique
 
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Hashtags del momento

Hola NSD,

Lo primero, darte las gracias por tu gran trabajo, muchas, muchas gracias. He escrito el código y me gustaría que le echaras un vistazo para ver si tengo errores o es tal y como me lo has explicado, te lo agradecería mucho.

En la base de datos tengo esto:
Código SQL:
Ver original
  1. INSERT INTO `pruebas`.`publicaciones` (`id`, `fecha_publicacion`, `hashtag`) VALUES (NULL, '2014-07-01 18:30:00', '#Buenas'), (NULL, '2014-07-01 18:33:00', '#Buenas'), (NULL, '2014-07-29 18:30:00', '#Hola');

Y en mi archivo .PHP tengo lo siguiente:
Código PHP:
Ver original
  1. <?php
  2.     $mysqli = mysqli_connect('localhost', 'root', '', 'pruebas') or die(mysqli_error($mysqli));
  3.     $sql = mysqli_query($mysqli, "SELECT fecha_publicacion, hashtag FROM publicaciones") or die(mysqli_error($sql));
  4.    
  5.     function minutos_diff($inicio, $fin){
  6.         $diff = strtotime($fin) - strtotime($inicio);      
  7.         return intval($diff / (60 * 60 * 24));
  8.     }
  9.    
  10.     $inicio = 7; // Contiene la fecha de inicio calculada previamente
  11.     $intervalo = 60; // Contiene la cantidad de minutos definida previamente
  12.     $cant_intervalos = 5; // Contiene la cantidad de sub-rangos calculada previamente
  13.      
  14.     $puntuaciones = array(); // Array con las puntuaciones del hashtag
  15.     while($hashtag = mysqli_fetch_array($sql)) // Recorrer de a uno en uno los registros.
  16.     {
  17.         $intervalo_actual = ceil(minutos_diff($hashtag["fecha_publicacion"], $inicio) / $intervalo); // Intervalo en el que esta.
  18.         if(!isset($puntuaciones[$hashtag["hashtag"]])){
  19.             $puntuaciones[$hashtag["hashtag"]] = array("hashtag" => $hashtag["hashtag"], "puntuacion" => ($cant_intervalos/$intervalo_actual));
  20.         }else{
  21.             $puntuaciones[$hashtag["hashtag"]]["puntuacion"] += ($cant_intervalos/$intervalo_actual);
  22.         }
  23.     }
  24.    
  25.     arsort($puntuaciones);
  26.     foreach($puntuaciones as $hashtag => $dato){
  27.         echo $dato["hashtag"].' (Puntuación '.$dato["puntuacion"].')<br>';
  28.     }
  29. ?>

Para terminar, en agradecería mucho que me contestaras una duda. ¿Qué diferencia hay entre $inicio y $intervalo? ¿Qué significa $cant_intervalos? Si me lo explicara más detalladamente se lo agradecería muchísimo porque aún no he conseguido entenderlo completamente.

¡MUCHÍSIMAS, MUCHÍSIMAS GRACIAS!