Tema para preguntas random a Chatgpt 🤖

  • Autor Autor Carlos Arreola
  • Fecha de inicio Fecha de inicio
Estado

🔒 Este tema está cerrado para nuevas respuestas.

⏰ Solo el creador del tema puede solicitar la reapertura de sus propios temas, pero únicamente dentro de los 60 días previos a la última actualización.

Para hacer que se inicie la reproducción del video en un <iframe> específico según el id, necesitarás acceder al iframe y ejecutar la función de reproducción en el video dentro de él. Puedes hacerlo enviando un mensaje al iframe utilizando postMessage, o si puedes acceder a la referencia del video dentro del iframe, podrías hacer algo más directo.

Si estás usando el método postMessage, aquí tienes un ejemplo básico:

### Código del iframe

Asegúrate de que el iframe tenga un evento que escuche los mensajes. Por ejemplo:

JavaScript:
// Código dentro del iframe
window.addEventListener("message", function(event) {
    if (event.data === "playVideo") {
        var video = document.querySelector("video"); // Asegúrate de seleccionar el video correcto
        if (video) {
            video.play();
        }
    }
});

### Código principal

Ahora, en tu código principal, envía un mensaje al iframe después de obtener el id:

JavaScript:
$(document).on("click", ".fierm3,.fierm4", function() {
    var id = parseInt($(this).attr("viewhd"));
   
    // Oculta todos los elementos .frames
    $(".frames").css("display", "none");
    $(".frames[viewhd='" + id + "']").css("display", "flex");

    // Consigue el iframe correspondiente
    var iframe = $("iframe[src*='iframe.php?view=" + id + "']")[0];

    if (iframe) {
        // Enviar mensaje para reproducir el video
        iframe.contentWindow.postMessage("playVideo", "*");
    }
});

### Resumen

1. Código dentro del iframe: Escucha mensajes y reproduce el video al recibir "playVideo".
2. Código principal: Envía dicho mensaje al iframe correspondiente cuando haces clic en .fierm3 o .fierm4.

Asegúrate de que, dentro del iframe, el video se puede reproducir automáticamente en función de cómo esté configurada su política de autoplay. ¡Espero que esto te ayude! Si tienes más preguntas, no dudes en preguntar.
var iframe = $("iframe[viewhd='" + id + "']")[0];

if (iframe) {
// Enviar mensaje para reproducir el video
iframe.contentWindow.postMessage("playVideo", "*");
}

no se reproduce el video
 
var iframe = $("iframe[viewhd='" + id + "']")[0];

if (iframe) {
// Enviar mensaje para reproducir el video
iframe.contentWindow.postMessage("playVideo", "*");
}

no se reproduce el video
Si el video no se reproduce, puede deberse a varias razones. Asegúrate de que el siguiente flujo esté bien implementado:

1. Verificar el servidor de origen: Asegúrate de que tanto la página principal como el iframe estén en el mismo origen (dominio). Si no están en el mismo origen, el método postMessage puede no funcionar correctamente debido a restricciones de seguridad.

2. Escuchar el mensaje en el iframe: Asegúrate de que el código dentro del iframe realmente esté escuchando el mensaje y que el selector esté correcto. Aquí tienes una estructura adecuada para el iframe:

Insertar CODE, HTML o PHP:
javascript
   // Código dentro del iframe
   window.addEventListener("message", function(event) {
       // Verifica el origen del mensaje si es necesario
       // if (event.origin !== "http://tu-dominio.com") return;
       if (event.data === "playVideo") {
           var video = document.querySelector("video"); // Asegúrate de seleccionar el video correcto
           if (video) {
               video.play().catch(function(error) {
                   console.error("Error al intentar reproducir el video:", error);
               });
           }
       }
   });

3. Verificar la referencia del iframe: Asegúrate de que el selector que usas para obtener el iframe sea correcto. Prueba con algo como:

Insertar CODE, HTML o PHP:
javascript
   var iframe = $(".frames[viewhd='" + id + "'] iframe")[0]; // Asegúrate de agregar esto si el iframe está anidado dentro de .frames

4. Comprobar la consola del navegador: Abre la consola de desarrollador (F12 en la mayoría de los navegadores) y verifica si hay errores que indiquen que algo salió mal al intentar reproducir el video.

5. Prueba a reproducir manualmente: Como prueba, intenta reproducir el video manualmente desde la consola del iframe:

Insertar CODE, HTML o PHP:
javascript
   var video = document.querySelector("video");
   if (video) {
       video.play();
   }

6. Configuración del video: Asegúrate de que el video no esté configurado para estar bloqueado por "autoplay" de acuerdo con las políticas del navegador.

Siguiendo estos pasos, deberías poder identificar el problema. Si sigues teniendo problemas, proporciona más detalles sobre el contenido del iframe y la estructura de tu código, y te ayudaré mejor.
 
Si el video no se reproduce, puede deberse a varias razones. Asegúrate de que el siguiente flujo esté bien implementado:

1. Verificar el servidor de origen: Asegúrate de que tanto la página principal como el iframe estén en el mismo origen (dominio). Si no están en el mismo origen, el método postMessage puede no funcionar correctamente debido a restricciones de seguridad.

2. Escuchar el mensaje en el iframe: Asegúrate de que el código dentro del iframe realmente esté escuchando el mensaje y que el selector esté correcto. Aquí tienes una estructura adecuada para el iframe:

Insertar CODE, HTML o PHP:
javascript
   // Código dentro del iframe
   window.addEventListener("message", function(event) {
       // Verifica el origen del mensaje si es necesario
       // if (event.origin !== "http://tu-dominio.com") return;
       if (event.data === "playVideo") {
           var video = document.querySelector("video"); // Asegúrate de seleccionar el video correcto
           if (video) {
               video.play().catch(function(error) {
                   console.error("Error al intentar reproducir el video:", error);
               });
           }
       }
   });

3. Verificar la referencia del iframe: Asegúrate de que el selector que usas para obtener el iframe sea correcto. Prueba con algo como:

Insertar CODE, HTML o PHP:
javascript
   var iframe = $(".frames[viewhd='" + id + "'] iframe")[0]; // Asegúrate de agregar esto si el iframe está anidado dentro de .frames

4. Comprobar la consola del navegador: Abre la consola de desarrollador (F12 en la mayoría de los navegadores) y verifica si hay errores que indiquen que algo salió mal al intentar reproducir el video.

5. Prueba a reproducir manualmente: Como prueba, intenta reproducir el video manualmente desde la consola del iframe:

Insertar CODE, HTML o PHP:
javascript
   var video = document.querySelector("video");
   if (video) {
       video.play();
   }

6. Configuración del video: Asegúrate de que el video no esté configurado para estar bloqueado por "autoplay" de acuerdo con las políticas del navegador.

Siguiendo estos pasos, deberías poder identificar el problema. Si sigues teniendo problemas, proporciona más detalles sobre el contenido del iframe y la estructura de tu código, y te ayudaré mejor.
const iframes = document.querySelectorAll(".octumpro[viewhd='"+id+"']");
iframes.forEach(iframe => {
const iframeWindow = iframe.contentWindow;
const video = iframeWindow.document.getElementsByClassName('vidplay')[0];
if(video && !video.paused){
video.play();
}
});

como hago que funcione?
 
const iframes = document.querySelectorAll(".octumpro[viewhd='"+id+"']");
iframes.forEach(iframe => {
const iframeWindow = iframe.contentWindow;
const video = iframeWindow.document.getElementsByClassName('vidplay')[0];
if(video && !video.paused){
video.play();
}
});

como hago que funcione?
Para que funcione correctamente el código que has proporcionado, debes asegurarte de que el contexto (o el contenido) que estás tratando de acceder desde el iframe esté disponible y que las propiedades del video se pueden manipular. Aquí hay algunos puntos a considerar y un código ajustado que podrías usar:

1. Asegúrate de que el iframe esté completamente cargado: Al intentar acceder al contenido dentro del iframe, es importante asegurarse de que el documento esté completamente cargado.

2. Verifica el origen: El script en el iframe debe estar en el mismo dominio que la página principal. Si no es así, no tendrás acceso para modificar el contenido del iframe.

3. Corrección de la lógica: Asegúrate de que la lógica para obtener y reproducir el video sea correcta.

Aquí tienes un ejemplo corregido del código:

JavaScript:
const iframes = document.querySelectorAll(".octumpro[viewhd='" + id + "']");
iframes.forEach(iframe => {
    // Asegúrate de que el iframe esté cargado antes de intentar acceder al contenido
    iframe.onload = function() {
        const iframeWindow = iframe.contentWindow;
        const video = iframeWindow.document.getElementsByClassName('vidplay')[0];
        
        // Asegúrate de verificar también si el video existe y está pausado
        if (video) {
            video.play().catch(function(error) {
                console.error("Error al intentar reproducir el video:", error);
            });
        }
    };
});

### Explicación del Código:

- iframe.onload: Este evento asegura que el código dentro de la función se ejecute solo después de que el iframe haya cargado completamente, lo que permite que el DOM del iframe esté completamente disponible.

- video.play().catch(...): Este manejo de errores asegura que si la llamada a play() falla (por razones como políticas de autoplay del navegador), se registrará un error en la consola, lo que te puede ayudar a diagnosticar problemas.

Asegúrate de que dentro del iframe el video tenga la clase vidplay y que no esté bloqueado por restricciones de autoplay (puede ser necesario que la interacción del usuario preceda a la reproducción en algunos navegadores). ¡Espero que esto te ayude! Si tienes más preguntas, no dudes en preguntar.
 
Para que funcione correctamente el código que has proporcionado, debes asegurarte de que el contexto (o el contenido) que estás tratando de acceder desde el iframe esté disponible y que las propiedades del video se pueden manipular. Aquí hay algunos puntos a considerar y un código ajustado que podrías usar:

1. Asegúrate de que el iframe esté completamente cargado: Al intentar acceder al contenido dentro del iframe, es importante asegurarse de que el documento esté completamente cargado.

2. Verifica el origen: El script en el iframe debe estar en el mismo dominio que la página principal. Si no es así, no tendrás acceso para modificar el contenido del iframe.

3. Corrección de la lógica: Asegúrate de que la lógica para obtener y reproducir el video sea correcta.

Aquí tienes un ejemplo corregido del código:

JavaScript:
const iframes = document.querySelectorAll(".octumpro[viewhd='" + id + "']");
iframes.forEach(iframe => {
    // Asegúrate de que el iframe esté cargado antes de intentar acceder al contenido
    iframe.onload = function() {
        const iframeWindow = iframe.contentWindow;
        const video = iframeWindow.document.getElementsByClassName('vidplay')[0];
       
        // Asegúrate de verificar también si el video existe y está pausado
        if (video) {
            video.play().catch(function(error) {
                console.error("Error al intentar reproducir el video:", error);
            });
        }
    };
});

### Explicación del Código:

- iframe.onload: Este evento asegura que el código dentro de la función se ejecute solo después de que el iframe haya cargado completamente, lo que permite que el DOM del iframe esté completamente disponible.

- video.play().catch(...): Este manejo de errores asegura que si la llamada a play() falla (por razones como políticas de autoplay del navegador), se registrará un error en la consola, lo que te puede ayudar a diagnosticar problemas.

Asegúrate de que dentro del iframe el video tenga la clase vidplay y que no esté bloqueado por restricciones de autoplay (puede ser necesario que la interacción del usuario preceda a la reproducción en algunos navegadores). ¡Espero que esto te ayude! Si tienes más preguntas, no dudes en preguntar.
const iframestwo = document.querySelectorAll(".octumpro[viewhd='" + id + "']");
iframestwo.forEach(iframetwo => {
// Asegúrate de que el iframe esté cargado antes de intentar acceder al contenido
iframetwo.onload = function() {
const iframeWindow = iframetwo.contentWindow;
const video = iframeWindow.document.getElementsByClassName('vidplay')[0];

// Asegúrate de verificar también si el video existe y está pausado
if (video) {
video.play().catch(function(error) {
console.error("Error al intentar reproducir el video:", error);
});
}
};
});

no funciona, no da play
 
const iframestwo = document.querySelectorAll(".octumpro[viewhd='" + id + "']");
iframestwo.forEach(iframetwo => {
// Asegúrate de que el iframe esté cargado antes de intentar acceder al contenido
iframetwo.onload = function() {
const iframeWindow = iframetwo.contentWindow;
const video = iframeWindow.document.getElementsByClassName('vidplay')[0];

// Asegúrate de verificar también si el video existe y está pausado
if (video) {
video.play().catch(function(error) {
console.error("Error al intentar reproducir el video:", error);
});
}
};
});

no funciona, no da play
Si tu código no está funcionando para reproducir el video dentro del iframe, aquí hay algunas verificaciones y pasos que podrías seguir para solucionar el problema:

1. Verifica el Cargado del Iframe: Es crucial asegurarse de que el evento onload se esté asignando correctamente. Actualmente, estás intentando asignar onload después de la selección del iframe, pero mejor sería verificar si el iframe ya se ha cargado. Puedes evitar problemas con el uso de setTimeout si lo necesitas:

Insertar CODE, HTML o PHP:
javascript
   const iframestwo = document.querySelectorAll(".octumpro[viewhd='" + id + "']");
   iframestwo.forEach(iframetwo => {
       iframetwo.onload = function() {
           const iframeWindow = iframetwo.contentWindow;
           const video = iframeWindow.document.getElementsByClassName('vidplay')[0];
           
           if (video) {
               video.play().catch(function(error) {
                   console.error("Error al intentar reproducir el video:", error);
               });
           }
       };
       // Si el iframe ya está cargado, ejecuta la función manualmente
       if (iframetwo.contentWindow) {
           iframetwo.onload();
       }
   });

2. Revisa las Políticas del Navegador: Algunos navegadores requieren que los videos sean reproducidos como resultado de una interacción del usuario. Asegúrate de que la acción que desencadena la reproducción (por ejemplo, un clic) sea reconocida por el navegador. Podrías probar a poner video.play() dentro de la función de un evento de clic.

3. Verifica la Clase del Video: Confirmar que el elemento de video dentro del iframe tenga efectivamente la clase vidplay. Puedes hacer esto a través de la consola del navegador:

Insertar CODE, HTML o PHP:
javascript
   // Para verificar si el video está siendo seleccionado correctamente
   console.log(video);

4. Asegúrate de Que No Haya Errores en la Consola: Abre la consola de desarrollador para ver si hay errores que indiquen por qué no se puede reproducir el video. Errores comunes incluirían restricciones de autoplay o problemas de permisos.

5. Prueba Manualmente la Reproducción: Desde la consola de desarrollo de tu navegador, intenta acceder al video manualmente para ver si hay algún problema en el iframe:

Insertar CODE, HTML o PHP:
javascript
   const iframe = document.querySelector(".octumpro[viewhd='" + id + "']");
   const video = iframe.contentWindow.document.getElementsByClassName('vidplay')[0];
   video.play();

6. Verifica el Contexto o el Origen: Si el contenido del iframe proviene de un dominio diferente, no podrás acceder a sus elementos debido a las restricciones de CORS.

7. Configuración del Video: Asegúrate de que el video no tenga restricciones de autoplay configuradas.

Si, después de estas verificaciones, aún no funciona, por favor proporciona detalles adicionales sobre el contexto del iframe y el video, para que pueda ayudarte mejor.
 
Si tu código no está funcionando para reproducir el video dentro del iframe, aquí hay algunas verificaciones y pasos que podrías seguir para solucionar el problema:

1. Verifica el Cargado del Iframe: Es crucial asegurarse de que el evento onload se esté asignando correctamente. Actualmente, estás intentando asignar onload después de la selección del iframe, pero mejor sería verificar si el iframe ya se ha cargado. Puedes evitar problemas con el uso de setTimeout si lo necesitas:

Insertar CODE, HTML o PHP:
javascript
   const iframestwo = document.querySelectorAll(".octumpro[viewhd='" + id + "']");
   iframestwo.forEach(iframetwo => {
       iframetwo.onload = function() {
           const iframeWindow = iframetwo.contentWindow;
           const video = iframeWindow.document.getElementsByClassName('vidplay')[0];
          
           if (video) {
               video.play().catch(function(error) {
                   console.error("Error al intentar reproducir el video:", error);
               });
           }
       };
       // Si el iframe ya está cargado, ejecuta la función manualmente
       if (iframetwo.contentWindow) {
           iframetwo.onload();
       }
   });

2. Revisa las Políticas del Navegador: Algunos navegadores requieren que los videos sean reproducidos como resultado de una interacción del usuario. Asegúrate de que la acción que desencadena la reproducción (por ejemplo, un clic) sea reconocida por el navegador. Podrías probar a poner video.play() dentro de la función de un evento de clic.

3. Verifica la Clase del Video: Confirmar que el elemento de video dentro del iframe tenga efectivamente la clase vidplay. Puedes hacer esto a través de la consola del navegador:

Insertar CODE, HTML o PHP:
javascript
   // Para verificar si el video está siendo seleccionado correctamente
   console.log(video);

4. Asegúrate de Que No Haya Errores en la Consola: Abre la consola de desarrollador para ver si hay errores que indiquen por qué no se puede reproducir el video. Errores comunes incluirían restricciones de autoplay o problemas de permisos.

5. Prueba Manualmente la Reproducción: Desde la consola de desarrollo de tu navegador, intenta acceder al video manualmente para ver si hay algún problema en el iframe:

Insertar CODE, HTML o PHP:
javascript
   const iframe = document.querySelector(".octumpro[viewhd='" + id + "']");
   const video = iframe.contentWindow.document.getElementsByClassName('vidplay')[0];
   video.play();

6. Verifica el Contexto o el Origen: Si el contenido del iframe proviene de un dominio diferente, no podrás acceder a sus elementos debido a las restricciones de CORS.

7. Configuración del Video: Asegúrate de que el video no tenga restricciones de autoplay configuradas.

Si, después de estas verificaciones, aún no funciona, por favor proporciona detalles adicionales sobre el contexto del iframe y el video, para que pueda ayudarte mejor.
$surym = mysqli_query($conexion, "SELECT *, (CASE WHEN photo != '' THEN 1 ELSE 0 END + photo2 != '' THEN 1 ELSE 0 END + photo3 != '' THEN 1 ELSE 0 END + photo4 != '' THEN 1 ELSE 0 END + photo5 != '' THEN 1 ELSE 0 END + CASE WHEN photo6 != '' THEN 1 ELSE 0 END + CASE WHEN photo7 != '' THEN 1 ELSE 0 END + CASE WHEN photo8 != '' THEN 1 ELSE 0 END + CASE WHEN photo9 != '' THEN 1 ELSE 0 END + CASE WHEN photo10 != '' THEN 1 ELSE 0 END + CASE WHEN photo11 != '' THEN 1 ELSE 0 END + CASE WHEN photo12 != '' THEN 1 ELSE 0 END + CASE WHEN photo13 != '' THEN 1 ELSE 0 END + CASE WHEN photo14 != '' THEN 1 ELSE 0 END + CASE WHEN photo15 != '' THEN 1 ELSE 0 END + CASE WHEN photo16 != '' THEN 1 ELSE 0 END + CASE WHEN photo17 != '' THEN 1 ELSE 0 END + CASE WHEN photo18 != '' THEN 1 ELSE 0 END + CASE WHEN photo19 != '' THEN 1 ELSE 0 END + CASE WHEN photo20 != '' THEN 1 ELSE 0 END) AS photo_count 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");

while($row = mysqli_fetch_assoc($surym)){

}
tengo agun error aqui?
 
$surym = mysqli_query($conexion, "SELECT *, (CASE WHEN photo != '' THEN 1 ELSE 0 END + photo2 != '' THEN 1 ELSE 0 END + photo3 != '' THEN 1 ELSE 0 END + photo4 != '' THEN 1 ELSE 0 END + photo5 != '' THEN 1 ELSE 0 END + CASE WHEN photo6 != '' THEN 1 ELSE 0 END + CASE WHEN photo7 != '' THEN 1 ELSE 0 END + CASE WHEN photo8 != '' THEN 1 ELSE 0 END + CASE WHEN photo9 != '' THEN 1 ELSE 0 END + CASE WHEN photo10 != '' THEN 1 ELSE 0 END + CASE WHEN photo11 != '' THEN 1 ELSE 0 END + CASE WHEN photo12 != '' THEN 1 ELSE 0 END + CASE WHEN photo13 != '' THEN 1 ELSE 0 END + CASE WHEN photo14 != '' THEN 1 ELSE 0 END + CASE WHEN photo15 != '' THEN 1 ELSE 0 END + CASE WHEN photo16 != '' THEN 1 ELSE 0 END + CASE WHEN photo17 != '' THEN 1 ELSE 0 END + CASE WHEN photo18 != '' THEN 1 ELSE 0 END + CASE WHEN photo19 != '' THEN 1 ELSE 0 END + CASE WHEN photo20 != '' THEN 1 ELSE 0 END) AS photo_count 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");

while($row = mysqli_fetch_assoc($surym)){

}
tengo agun error aqui?
Sí, hay un problema en tu consulta SQL que podría estar causando un error. El problema radica en la forma en que estás estructurando el CASE para contar las fotos. El uso de CASE debe estar correctamente anidado y cada expresión de comparación debe ser correcta.

Aquí tienes un ajuste en tu consulta:

PHP:
$surym = mysqli_query($conexion, "
    SELECT *, 
    (CASE WHEN photo != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo2 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo3 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo4 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo5 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo6 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo7 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo8 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo9 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo10 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo11 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo12 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo13 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo14 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo15 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo16 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo17 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo18 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo19 != '' THEN 1 ELSE 0 END + 
    CASE WHEN photo20 != '' THEN 1 ELSE 0 END) AS photo_count 
    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
");

while($row = mysqli_fetch_assoc($surym)){
    // Procesa los resultados aquí
}

### Cambios Realizados:
1. Corrección del uso de CASE: Asegúrate de que cada expresión CASE esté correctamente estructurada y separada.
2. Uso de LIKE: Solo lo usas correctamente para verificar si las columnas contienen .mp4.
3. Formato de la Consulta: Se ha organizado la consulta para facilitar la lectura.

Asegúrate de que tu conexión a la base de datos y otras partes del código estén correctamente configuradas. Esta consulta debería funcionar correctamente y contar el número de fotos que no están vacías y que contienen archivos .mp4. Si sigues teniendo problemas, verifica si hay errores adicionales en la conexión a la base de datos o en otros aspectos de tu código.
 
Sí, hay un problema en tu consulta SQL que podría estar causando un error. El problema radica en la forma en que estás estructurando el CASE para contar las fotos. El uso de CASE debe estar correctamente anidado y cada expresión de comparación debe ser correcta.

Aquí tienes un ajuste en tu consulta:

PHP:
$surym = mysqli_query($conexion, "
    SELECT *,
    (CASE WHEN photo != '' THEN 1 ELSE 0 END +
    CASE WHEN photo2 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo3 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo4 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo5 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo6 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo7 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo8 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo9 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo10 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo11 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo12 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo13 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo14 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo15 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo16 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo17 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo18 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo19 != '' THEN 1 ELSE 0 END +
    CASE WHEN photo20 != '' THEN 1 ELSE 0 END) AS photo_count
    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
");

while($row = mysqli_fetch_assoc($surym)){
    // Procesa los resultados aquí
}

### Cambios Realizados:
1. Corrección del uso de CASE: Asegúrate de que cada expresión CASE esté correctamente estructurada y separada.
2. Uso de LIKE: Solo lo usas correctamente para verificar si las columnas contienen .mp4.
3. Formato de la Consulta: Se ha organizado la consulta para facilitar la lectura.

Asegúrate de que tu conexión a la base de datos y otras partes del código estén correctamente configuradas. Esta consulta debería funcionar correctamente y contar el número de fotos que no están vacías y que contienen archivos .mp4. Si sigues teniendo problemas, verifica si hay errores adicionales en la conexión a la base de datos o en otros aspectos de tu código.
$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
");

while($row = mysqli_fetch_assoc($surym)){
// un echo con una photo rand y en que photo se encontro
haz el echo porfa
}
 
$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
");

while($row = mysqli_fetch_assoc($surym)){
// un echo con una photo rand y en que photo se encontro
haz el echo porfa
}
Para realizar el echo que solicitas, primero necesitas asegurarte de que has seleccionado las columnas que deseas obtener de la base de datos. En tu consulta, te falta especificar qué columnas quieres en el SELECT. Si deseas todas las columnas, puedes usar el asterisco *. Aquí tienes un ejemplo corregido del código con el echo incluido:

PHP:
$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
");

while($row = mysqli_fetch_assoc($surym)){
    // Recorre las columnas photo1 a photo20 e imprime la que contiene el mp4
    for ($i = 1; $i <= 20; $i++) {
        $photoKey = 'photo' . ($i == 1 ? '' : $i);
        if (!empty($row[$photoKey]) && strpos($row[$photoKey], '.mp4') !== false) {
            echo "Se encontró un video en: " . $row[$photoKey] . " (columna: $photoKey)<br>";
            break; // Sale del bucle una vez que ha encontrado el primer video
        }
    }
}

### Explicación:
1. Consulta SQL: Se ha corregido el SELECT para incluir SELECT *.
2. Bucle for: Itera desde 1 hasta 20 para verificar si cada columna photo está vacía y contiene un archivo .mp4.
3. Condición de not empty y strpos: Comprueba si la columna no está vacía y si contiene la cadena .mp4.
4. echo: Muestra la URL del video y de qué columna se encontró.

Esto debería funcionar correctamente para imprimir el primer video que coincida con la búsqueda. Asegúrate de que las columnas en la base de datos coincidan con lo que estás buscando. Si necesitas presentar información adicional o específica, no dudes en decírmelo.
 
Para realizar el echo que solicitas, primero necesitas asegurarte de que has seleccionado las columnas que deseas obtener de la base de datos. En tu consulta, te falta especificar qué columnas quieres en el SELECT. Si deseas todas las columnas, puedes usar el asterisco *. Aquí tienes un ejemplo corregido del código con el echo incluido:

PHP:
$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
");

while($row = mysqli_fetch_assoc($surym)){
    // Recorre las columnas photo1 a photo20 e imprime la que contiene el mp4
    for ($i = 1; $i <= 20; $i++) {
        $photoKey = 'photo' . ($i == 1 ? '' : $i);
        if (!empty($row[$photoKey]) && strpos($row[$photoKey], '.mp4') !== false) {
            echo "Se encontró un video en: " . $row[$photoKey] . " (columna: $photoKey)<br>";
            break; // Sale del bucle una vez que ha encontrado el primer video
        }
    }
}

### Explicación:
1. Consulta SQL: Se ha corregido el SELECT para incluir SELECT *.
2. Bucle for: Itera desde 1 hasta 20 para verificar si cada columna photo está vacía y contiene un archivo .mp4.
3. Condición de not empty y strpos: Comprueba si la columna no está vacía y si contiene la cadena .mp4.
4. echo: Muestra la URL del video y de qué columna se encontró.

Esto debería funcionar correctamente para imprimir el primer video que coincida con la búsqueda. Asegúrate de que las columnas en la base de datos coincidan con lo que estás buscando. Si necesitas presentar información adicional o específica, no dudes en decírmelo.
$surym = mysqli_query($conexion, "
SELECT *
FROM posters
WHERE id='624' and (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
");

while($row = mysqli_fetch_assoc($surym)){
// Recorre las columnas photo1 a photo20 e imprime la que contiene el mp4
for ($i = 1; $i <= 20; $i++) {
$photoKey = 'photo' . ($i == 1 ? '' : $i);
if (!empty($row[$photoKey]) && strpos($row[$photoKey], '.mp4') !== false) {
echo "Se encontró un video en: " . $row[$photoKey] . " (columna: $photoKey)<br>";
break; // Sale del bucle una vez que ha encontrado el primer video
}
}
}

porque solo me encuentra el photo? y no photo2 ni photo3 ni ninguno
 
$surym = mysqli_query($conexion, "
SELECT *
FROM posters
WHERE id='624' and (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
");

while($row = mysqli_fetch_assoc($surym)){
// Recorre las columnas photo1 a photo20 e imprime la que contiene el mp4
for ($i = 1; $i <= 20; $i++) {
$photoKey = 'photo' . ($i == 1 ? '' : $i);
if (!empty($row[$photoKey]) && strpos($row[$photoKey], '.mp4') !== false) {
echo "Se encontró un video en: " . $row[$photoKey] . " (columna: $photoKey)<br>";
break; // Sale del bucle una vez que ha encontrado el primer video
}
}
}

porque solo me encuentra el photo? y no photo2 ni photo3 ni ninguno
Si solo se encuentra el primer video en la columna photo y no en las demás columnas (photo2, photo3, ..., photo20), podría haber varias razones por las cuales esto sucede. Aquí hay algunas verificaciones y ajustes que puedes hacer:

### Posibles causas y soluciones:

1. Contenido en las columnas: Asegúrate de que realmente hay contenido en las columnas photo2, photo3, etc. Puedes verificar esto haciendo un simple echo de los valores de esas columnas antes de la lógica del bucle, así:

Insertar CODE, HTML o PHP:
php
   while($row = mysqli_fetch_assoc($surym)){
       for ($i = 1; $i <= 20; $i++) {
           $photoKey = 'photo' . ($i == 1 ? '' : $i);
           echo "$photoKey: " . $row[$photoKey] . "<br>"; // Imprime el contenido de cada columna
       }
   }

2. Formato de los datos: Verifica que las entradas en tu base de datos realmente contengan URLs de videos que terminen en .mp4 y que estás utilizando el formato correcto. Por ejemplo, podría estar almacenado como una URL, algo como http://example.com/video.mp4. Asegúrate de que .mp4 sea parte de la cadena.

3. Condición de empty: El uso de empty() está bien, pero asegúrate de que no esté confundido con una cadena vacía o un valor nulo. Verifica que las columnas no contengan valores nulos o en blanco.

4. Ejemplo de consulta alternativa: Para asegurarte de que todos los campos se verifiquen y se imprima la correspondiente, podrías modificar el bucle de la siguiente manera:

Insertar CODE, HTML o PHP:
php
   while($row = mysqli_fetch_assoc($surym)){
       $foundVideo = false; // Variable para controlar si se encontró un video
       for ($i = 1; $i <= 20; $i++) {
           $photoKey = 'photo' . ($i == 1 ? '' : $i);
           if (!empty($row[$photoKey]) && strpos($row[$photoKey], '.mp4') !== false) {
               echo "Se encontró un video en: " . $row[$photoKey] . " (columna: $photoKey)<br>";
               $foundVideo = true; // Marca que se encontró un video
               break; // Sale del bucle una vez que ha encontrado el primer video
           }
       }
       if (!$foundVideo) {
           echo "No se encontró video en las columnas de este registro.<br>";
       }
   }

5. Realiza una consulta de prueba: Puedes hacer una consulta sencilla que solo recupere las columnas photo, photo2, ..., photo20 para asegurarte de que contienen datos:

Insertar CODE, HTML o PHP:
php
   $test_query = mysqli_query($conexion, "
       SELECT photo, photo2, photo3, photo4, photo5, photo6, photo7, photo8, photo9,
              photo10, photo11, photo12, photo13, photo14, photo15, photo16,
              photo17, photo18, photo19, photo20
       FROM posters 
       WHERE id='624'
   ");

   while ($test_row = mysqli_fetch_assoc($test_query)) {
       // Verifica los valores
       foreach ($test_row as $key => $value) {
           echo "$key: $value<br>";
       }
   }

### Resumen
Asegúrate de verificar el contenido real de las columnas en la base de datos y el formato de las URL. Mediante la adición de estos pasos de depuración, puedes identificar si las columnas contienen los datos esperados y si las condiciones se están evaluando correctamente. Si después de estas verificaciones aún no encuentras videos en las columnas restantes, proporciona más detalles sobre los datos almacenados para recibir más ayuda.
 
Si solo se encuentra el primer video en la columna photo y no en las demás columnas (photo2, photo3, ..., photo20), podría haber varias razones por las cuales esto sucede. Aquí hay algunas verificaciones y ajustes que puedes hacer:

### Posibles causas y soluciones:

1. Contenido en las columnas: Asegúrate de que realmente hay contenido en las columnas photo2, photo3, etc. Puedes verificar esto haciendo un simple echo de los valores de esas columnas antes de la lógica del bucle, así:

Insertar CODE, HTML o PHP:
php
   while($row = mysqli_fetch_assoc($surym)){
       for ($i = 1; $i <= 20; $i++) {
           $photoKey = 'photo' . ($i == 1 ? '' : $i);
           echo "$photoKey: " . $row[$photoKey] . "<br>"; // Imprime el contenido de cada columna
       }
   }

2. Formato de los datos: Verifica que las entradas en tu base de datos realmente contengan URLs de videos que terminen en .mp4 y que estás utilizando el formato correcto. Por ejemplo, podría estar almacenado como una URL, algo como http://example.com/video.mp4. Asegúrate de que .mp4 sea parte de la cadena.

3. Condición de empty: El uso de empty() está bien, pero asegúrate de que no esté confundido con una cadena vacía o un valor nulo. Verifica que las columnas no contengan valores nulos o en blanco.

4. Ejemplo de consulta alternativa: Para asegurarte de que todos los campos se verifiquen y se imprima la correspondiente, podrías modificar el bucle de la siguiente manera:

Insertar CODE, HTML o PHP:
php
   while($row = mysqli_fetch_assoc($surym)){
       $foundVideo = false; // Variable para controlar si se encontró un video
       for ($i = 1; $i <= 20; $i++) {
           $photoKey = 'photo' . ($i == 1 ? '' : $i);
           if (!empty($row[$photoKey]) && strpos($row[$photoKey], '.mp4') !== false) {
               echo "Se encontró un video en: " . $row[$photoKey] . " (columna: $photoKey)<br>";
               $foundVideo = true; // Marca que se encontró un video
               break; // Sale del bucle una vez que ha encontrado el primer video
           }
       }
       if (!$foundVideo) {
           echo "No se encontró video en las columnas de este registro.<br>";
       }
   }

5. Realiza una consulta de prueba: Puedes hacer una consulta sencilla que solo recupere las columnas photo, photo2, ..., photo20 para asegurarte de que contienen datos:

Insertar CODE, HTML o PHP:
php
   $test_query = mysqli_query($conexion, "
       SELECT photo, photo2, photo3, photo4, photo5, photo6, photo7, photo8, photo9,
              photo10, photo11, photo12, photo13, photo14, photo15, photo16,
              photo17, photo18, photo19, photo20
       FROM posters
       WHERE id='624'
   ");

   while ($test_row = mysqli_fetch_assoc($test_query)) {
       // Verifica los valores
       foreach ($test_row as $key => $value) {
           echo "$key: $value<br>";
       }
   }

### Resumen
Asegúrate de verificar el contenido real de las columnas en la base de datos y el formato de las URL. Mediante la adición de estos pasos de depuración, puedes identificar si las columnas contienen los datos esperados y si las condiciones se están evaluando correctamente. Si después de estas verificaciones aún no encuentras videos en las columnas restantes, proporciona más detalles sobre los datos almacenados para recibir más ayuda.
while($row = mysqli_fetch_assoc($surym)){
$foundVideo = false; // Variable para controlar si se encontró un video
for ($i = 1; $i <= 20; $i++) {
$photoKey = 'photo' . ($i == 1 ? '' : $i);
if (!empty($row[$photoKey]) && strpos($row[$photoKey], '.mp4') !== false) {
echo "Se encontró un video en: " . $row[$photoKey] . " (columna: photo3)<br>";
$foundVideo = true; // Marca que se encontró un video
break; // Sale del bucle una vez que ha encontrado el primer video
}
}
if (!$foundVideo) {
echo "No se encontró video en las columnas de este registro.<br>";
}
}

como hago que se encuentre un video y un photo aleatorio?
 
while($row = mysqli_fetch_assoc($surym)){
$foundVideo = false; // Variable para controlar si se encontró un video
for ($i = 1; $i <= 20; $i++) {
$photoKey = 'photo' . ($i == 1 ? '' : $i);
if (!empty($row[$photoKey]) && strpos($row[$photoKey], '.mp4') !== false) {
echo "Se encontró un video en: " . $row[$photoKey] . " (columna: photo3)<br>";
$foundVideo = true; // Marca que se encontró un video
break; // Sale del bucle una vez que ha encontrado el primer video
}
}
if (!$foundVideo) {
echo "No se encontró video en las columnas de este registro.<br>";
}
}

como hago que se encuentre un video y un photo aleatorio?
Para que tu código encuentre un video y un archivo de imagen (photo) de manera aleatoria en las columnas especificadas (photo1, photo2, ..., photo20), puedes modificar tu lógica para acumular tanto los videos como las imágenes en arreglos, y luego seleccionar uno aleatoriamente. Aquí tienes un ejemplo de cómo podrías hacerlo:

PHP:
while($row = mysqli_fetch_assoc($surym)){
    $videos = []; // Arreglo para almacenar URLs de videos
    $photos = []; // Arreglo para almacenar URLs de fotos

    for ($i = 1; $i <= 20; $i++) {
        $photoKey = 'photo' . ($i == 1 ? '' : $i);
        
        // Comprobar si hay un video
        if (!empty($row[$photoKey]) && strpos($row[$photoKey], '.mp4') !== false) {
            $videos[] = $row[$photoKey]; // Agregar video al arreglo
        }
        
        // Comprobar si hay una imagen
        if (!empty($row[$photoKey]) && (strpos($row[$photoKey], '.jpg') !== false || strpos($row[$photoKey], '.png') !== false)) {
            $photos[] = $row[$photoKey]; // Agregar foto al arreglo
        }
    }
    
    // Seleccionar un video aleatorio si hay videos disponibles
    if (!empty($videos)) {
        $randomVideo = $videos[array_rand($videos)];
        echo "Se encontró un video aleatorio en: " . $randomVideo . "<br>";
    } else {
        echo "No se encontró video en las columnas de este registro.<br>";
    }

    // Seleccionar una foto aleatoria si hay fotos disponibles
    if (!empty($photos)) {
        $randomPhoto = $photos[array_rand($photos)];
        echo "Se encontró una foto aleatoria en: " . $randomPhoto . "<br>";
    } else {
        echo "No se encontró foto en las columnas de este registro.<br>";
    }
}

### Explicación:
1. Arreglos para almacenar videos y fotos: Creamos dos arreglos, uno para los videos y otro para las imágenes.

2. Bucle para comprobar cada columna: Recorremos las columnas de photo1 a photo20. Si se encuentra un video (por el sufijo .mp4), se almacena en el arreglo de videos. Si se encuentra una imagen (por los sufijos .jpg o .png), se almacena en el arreglo de fotos.

3. Selección aleatoria: Después de recorrer las columnas:
- Verificamos si el arreglo de videos no está vacío y seleccionamos un video aleatorio.
- Hacemos lo mismo con el arreglo de fotos para seleccionar una imagen aleatoria.

4. Manejo de casos vacíos: Se muestra un mensaje adecuado si no se encontraron videos o fotos.

Con este enfoque, puedes lograr que se encuentre un video y una foto de manera aleatoria desde las columnas de tu base de datos. Si necesitas agregar más formatos de imagen o ajustar algo, ¡házmelo saber!
 
Para que tu código encuentre un video y un archivo de imagen (photo) de manera aleatoria en las columnas especificadas (photo1, photo2, ..., photo20), puedes modificar tu lógica para acumular tanto los videos como las imágenes en arreglos, y luego seleccionar uno aleatoriamente. Aquí tienes un ejemplo de cómo podrías hacerlo:

PHP:
while($row = mysqli_fetch_assoc($surym)){
    $videos = []; // Arreglo para almacenar URLs de videos
    $photos = []; // Arreglo para almacenar URLs de fotos

    for ($i = 1; $i <= 20; $i++) {
        $photoKey = 'photo' . ($i == 1 ? '' : $i);
       
        // Comprobar si hay un video
        if (!empty($row[$photoKey]) && strpos($row[$photoKey], '.mp4') !== false) {
            $videos[] = $row[$photoKey]; // Agregar video al arreglo
        }
       
        // Comprobar si hay una imagen
        if (!empty($row[$photoKey]) && (strpos($row[$photoKey], '.jpg') !== false || strpos($row[$photoKey], '.png') !== false)) {
            $photos[] = $row[$photoKey]; // Agregar foto al arreglo
        }
    }
   
    // Seleccionar un video aleatorio si hay videos disponibles
    if (!empty($videos)) {
        $randomVideo = $videos[array_rand($videos)];
        echo "Se encontró un video aleatorio en: " . $randomVideo . "<br>";
    } else {
        echo "No se encontró video en las columnas de este registro.<br>";
    }

    // Seleccionar una foto aleatoria si hay fotos disponibles
    if (!empty($photos)) {
        $randomPhoto = $photos[array_rand($photos)];
        echo "Se encontró una foto aleatoria en: " . $randomPhoto . "<br>";
    } else {
        echo "No se encontró foto en las columnas de este registro.<br>";
    }
}

### Explicación:
1. Arreglos para almacenar videos y fotos: Creamos dos arreglos, uno para los videos y otro para las imágenes.

2. Bucle para comprobar cada columna: Recorremos las columnas de photo1 a photo20. Si se encuentra un video (por el sufijo .mp4), se almacena en el arreglo de videos. Si se encuentra una imagen (por los sufijos .jpg o .png), se almacena en el arreglo de fotos.

3. Selección aleatoria: Después de recorrer las columnas:
- Verificamos si el arreglo de videos no está vacío y seleccionamos un video aleatorio.
- Hacemos lo mismo con el arreglo de fotos para seleccionar una imagen aleatoria.

4. Manejo de casos vacíos: Se muestra un mensaje adecuado si no se encontraron videos o fotos.

Con este enfoque, puedes lograr que se encuentre un video y una foto de manera aleatoria desde las columnas de tu base de datos. Si necesitas agregar más formatos de imagen o ajustar algo, ¡házmelo saber!
$surym = mysqli_query($conexion, "
SELECT *
FROM posters
WHERE id='624' and (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
");

while($row = mysqli_fetch_assoc($surym)){
echo 'photo3 encontrada en modo aleatorio';
}

no me encuentra una foto en aleatorio
 
$surym = mysqli_query($conexion, "
SELECT *
FROM posters
WHERE id='624' and (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
");

while($row = mysqli_fetch_assoc($surym)){
echo 'photo3 encontrada en modo aleatorio';
}

no me encuentra una foto en aleatorio
Si tu consulta no está encontrando una foto de manera aleatoria, podría deberse a varios factores en tu base de datos o la consulta que estás ejecutando. Aquí te dejo algunos consejos y correcciones para asegurarte de que estás obteniendo el resultado esperado:

1. Verifica la existencia de datos: Asegúrate de que efectivamente hay registros en la tabla posters que cumplan con la condición especificada (es decir, que el id sea '624' y al menos una de las columnas photo, photo2, ..., photo20 contenga un archivo que termine en .mp4).

2. Consulta mejorada: Para asegurarte de que puedes obtener cualquier contenido de video o imagen, puedes simplificar tu consulta y dejar que la condición de selección sea más flexible. Aquí tienes un ejemplo de cómo podrías hacerlo:

PHP:
$surym = mysqli_query($conexion, "
    SELECT *
    FROM posters 
    WHERE id='624' 
    LIMIT 1
");

if ($row = mysqli_fetch_assoc($surym)) {
    // Recorre las columnas de photo1 a photo20
    for ($i = 1; $i <= 20; $i++) {
        $photoKey = 'photo' . ($i == 1 ? '' : $i); // Construye el nombre de la columna
        if (!empty($row[$photoKey])) { // Verifica si la columna no está vacía
            echo "$photoKey encontrada en modo aleatorio: " . $row[$photoKey] . "<br>";
        }
    }
} else {
    echo "No se encontró ningún registro con el id 624.<br>";
}

### Explicación:
1. Ejecución de la Consulta: La consulta se simplifica a buscar solo por el id = '624', eliminando el filtro de tipo de archivos en la parte WHERE.

2. Verificación de datos: Dentro del bucle for, verificas si cada columna de photo contiene data y, si es así, la imprimes.

3. Mensajes claros: Se proporciona un mensaje claro si no se encuentra ningún registro.

### Nota:
Si realmente quieres asegurarte de seleccionar imágenes y videos aleatoriamente y además conservar la funcionalidad de aleatoriedad, puedes ejecutar una consulta que devuelva todos los registros primero, y luego elegir uno al azar en PHP.

PHP:
$result = mysqli_query($conexion, "
    SELECT *
    FROM posters 
    WHERE (photo LIKE '%.mp4%' OR photo2 LIKE '%.mp4%' ...)
    ORDER BY RAND()
");

if ($row = mysqli_fetch_assoc($result)) {
    // Imprimir el resultado como antes
}

Por favor, prueba este nuevo enfoque y verifica también la base de datos para asegurarte de que los datos que deseas estén presentes. Si continúas teniendo problemas, podrías proporcionar más información sobre la estructura de tu base de datos o el contenido esperado.
 
Si tu consulta no está encontrando una foto de manera aleatoria, podría deberse a varios factores en tu base de datos o la consulta que estás ejecutando. Aquí te dejo algunos consejos y correcciones para asegurarte de que estás obteniendo el resultado esperado:

1. Verifica la existencia de datos: Asegúrate de que efectivamente hay registros en la tabla posters que cumplan con la condición especificada (es decir, que el id sea '624' y al menos una de las columnas photo, photo2, ..., photo20 contenga un archivo que termine en .mp4).

2. Consulta mejorada: Para asegurarte de que puedes obtener cualquier contenido de video o imagen, puedes simplificar tu consulta y dejar que la condición de selección sea más flexible. Aquí tienes un ejemplo de cómo podrías hacerlo:

PHP:
$surym = mysqli_query($conexion, "
    SELECT *
    FROM posters
    WHERE id='624'
    LIMIT 1
");

if ($row = mysqli_fetch_assoc($surym)) {
    // Recorre las columnas de photo1 a photo20
    for ($i = 1; $i <= 20; $i++) {
        $photoKey = 'photo' . ($i == 1 ? '' : $i); // Construye el nombre de la columna
        if (!empty($row[$photoKey])) { // Verifica si la columna no está vacía
            echo "$photoKey encontrada en modo aleatorio: " . $row[$photoKey] . "<br>";
        }
    }
} else {
    echo "No se encontró ningún registro con el id 624.<br>";
}

### Explicación:
1. Ejecución de la Consulta: La consulta se simplifica a buscar solo por el id = '624', eliminando el filtro de tipo de archivos en la parte WHERE.

2. Verificación de datos: Dentro del bucle for, verificas si cada columna de photo contiene data y, si es así, la imprimes.

3. Mensajes claros: Se proporciona un mensaje claro si no se encuentra ningún registro.

### Nota:
Si realmente quieres asegurarte de seleccionar imágenes y videos aleatoriamente y además conservar la funcionalidad de aleatoriedad, puedes ejecutar una consulta que devuelva todos los registros primero, y luego elegir uno al azar en PHP.

PHP:
$result = mysqli_query($conexion, "
    SELECT *
    FROM posters
    WHERE (photo LIKE '%.mp4%' OR photo2 LIKE '%.mp4%' ...)
    ORDER BY RAND()
");

if ($row = mysqli_fetch_assoc($result)) {
    // Imprimir el resultado como antes
}

Por favor, prueba este nuevo enfoque y verifica también la base de datos para asegurarte de que los datos que deseas estén presentes. Si continúas teniendo problemas, podrías proporcionar más información sobre la estructura de tu base de datos o el contenido esperado.
pero como hago para que me de solo un echo que diga photo3 o photo8 u otro encontrado?
 
pero como hago para que me de solo un echo que diga photo3 o photo8 u otro encontrado?
Para que tu código muestre un solo echo indicando cuál columna (por ejemplo, photo3, photo8, etc.) fue encontrada y que contenga contenido, puedes hacer lo siguiente:

1. Recorre las columnas y si encuentras una que no esté vacía y contenga el sufijo .mp4 (o la condición que desees), guarda el nombre de esa columna.
2. Una vez encontrada la primera coincidencia, imprime el mensaje y termina el bucle.

Aquí tienes el código modificado para lograrlo:

PHP:
$surym = mysqli_query($conexion, "
    SELECT *
    FROM posters 
    WHERE id='624' 
    LIMIT 1
");

if ($row = mysqli_fetch_assoc($surym)) {
    $found = false; // Variable para controlar si se encontró alguna columna
    for ($i = 1; $i <= 20; $i++) {
        $photoKey = 'photo' . ($i == 1 ? '' : $i); // Construye el nombre de la columna
        if (!empty($row[$photoKey]) && strpos($row[$photoKey], '.mp4') !== false) {
            echo "Se encontró: $photoKey<br>"; // Imprime el nombre de la columna encontrada
            $found = true; // Marca que se encontró
            break; // Sale del bucle una vez que se encuentra
        }
    }
    
    if (!$found) { // Si no se encontró nada
        echo "No se encontró un video en las columnas.<br>";
    }
} else {
    echo "No se encontró ningún registro con el id 624.<br>";
}

### Explicación:
1. Inicialización de la Variable $found: Se inicia una variable para controlar si se encontró algún video.
2. Bucle for: Recorre las columnas de photo1 a photo20.
3. Condición de Verificación: Comprueba si la columna actual no está vacía y contiene .mp4. Si se cumple la condición, se imprime el nombre de la columna encontrada.
4. Rompe el Bucle: Usando break, detienes el bucle para que solo se imprima la primera coincidencia.
5. Mensaje de No Encontrado: Si no se encuentra ninguna coincidencia, se imprime un mensaje adecuado.

Con este enfoque, obtendrás una salida que indica exactamente qué columna fue encontrada en lugar de listar todas las columnas que tenían contenido.
 
Para que tu código muestre un solo echo indicando cuál columna (por ejemplo, photo3, photo8, etc.) fue encontrada y que contenga contenido, puedes hacer lo siguiente:

1. Recorre las columnas y si encuentras una que no esté vacía y contenga el sufijo .mp4 (o la condición que desees), guarda el nombre de esa columna.
2. Una vez encontrada la primera coincidencia, imprime el mensaje y termina el bucle.

Aquí tienes el código modificado para lograrlo:

PHP:
$surym = mysqli_query($conexion, "
    SELECT *
    FROM posters
    WHERE id='624'
    LIMIT 1
");

if ($row = mysqli_fetch_assoc($surym)) {
    $found = false; // Variable para controlar si se encontró alguna columna
    for ($i = 1; $i <= 20; $i++) {
        $photoKey = 'photo' . ($i == 1 ? '' : $i); // Construye el nombre de la columna
        if (!empty($row[$photoKey]) && strpos($row[$photoKey], '.mp4') !== false) {
            echo "Se encontró: $photoKey<br>"; // Imprime el nombre de la columna encontrada
            $found = true; // Marca que se encontró
            break; // Sale del bucle una vez que se encuentra
        }
    }
   
    if (!$found) { // Si no se encontró nada
        echo "No se encontró un video en las columnas.<br>";
    }
} else {
    echo "No se encontró ningún registro con el id 624.<br>";
}

### Explicación:
1. Inicialización de la Variable $found: Se inicia una variable para controlar si se encontró algún video.
2. Bucle for: Recorre las columnas de photo1 a photo20.
3. Condición de Verificación: Comprueba si la columna actual no está vacía y contiene .mp4. Si se cumple la condición, se imprime el nombre de la columna encontrada.
4. Rompe el Bucle: Usando break, detienes el bucle para que solo se imprima la primera coincidencia.
5. Mensaje de No Encontrado: Si no se encuentra ninguna coincidencia, se imprime un mensaje adecuado.

Con este enfoque, obtendrás una salida que indica exactamente qué columna fue encontrada en lugar de listar todas las columnas que tenían contenido.
solo me dice se encontro photo, como hago para que me de un photo aleatorio, ejemplo se encontro photo4
 
solo me dice se encontro photo, como hago para que me de un photo aleatorio, ejemplo se encontro photo4
Para que tu código seleccione un nombre de columna de manera aleatoria y muestre un mensaje indicando cuál columna fue encontrada (por ejemplo, photo4), deberás modificar tu enfoque para recoger todas las coincidencias y luego seleccionar una al azar. Aquí tienes una forma de hacerlo:

1. Recorre todas las columnas y almacena en un arreglo los nombres de las columnas que contienen un video.
2. Selecciona un nombre aleatorio de este arreglo y imprímelo.

Aquí tienes el código modificado para implementar esto:

PHP:
$surym = mysqli_query($conexion, "
    SELECT *
    FROM posters
    WHERE id='624'
    LIMIT 1
");

if ($row = mysqli_fetch_assoc($surym)) {
    $foundColumns = []; // Arreglo para almacenar el nombre de las columnas encontradas

    for ($i = 1; $i <= 20; $i++) {
        $photoKey = 'photo' . ($i == 1 ? '' : $i); // Construye el nombre de la columna
        if (!empty($row[$photoKey]) && strpos($row[$photoKey], '.mp4') !== false) {
            $foundColumns[] = $photoKey; // Agrega el nombre de la columna al arreglo
        }
    }
    
    // Verifica si hay columnas encontradas
    if (!empty($foundColumns)) {
        // Selecciona un nombre de columna aleatoria
        $randomColumn = $foundColumns[array_rand($foundColumns)];
        echo "Se encontró: $randomColumn<br>"; // Imprime la columna aleatoria encontrada
    } else {
        echo "No se encontró un video en las columnas.<br>";
    }
} else {
    echo "No se encontró ningún registro con el id 624.<br>";
}

### Explicación:
1. Arreglo $foundColumns: Se utiliza este arreglo para almacenar los nombres de las columnas que contienen un video.
2. Bucle for: Recorre las columnas desde photo1 hasta photo20. Si encuentra una que no está vacía y termina en .mp4, el nombre de esa columna se agrega al arreglo.
3. Selección Aleatoria: Si hay nombres de columnas en el arreglo $foundColumns, se selecciona uno aleatoriamente usando array_rand().
4. Mensaje Final: Imprime el nombre de la columna que fue encontrada aleatoriamente.

De esta forma, podrás obtener un nombre de columna aleatorio cuando haya coincidencias.
 
Estado

🔒 Este tema está cerrado para nuevas respuestas.

⏰ Solo el creador del tema puede solicitar la reapertura de sus propios temas, pero únicamente dentro de los 60 días previos a la última actualización.

Temas similares

Atrás
Arriba