BotBeta
Admin
Sigma
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario popular!
Suscripción a IA
El problema puede surgir de cómo estás verificando la presencia de los campos en el array$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[] = $photoField; // Almacena el nombre del campo
}
}
// 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
}
}
// Ahora construimos la condición para la consulta de viewpost
$photoConditions = [];
foreach ($allPostIds as $id => $fields) {
foreach ($fields as $field) {
// Compara cada photo con el campo photo en viewpost
$photoConditions[] = "v.photo='" . mysqli_real_escape_string($conexion, $field) . "' AND v.idpost = '$id'";
}
}
// 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)) {
// Almacena el photo y el idpost
if (isset($filo['photo']) && isset($filo['idpost'])) {
$profitaer[$filo['idpost']] = $filo['photo']; // Asociando ID de post con su foto
}
}
// Infle los arrays
$profitaerArray = array_filter($profitaer);
$allPostIdsArray = array_keys($allPostIds); // Cambiado para obtener solo los IDs
// Muestra los IDs y los campos faltantes
$lastId = null; // Variable para almacenar el último ID
$lastPhoto = null;
$missingItems = [];
foreach ($allPostIds as $id => $fields) {
foreach ($fields as $field) {
// Aquí verificamos si el campo (fotos) y su ID respectivo están en [viewpost]
if (!isset($profitaer[$id]) || $profitaer[$id] !== $field) {
$missingItems[] = 'ID: ' . $id . ', campo faltante: ' . $field;
// Guardar el último ID y su respectivo photo
$lastId = $id;
$lastPhoto = $field; // Considera que $field es el nombre del campo
}
}
}
if(empty($missingItems)){
$surym = mysqli_query($conexion, "SELECT * FROM posters
WHERE (photo LIKE '%.mp4%' OR photo2 LIKE '%.mp4%' OR photo3 LIKE '%.mp4%' OR photo4 LIKE '%.mp4%' OR photo5 LIKE '%.mp4%'
OR photo6 LIKE '%.mp4%' OR photo7 LIKE '%.mp4%' OR photo8 LIKE '%.mp4%' OR photo9 LIKE '%.mp4%'
OR photo10 LIKE '%.mp4%' OR photo11 LIKE '%.mp4%' OR photo12 LIKE '%.mp4%' OR photo13 LIKE '%.mp4%'
OR photo14 LIKE '%.mp4%' OR photo15 LIKE '%.mp4%' OR photo16 LIKE '%.mp4%' OR photo17 LIKE '%.mp4%'
OR photo18 LIKE '%.mp4%' OR photo19 LIKE '%.mp4%' OR photo20 LIKE '%.mp4%')
ORDER BY RAND() DESC LIMIT 1");
}else{
echo 'Último photo: ' . $lastPhoto . ' y último ID son: ' . $lastId . '<br>Campos faltantes: <br>' . implode('<br>', $missingItems);
$surym = mysqli_query($conexion, "SELECT * FROM posters WHERE id='".$id."' and $field LIKE '%.mp4%' ORDER BY RAND() DESC LIMIT 1");
}
porque aun me sigue diciendo que faltan campos faltantes y estan todos??
$profitaer y cómo compares los valores. A continuación, te doy algunas sugerencias para identificar y resolver el problema:### Posibles Causas del Problema
1. Comparación Incorrecta: En el bloque que verifica si un campo falta, estás comparando el valor almacenado en
$profitaer[$id] con el nombre de la columna (que es $field). Debes compararlo con el valor real de la foto que está almacenada en ese campo.2. Almacenamiento de Valores: Puede que estés esperando un valor específico que no corresponde con lo que realmente hay en la base de datos. Asegúrate de que estás comparando correctamente.
### Modificaciones Propuestas
1. Cambiar la forma en que se comparan los campos: En lugar de comparar
$profitaer[$id] con $field, necesitarás obtener el valor exacto de la foto correspondiente y comparar ese valor.2. Verificación Detallada: Asegúrate de actualizar el bloque que verifica los campos faltantes para que acceda al valor real de la foto.
### Código Ajustado
Aquí tienes una versión ajustada del bloque de verificación:
PHP:
// Muestra los IDs y los campos faltantes
$missingItems = [];
foreach ($allPostIds as $id => $fields) {
foreach ($fields as $field) {
// Obtenemos el valor real desde el $posterRow en la consulta original
$photoValue = isset($posterRow[$field]) ? $posterRow[$field] : null; // El valor real de la foto
// Verificamos si el ID y su photo están en [viewpost]
if (!isset($profitaer[$id]) || $profitaer[$id] !== $photoValue) {
$missingItems[] = 'ID: ' . $id . ', campo faltante: ' . $field;
// Guardar el último ID y su respectivo photo
$lastId = $id;
$lastPhoto = $photoValue; // Considera que almacenas el valor real de la foto
}
}
}
### Consideraciones Adicionales
- Depuración: Para ayudarte a depurar, puedes agregar prints o
var_dump de tus arrays al inicio de la verificación para ver exactamente qué datos contienen y si hay alguna discrepancia.- Asegúrate de que todos los campos están establecidos: Por ejemplo, si hay campos que no contienen valores (
NULL o vacíos), esto podría estar llevando a que el código piense que faltan.- Chequeos previos: Asegúrate de que antes de hacer comparaciones, todos los datos que estás utilizando están efectivamente dirigidos a los valores que deseas verificar.
Si después de estos cambios continúas teniendo problemas, verifica si hay algún error en los datos almacenados en la base de datos o si hay algún otro punto en el flujo de datos que no esté considerado.


