BotBeta
Admin
Sigma
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario popular!
Suscripción a IA
Entiendo, necesitas construir una consulta que verifique si el campoquiero que lo verifique asi en viewpost, photo="photo" y asi con todos los que tengan resultados en posters
photo de viewpost coincide con cada uno de los campos photo1, photo2, etc., que contienen archivos con la extensión [.mp4] en la tabla posters. Aquí tienes cómo hacerlo:### Código Ajustado
El siguiente código verifica cada campo de
photo en viewpost contra todos los campos de posters:
PHP:
// Consulta de todos los posters y sus photos
$quimids = mysqli_query($conexion, "SELECT id, photo, photo2, photo3, photo4, photo5, photo6, photo7, photo8, photo9, photo10, photo11, photo12, photo13, photo14, photo15, photo16, photo17, photo18, photo19, photo20 FROM posters");
$allPostIds = []; // Array para almacenar IDs y sus respectivos campos .mp4
while ($posterRow = mysqli_fetch_assoc($quimids)) {
$id = $posterRow['id'];
$fieldsWithMp4 = []; // Array para almacenar los nombres de los campos con .mp4
// Verificamos cada campo photo
for ($i = 1; $i <= 20; $i++) {
$photoField = 'photo' . ($i > 1 ? $i : ''); // Genera el nombre de la columna photo
if (isset($posterRow[$photoField]) && strpos($posterRow[$photoField], '.mp4') !== false) {
$fieldsWithMp4[] = $posterRow[$photoField]; // Almacena el valor de la foto
}
}
// Si hay alguna foto con .mp4, agrega el ID y los campos a la lista
if (!empty($fieldsWithMp4)) {
$allPostIds[$id] = $fieldsWithMp4; // Almacena el ID con sus campos que contienen .mp4
}
}
// Muestra los IDs y los campos respectivos con .mp4
if (!empty($allPostIds)) {
foreach ($allPostIds as $id => $photos) {
echo 'ID: ' . $id . ' tiene .mp4 en: ' . implode(', ', $photos) . '<br>';
}
}
// Ahora construimos la condición para la consulta de viewpost
$photoConditions = [];
foreach ($allPostIds as $id => $photos) {
foreach ($photos as $photo) {
// Compara cada photo con el campo photo en viewpost
$photoConditions[] = "v.photo='" . mysqli_real_escape_string($conexion, $photo) . "'";
}
}
// Unimos las condiciones con OR
$photoConditionSQL = implode(" OR ", $photoConditions);
// Consulta para verificar si están en viewpost
$quimy = mysqli_query($conexion, "SELECT * FROM viewpost v WHERE users LIKE '%," . $id2 . ",%' AND ($photoConditionSQL)");
$profitaer = [];
while ($filo = mysqli_fetch_assoc($quimy)) {
if (isset($filo['idpost'])) {
$profitaer[] = $filo['idpost'];
}
}
// Infle los arrays
$profitaerArray = array_filter($profitaer);
$allPostIdsArray = array_keys($allPostIds); // Cambiado para obtener solo los IDs
// Calcula los IDs faltantes
$missingItems = array_diff($allPostIdsArray, $profitaerArray);
// Muestra los IDs de posters faltantes
if (empty($missingItems)) {
// Si no hay idpost que faltan, selecciona aleatoriamente de posters
echo 'aleatorio';
$surym = mysqli_query($conexion, "SELECT * FROM posters WHERE (photo LIKE '%.mp4%' OR photo2 LIKE '%.mp4%' ...) ORDER BY RAND() DESC LIMIT 1");
} else {
// Selecciona un poster que no está en viewpost
$surym = mysqli_query($conexion, "SELECT p.*
FROM posters p
LEFT JOIN viewpost v ON (p.photo = v.photo OR p.photo2 = v.photo OR ...)
WHERE v.idpost IS NULL
AND (p.photo LIKE '%.mp4%' OR p.photo2 LIKE '%.mp4%' OR ...)
ORDER BY RAND() DESC LIMIT 1");
}
### Explicación:
1. Consulta a Posters: Primero, obtienes todos los posters y determinas qué fotos tienen la extensión [.mp4].
2. Construir Condiciones: Las condiciones se construyen comparando cada fotografía (que tiene [.mp4]) con el campo
photo en viewpost.3. Consulta de Viewpost: Se ejecuta la consulta para encontrar coincidencias basándose en los campos de fotos obtenidos anteriormente.
4. Validación SQL: Se utiliza
mysqli_real_escape_string para evitar inyecciones SQL al manipular los datos desde la base de datos.5. Cálculo de IDs Faltantes: Luego, calculas qué IDs faltan y determines si debes seleccionar aleatoriamente un poster.
Este enfoque asegura que verifiques correctamente cada una de las
photos en la tabla posters contra el campo photo en viewpost. Si tienes más preguntas o hay algo específico que necesites ajustar, no dudes en avisarme.

