B
blankito1998
Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
no funciona, no me aparece ningun msjPara solucionar el problema y asegurarnos de que se muestren los posters de la semana actual según el formato de fecha que tienes, revisemos algunos aspectos clave y ajustemos el código en consecuencia:
1. Verifica que las fechas se estén manejando correctamente: Asegúrate de que estás usando el formato adecuado y que estás obteniendo correctamente los posters de la base de datos.
2. Consulta SQL: La consulta SQL debe ajustarse para que funcione correctamente con tu formato de fecha específico.
Aquí tienes un código revisado que debería funcionar:
### Código Modificado
PHP:// Obtener la fecha de inicio (lunes) y fin (domingo) de la semana actual $dateStart = new DateTime(); $dateStart->modify('monday this week'); // Primer día de la semana $dateEnd = new DateTime(); $dateEnd->modify('sunday this week'); // Último día de la semana // Formatear fechas a d-m-Y H:i:s $startDateFormatted = $dateStart->format('d-m-Y 00:00:00'); $endDateFormatted = $dateEnd->format('d-m-Y 23:59:59'); $hashtag_count = 0; $unique_hashtags = array(); $hashtag_occurrences = array(); // Array para contar las ocurrencias $likes_occurrences = array(); // Array para contar los likes $comments_occurrences = array(); // Array para contar los comentarios $shares_occurrences = array(); // Array para contar las veces compartido $total_occurrences = array(); // Array para contar la suma total de hashtags, likes, comentarios y compartidos // Consulta SQL usando BETWEEN para comparar las fechas correctamente, sin convertir $query = "SELECT * FROM posters WHERE fecha BETWEEN STR_TO_DATE('$startDateFormatted', '%d-%m-%Y %H:%i:%s') AND STR_TO_DATE('$endDateFormatted', '%d-%m-%Y %H:%i:%s')"; $chopos = mysqli_query($conexion, $query); // Comprobar si se ejecutó bien la consulta if ($chopos === false) { echo "Error en la consulta: " . mysqli_error($conexion); exit; } while ($loupas = mysqli_fetch_assoc($chopos)) { $string = $loupas['content']; preg_match_all("/(#\w+)/", $string, $matches); $hashtags = array_unique($matches[0]); foreach ($hashtags as $hashtag) { // Contamos hashtags únicos if (!in_array($hashtag, $unique_hashtags)) { $unique_hashtags[] = $hashtag; // Agregar a hashtags únicos } // Sumar ocurrencias if (isset($hashtag_occurrences[$hashtag])) { $hashtag_occurrences[$hashtag]++; } else { $hashtag_occurrences[$hashtag] = 1; // Inicializar el conteo } // Contar likes $chols = mysqli_query($conexion, "SELECT * FROM likeposter WHERE idlike='" . $loupas['id'] . "' ORDER BY id DESC"); $lomy = mysqli_num_rows($chols); // Contar comentarios $motuep = mysqli_query($conexion, "SELECT * FROM resposters WHERE idresp='" . $loupas['id'] . "'"); $motuepy = mysqli_query($conexion, "SELECT * FROM resposters2 WHERE idpost='" . $loupas['id'] . "'"); $comments_count = mysqli_num_rows($motuep) + mysqli_num_rows($motuepy); // Contar compartidos $clube = mysqli_query($conexion, "SELECT * FROM posters WHERE idshare='" . $loupas['id'] . "' ORDER BY id ASC"); $shares_count = mysqli_num_rows($clube); // Sumar likes if (isset($likes_occurrences[$hashtag])) { $likes_occurrences[$hashtag] += $lomy; } else { $likes_occurrences[$hashtag] = $lomy; } // Sumar comentarios if (isset($comments_occurrences[$hashtag])) { $comments_occurrences[$hashtag] += $comments_count; } else { $comments_occurrences[$hashtag] = $comments_count; } // Sumar compartidos if (isset($shares_occurrences[$hashtag])) { $shares_occurrences[$hashtag] += $shares_count; } else { $shares_occurrences[$hashtag] = $shares_count; } // Sumar al total $total_occurrences[$hashtag] = ($hashtag_occurrences[$hashtag] + $likes_occurrences[$hashtag] + $comments_occurrences[$hashtag] + $shares_occurrences[$hashtag]); $hashtag_count++; // Contar el número total de hashtags encontrados } } // Ordenar hashtags por total de ocurrencias (de mayor a menor) arsort($total_occurrences); // Mostrar los hashtags y sus conteos foreach ($total_occurrences as $hashtag => $totalCount) { $likesCount = isset($likes_occurrences[$hashtag]) ? $likes_occurrences[$hashtag] : 0; $hashtagCount = isset($hashtag_occurrences[$hashtag]) ? $hashtag_occurrences[$hashtag] : 0; $commentsCount = isset($comments_occurrences[$hashtag]) ? $comments_occurrences[$hashtag] : 0; $sharesCount = isset($shares_occurrences[$hashtag]) ? $shares_occurrences[$hashtag] : 0; echo '<a class="labra">' . $hashtag . ' : ' . $hashtagCount . ' (Likes: ' . $likesCount . ', Comentarios: ' . $commentsCount . ', Compartidos: ' . $sharesCount . ', Total: ' . $totalCount . ')</a><br>'; if (--$hashtag_count <= 0) { break; // Salir si se han mostrado 10 o más } }
### Explicación de los Cambios
1. Consulta SQL: Se utilizaBETWEENpara limitar los resultados a la fecha entre el inicio y el fin de la semana. Esto es más directo y puede ayudar con la legibilidad.
2. Ruta de Error: Si la consulta falla, se mostrará un mensaje de error que puede ayudarte a diagnosticar el problema.
3. Asegúrate de que la Conexión a la Base de Datos sea Correcta: Comprueba que$conexionse haya inicializado correctamente con tu base de datos.
### Pasos de Verificación
- Confirma que tienes registros en la tabla
posterscon fechas dentro de la semana actual.- Asegúrate de que el formato de fecha y la configuración de la base de datos estén correctos.
- Verifica los mensajes de error que puedan aparecer.
Realiza estas pruebas y ajustes. Si aún tienes problemas, no dudes en preguntar y proporcionar detalles adicionales sobre el error o comportamiento que estás experimentando.

