Tema para preguntas random a Chatgpt 🤖

  • Autor Autor Carlos Arreola
  • Fecha de inicio Fecha de inicio
En python
cuentame todo sobre "raise"
 
En python
cuentame todo sobre "raise"
En Python, la palabra clave raise se utiliza para generar excepciones de forma intencionada. Esto es útil para indicar que ha ocurrido un error en una parte específica de tu código. Aquí tienes un resumen completo sobre raise:

### Uso de raise

1. Generar Excepciones Básicas:
Puedes usar raise para lanzar excepciones predefinidas. Por ejemplo, si deseas indicar que un valor no es válido, puedes usar:

Insertar CODE, HTML o PHP:
python
   raise ValueError("El valor no es válido.")

2. Lanzar Excepciones Personalizadas:
Puedes crear tus propias excepciones definiendo una nueva clase que herede de Exception. Luego, puedes lanzar esta excepción usando raise.

Insertar CODE, HTML o PHP:
python
   class MiExcepcion(Exception):
       pass

   raise MiExcepcion("Este es un error personalizado.")

3. Re-lanzar Excepciones:
Si estás atrapando una excepción en un bloque try y quieres re-lanzarla después de hacer alguna operación (como un registro de error), puedes usar raise sin argumentos:

Insertar CODE, HTML o PHP:
python
   try:
       x = 1 / 0
   except ZeroDivisionError as e:
       print("Error: División por cero.")
       raise  # Re-lanza la excepción

4. Añadir Información a Excepciones:
Puedes envolver una excepción existente en otra para añadir contexto adicional al error:

Insertar CODE, HTML o PHP:
python
   try:
       x = int("no es un número")
   except ValueError as e:
       raise ValueError("Error al convertir a entero.") from e

5. Uso en Funciones:
Puedes usar raise dentro de funciones para manejar errores específicos y lanzar excepciones que el código que llama pueda manejar:

Insertar CODE, HTML o PHP:
python
   def dividir(a, b):
       if b == 0:
           raise ValueError("División por cero no permitida.")
       return a / b

### Resumen

  • raise se utiliza para lanzar excepciones en Python.
  • Puede lanzar excepciones predefinidas o personalizadas.
  • Al señalar un error, ayuda a indicar de manera clara dónde ha fallado el programa.
  • Puede re-lanzar excepciones y agregar contexto a los errores.

### Ejemplo Completo

Python:
class MiExcepcion(Exception):
    pass

def validar_numero(numero):
    if not isinstance(numero, int):
        raise MiExcepcion("Se esperaba un número entero.")

try:
    validar_numero("texto")
except MiExcepcion as e:
    print(f"Ocurrió un error: {e}")

Este código verifica que un valor sea un entero y lanza una excepción personalizada si no lo es, manejando la excepción en el bloque try.
 
En python
¿Cómo hago esto?
while True:
print
pegar varias urls, después otras , hasta que le de doble enter
#otro código
#fin
 
En python
¿Cómo hago esto?
while True:
print
pegar varias urls, después otras , hasta que le de doble enter
#otro código
#fin
Puedes crear un bucle infinito en Python que permita al usuario ingresar múltiples URLs, guardarlas en una lista y finalizar el ingreso cuando el usuario presiona "Enter" dos veces seguidas. Aquí tienes un ejemplo de cómo podrías hacerlo:

Python:
urls = []  # Lista para almacenar las URLs

print("Introduce las URLs (presiona Enter dos veces para finalizar):")

while True:
    url = input()  # Obtener la entrada del usuario
    if url == "":  # Verificar si el usuario presiona Enter
        # Comprobar si ya hubo una entrada vacía (doble Enter)
        if len(urls) > 0 and urls[-1] == "":
            break  # Salir del bucle si hay doble Enter
        else:
            urls.append("")  # Agregar entrada vacía a la lista
    else:
        urls.append(url)  # Agregar la URL a la lista

# Mostrar las URLs ingresadas
print("URLs ingresadas:")
for url in urls:
    if url:  # Evitar imprimir entradas vacías
        print(url)

### Explicación:

1. Inicializar la Lista: Se crea una lista vacía urls para almacenar todas las URLs que el usuario ingresará.

2. Bucle Infinito: Con while True: se inicia un bucle infinito que continuará solicitando URLs hasta que se indique que debe detenerse.

3. Entrada del Usuario: input() se utiliza para capturar la entrada del usuario.

4. Verificación de Doble Enter:
- Si el usuario presiona "Enter" (es decir, la cadena está vacía), se verifica si la lista ya tenía una entrada vacía. Si es así, se rompe el bucle.
- Si no ha habido un doble Enter, se agrega una cadena vacía a la lista para manejar entradas vacías.

5. Mostrar Resultados: Finalmente, se imprime la lista de URLs ingresadas, omitiendo las entradas vacías.

### Uso
Ejecuta el código y comienza a introducir las URLs, presionando "Enter" después de cada una. Una vez que quieras finalizar, presiona "Enter" dos veces seguidas. Las URLs ingresadas se mostrarán al final.
 
Puedes crear un bucle infinito en Python que permita al usuario ingresar múltiples URLs, guardarlas en una lista y finalizar el ingreso cuando el usuario presiona "Enter" dos veces seguidas. Aquí tienes un ejemplo de cómo podrías hacerlo:

Python:
urls = []  # Lista para almacenar las URLs

print("Introduce las URLs (presiona Enter dos veces para finalizar):")

while True:
    url = input()  # Obtener la entrada del usuario
    if url == "":  # Verificar si el usuario presiona Enter
        # Comprobar si ya hubo una entrada vacía (doble Enter)
        if len(urls) > 0 and urls[-1] == "":
            break  # Salir del bucle si hay doble Enter
        else:
            urls.append("")  # Agregar entrada vacía a la lista
    else:
        urls.append(url)  # Agregar la URL a la lista

# Mostrar las URLs ingresadas
print("URLs ingresadas:")
for url in urls:
    if url:  # Evitar imprimir entradas vacías
        print(url)

### Explicación:

1. Inicializar la Lista: Se crea una lista vacía urls para almacenar todas las URLs que el usuario ingresará.

2. Bucle Infinito: Con while True: se inicia un bucle infinito que continuará solicitando URLs hasta que se indique que debe detenerse.

3. Entrada del Usuario: input() se utiliza para capturar la entrada del usuario.

4. Verificación de Doble Enter:
- Si el usuario presiona "Enter" (es decir, la cadena está vacía), se verifica si la lista ya tenía una entrada vacía. Si es así, se rompe el bucle.
- Si no ha habido un doble Enter, se agrega una cadena vacía a la lista para manejar entradas vacías.

5. Mostrar Resultados: Finalmente, se imprime la lista de URLs ingresadas, omitiendo las entradas vacías.

### Uso
Ejecuta el código y comienza a introducir las URLs, presionando "Enter" después de cada una. Una vez que quieras finalizar, presiona "Enter" dos veces seguidas. Las URLs ingresadas se mostrarán al final.
<input name="fotoshop" id="fileclip" title="Permitido solo .jpg, .jpeg, .png, .mp4" accept="image/png,image/jpg,image/jpeg,video/mp4" class="sendluar" type="file" />
como hao para que me deje subir varias imagenes?
 
<input name="fotoshop" id="fileclip" title="Permitido solo .jpg, .jpeg, .png, .mp4" accept="image/png,image/jpg,image/jpeg,video/mp4" class="sendluar" type="file" />
como hao para que me deje subir varias imagenes?
Para permitir que un elemento <input> de tipo file acepte múltiples archivos, simplemente debes agregar el atributo multiple. Este atributo le indica al navegador que el usuario puede seleccionar más de un archivo. Aquí tienes cómo se vería tu código modificado:

HTML:
<input name="fotoshop" id="fileclip" title="Permitido solo .jpg, .jpeg, .png, .mp4" accept="image/png,image/jpg,image/jpeg,video/mp4" class="sendluar" type="file" multiple />

### Explicación:
- multiple: Este atributo permite seleccionar varias imágenes o videos a la vez.

### Uso:
Cuando el usuario haga clic en el botón para seleccionar archivos, podrá seleccionar múltiples archivos manteniendo presionada la tecla Ctrl (en Windows) o Command (en Mac) mientras hace clic en los archivos.

Recuerda que si necesitas procesar esos archivos en tu aplicación, deberás hacerlo en el lado del servidor, y quizás sea útil tener un código en JavaScript para manejar la vista previa o la manipulación de los archivos seleccionados en el cliente.
 
Para permitir que un elemento <input> de tipo file acepte múltiples archivos, simplemente debes agregar el atributo multiple. Este atributo le indica al navegador que el usuario puede seleccionar más de un archivo. Aquí tienes cómo se vería tu código modificado:

HTML:
<input name="fotoshop" id="fileclip" title="Permitido solo .jpg, .jpeg, .png, .mp4" accept="image/png,image/jpg,image/jpeg,video/mp4" class="sendluar" type="file" multiple />

### Explicación:
- multiple: Este atributo permite seleccionar varias imágenes o videos a la vez.

### Uso:
Cuando el usuario haga clic en el botón para seleccionar archivos, podrá seleccionar múltiples archivos manteniendo presionada la tecla Ctrl (en Windows) o Command (en Mac) mientras hace clic en los archivos.

Recuerda que si necesitas procesar esos archivos en tu aplicación, deberás hacerlo en el lado del servidor, y quizás sea útil tener un código en JavaScript para manejar la vista previa o la manipulación de los archivos seleccionados en el cliente.
una duda, porque solo sube una sola foto o video, quiero que agregue asi
mysqli_query($conexion,"INSERT INTO posters(photo,photo2,photo3) VALUES ("photo1","photo2","photo3"));
 
una duda, porque solo sube una sola foto o video, quiero que agregue asi
mysqli_query($conexion,"INSERT INTO posters(photo,photo2,photo3) VALUES ("photo1","photo2","photo3"));
Para permitir la subida de múltiples fotos o videos y almacenarlos en la base de datos, deberás modificar tanto la parte del frontend (HTML) como la parte del backend (PHP). Te muestro cómo hacerlo:

### 1. Modifica el HTML

Asegúrate de que tu input permita múltiples archivos y que se llamen de manera que puedas identificarlos:

HTML:
<input name="fotoshop[]" id="fileclip" title="Permitido solo .jpg, .jpeg, .png, .mp4" accept="image/png,image/jpg,image/jpeg,video/mp4" class="sendluar" type="file" multiple />

Nota: La sintaxis name="fotoshop[]" indica que se están enviando múltiples valores.

### 2. Modifica el Código PHP

En el lado del servidor, deberás procesar el array de archivos enviados. Aquí te muestro un ejemplo de cómo hacerlo:

PHP:
$photos = $_FILES['fotoshop'];

// Conexión a la base de datos
$conexion = mysqli_connect("localhost", "usuario", "contraseña", "base_de_datos");

// Verifica si hay un error en la subida
foreach ($photos['tmp_name'] as $key => $tmp_name) {
    $photo = $photos['name'][$key];
    $photo_tmp = $photos['tmp_name'][$key];

    // Aquí puedes establecer la ruta donde deseas guardar las imágenes
    $upload_path = "ruta/donde/guardar/" . basename($photo);

    // Mueve la imagen del directorio temporal a tu carpeta de destino
    if (move_uploaded_file($photo_tmp, $upload_path)) {
        // Almacena el nombre de la imagen en la base de datos
        mysqli_query($conexion, "INSERT INTO posters (photo) VALUES ('$photo')");
    }
}

// Cierra la conexión
mysqli_close($conexion);

### Consideraciones
- Base de Datos: En el ejemplo anterior, se inserta cada imagen en una sola columna photo. Si quieres almacenar hasta 3 fotos en las columnas photo, photo2, photo3, necesitarás un poco de lógica adicional para verificar cuántas imágenes ya has insertado.

- Validación: Asegúrate de validar los tipos de archivos y manejar errores que puedan ocurrir durante la carga de archivos.

- Seguridad: Recuerda proteger tu aplicación contra inyecciones SQL utilizando declaraciones preparadas, y también sanitiza la entrada y los nombres de los archivos para evitar problemas de seguridad.

Si quieres insertar tres fotos en tres columnas diferentes, podrías hacer algo como esto, asumiendo que no hay más de tres:

PHP:
if (count($photos['tmp_name']) <= 3) {
    $query = "INSERT INTO posters (photo, photo2, photo3) VALUES ('" . $photos['name'][0] . "', '" . $photos['name'][1] . "', '" . $photos['name'][2] . "')";
    mysqli_query($conexion, $query);
}

Esta lógica fundamental debería permitir que subas múltiples fotos y las almacenes adecuadamente en la base de datos.
 
Para permitir la subida de múltiples fotos o videos y almacenarlos en la base de datos, deberás modificar tanto la parte del frontend (HTML) como la parte del backend (PHP). Te muestro cómo hacerlo:

### 1. Modifica el HTML

Asegúrate de que tu input permita múltiples archivos y que se llamen de manera que puedas identificarlos:

HTML:
<input name="fotoshop[]" id="fileclip" title="Permitido solo .jpg, .jpeg, .png, .mp4" accept="image/png,image/jpg,image/jpeg,video/mp4" class="sendluar" type="file" multiple />

Nota: La sintaxis name="fotoshop[]" indica que se están enviando múltiples valores.

### 2. Modifica el Código PHP

En el lado del servidor, deberás procesar el array de archivos enviados. Aquí te muestro un ejemplo de cómo hacerlo:

PHP:
$photos = $_FILES['fotoshop'];

// Conexión a la base de datos
$conexion = mysqli_connect("localhost", "usuario", "contraseña", "base_de_datos");

// Verifica si hay un error en la subida
foreach ($photos['tmp_name'] as $key => $tmp_name) {
    $photo = $photos['name'][$key];
    $photo_tmp = $photos['tmp_name'][$key];

    // Aquí puedes establecer la ruta donde deseas guardar las imágenes
    $upload_path = "ruta/donde/guardar/" . basename($photo);

    // Mueve la imagen del directorio temporal a tu carpeta de destino
    if (move_uploaded_file($photo_tmp, $upload_path)) {
        // Almacena el nombre de la imagen en la base de datos
        mysqli_query($conexion, "INSERT INTO posters (photo) VALUES ('$photo')");
    }
}

// Cierra la conexión
mysqli_close($conexion);

### Consideraciones
- Base de Datos: En el ejemplo anterior, se inserta cada imagen en una sola columna photo. Si quieres almacenar hasta 3 fotos en las columnas photo, photo2, photo3, necesitarás un poco de lógica adicional para verificar cuántas imágenes ya has insertado.

- Validación: Asegúrate de validar los tipos de archivos y manejar errores que puedan ocurrir durante la carga de archivos.

- Seguridad: Recuerda proteger tu aplicación contra inyecciones SQL utilizando declaraciones preparadas, y también sanitiza la entrada y los nombres de los archivos para evitar problemas de seguridad.

Si quieres insertar tres fotos en tres columnas diferentes, podrías hacer algo como esto, asumiendo que no hay más de tres:

PHP:
if (count($photos['tmp_name']) <= 3) {
    $query = "INSERT INTO posters (photo, photo2, photo3) VALUES ('" . $photos['name'][0] . "', '" . $photos['name'][1] . "', '" . $photos['name'][2] . "')";
    mysqli_query($conexion, $query);
}

Esta lógica fundamental debería permitir que subas múltiples fotos y las almacenes adecuadamente en la base de datos.
empecemos de cero, hazme este codigo para que suba el photo2, photo3

if(!empty($_FILES) and $_FILES['fotoshop']['type'] == "video/mp4"){
if(is_uploaded_file($_FILES['fotoshop']['tmp_name'])){
sleep(1);
$source_path = $_FILES['fotoshop']['tmp_name'];
$target_path = 'upload/'.mt_rand(1,100).bin2hex(random_bytes(mt_rand(5,15))).'.mp4';
move_uploaded_file($source_path, $target_path);
}
}
if(!empty($_FILES) and $_FILES['fotoshop']['type'] == "image/jpeg" or !empty($_FILES) and $_FILES['fotoshop']['type'] == "image/png" or !empty($_FILES) and $_FILES['fotoshop']['type'] == "image/jpg"){
$source_path = $_FILES['fotoshop']['tmp_name'];
$target_path = "imguser/".mt_rand(1,99999).mt_rand(1,1000).$username.date("zihdYN").".webp";
move_uploaded_file($source_path, $target_path);
}
if(!empty($_FILES)){
$querim = mysqli_query($conexion,"SELECT * FROM friends where litefriends like '%,".$id.",%' and username != '".$username."' order by id desc");
if(mysqli_num_rows($querim) ===0){$quid.='0,';}
$ino=1;while($filo = mysqli_fetch_assoc($querim)){
$pinta=$ino++;
$quala = mysqli_query($conexion,"SELECT * FROM profileuser where username = '".$filo['username']."' order by id desc");
$qilo = mysqli_fetch_assoc($quala);
$quid.= '0,'.$qilo['id'].',';
}
$friendfly = str_replace(",0,",",",$quid);
mysqli_query($conexion,"INSERT INTO posters(idviews,idseguis,category,hora,photo,nombre,apellido,username,email,descripts,fecha) VALUES ('0,','".$friendfly."','".$_POST['category']."','".date("d-m-Y H:i:s")."','".$target_path."','".$nombre."','".$apellido."','".$username."','".$email."','".$_POST['mensaje']."','".date('d M Y')."')");
$ultimo_id_insertado = mysqli_insert_id($conexion);
$tu_texto = $_POST['mensaje'];
preg_match_all("/@[\w]+/", $tu_texto, $palabras_con_arroba);
foreach($palabras_con_arroba[0] as $palabra){
$chopo = mysqli_query($conexion,"SELECT * FROM profileuser where username='".str_replace('@', '', $palabra)."' ORDER BY id DESC limit 1");
if($loupa = mysqli_fetch_assoc($chopo) and $loupa['id'] !== $id){
$chopop = mysqli_query($conexion,"SELECT * FROM newnotification where frame='etiqueta' and username='".$username."' and idbug='".$ultimo_id_insertado."' ORDER BY id DESC limit 1");
if($comem = mysqli_fetch_assoc($chopop)){
mysqli_query($conexion,"UPDATE newnotification SET idsug=CONCAT(idsug,'".$loupa['id'].",') where idsug not like '%,".$loupa['id'].",%' and username='".$username."' and idbug='".$ultimo_id_insertado."'");
}elseif($comem['idbug'] !== $ultimo_id_insertado){
mysqli_query($conexion,"INSERT INTO newnotification(hora,fecha,idbug,idsug,idviews,username,frame,mensaje) VALUES ('".date("d-m-Y H:i:s")."','".date('d M Y')."','".$ultimo_id_insertado."','0,".$loupa['id'].",','0,','".$username."','etiqueta','te ha etiquetado en una publicacion')");
}
}
}
}
 
empecemos de cero, hazme este codigo para que suba el photo2, photo3

if(!empty($_FILES) and $_FILES['fotoshop']['type'] == "video/mp4"){
if(is_uploaded_file($_FILES['fotoshop']['tmp_name'])){
sleep(1);
$source_path = $_FILES['fotoshop']['tmp_name'];
$target_path = 'upload/'.mt_rand(1,100).bin2hex(random_bytes(mt_rand(5,15))).'.mp4';
move_uploaded_file($source_path, $target_path);
}
}
if(!empty($_FILES) and $_FILES['fotoshop']['type'] == "image/jpeg" or !empty($_FILES) and $_FILES['fotoshop']['type'] == "image/png" or !empty($_FILES) and $_FILES['fotoshop']['type'] == "image/jpg"){
$source_path = $_FILES['fotoshop']['tmp_name'];
$target_path = "imguser/".mt_rand(1,99999).mt_rand(1,1000).$username.date("zihdYN").".webp";
move_uploaded_file($source_path, $target_path);
}
if(!empty($_FILES)){
$querim = mysqli_query($conexion,"SELECT * FROM friends where litefriends like '%,".$id.",%' and username != '".$username."' order by id desc");
if(mysqli_num_rows($querim) ===0){$quid.='0,';}
$ino=1;while($filo = mysqli_fetch_assoc($querim)){
$pinta=$ino++;
$quala = mysqli_query($conexion,"SELECT * FROM profileuser where username = '".$filo['username']."' order by id desc");
$qilo = mysqli_fetch_assoc($quala);
$quid.= '0,'.$qilo['id'].',';
}
$friendfly = str_replace(",0,",",",$quid);
mysqli_query($conexion,"INSERT INTO posters(idviews,idseguis,category,hora,photo,nombre,apellido,username,email,descripts,fecha) VALUES ('0,','".$friendfly."','".$_POST['category']."','".date("d-m-Y H:i:s")."','".$target_path."','".$nombre."','".$apellido."','".$username."','".$email."','".$_POST['mensaje']."','".date('d M Y')."')");
$ultimo_id_insertado = mysqli_insert_id($conexion);
$tu_texto = $_POST['mensaje'];
preg_match_all("/@[\w]+/", $tu_texto, $palabras_con_arroba);
foreach($palabras_con_arroba[0] as $palabra){
$chopo = mysqli_query($conexion,"SELECT * FROM profileuser where username='".str_replace('@', '', $palabra)."' ORDER BY id DESC limit 1");
if($loupa = mysqli_fetch_assoc($chopo) and $loupa['id'] !== $id){
$chopop = mysqli_query($conexion,"SELECT * FROM newnotification where frame='etiqueta' and username='".$username."' and idbug='".$ultimo_id_insertado."' ORDER BY id DESC limit 1");
if($comem = mysqli_fetch_assoc($chopop)){
mysqli_query($conexion,"UPDATE newnotification SET idsug=CONCAT(idsug,'".$loupa['id'].",') where idsug not like '%,".$loupa['id'].",%' and username='".$username."' and idbug='".$ultimo_id_insertado."'");
}elseif($comem['idbug'] !== $ultimo_id_insertado){
mysqli_query($conexion,"INSERT INTO newnotification(hora,fecha,idbug,idsug,idviews,username,frame,mensaje) VALUES ('".date("d-m-Y H:i:s")."','".date('d M Y')."','".$ultimo_id_insertado."','0,".$loupa['id'].",','0,','".$username."','etiqueta','te ha etiquetado en una publicacion')");
}
}
}
}
Aquí tienes una versión del código que permite subir múltiples archivos (tanto fotos como videos), incluyendo el manejo de photo2 y photo3. Vamos a asegurarnos de que todas las imágenes y videos se suban correctamente y se almacenen en la base de datos.

### Paso 1: Modificar el HTML

Asegúrate de que tu <input> acepte múltiples archivos, como se mostró anteriormente:

HTML:
<input name="fotoshop[]" id="fileclip" title="Permitido solo .jpg, .jpeg, .png, .mp4" accept="image/png,image/jpg,image/jpeg,video/mp4" class="sendluar" type="file" multiple />

### Paso 2: Manejo del PHP

A continuación, el código PHP que maneja la subida de archivos y la inserción en la base de datos:

PHP:
// Inicializa los arrays para almacenar las rutas de los archivos subidos
$uploaded_photos = [];
$uploaded_videos = [];

// Verifica si hay archivos subidos
if (!empty($_FILES['fotoshop'])) {
    foreach ($_FILES['fotoshop']['tmp_name'] as $key => $tmp_name) {
        $fileType = $_FILES['fotoshop']['type'][$key];

        // Manejo de videos
        if ($fileType === "video/mp4") {
            if (is_uploaded_file($tmp_name)) {
                sleep(1);
                $target_path = 'upload/' . mt_rand(1, 100) . bin2hex(random_bytes(mt_rand(5, 15))) . '.mp4';
                if (move_uploaded_file($tmp_name, $target_path)) {
                    $uploaded_videos[] = $target_path;
                }
            }
        }

        // Manejo de imágenes (jpeg, png, jpg)
        elseif ($fileType === "image/jpeg" || $fileType === "image/png" || $fileType === "image/jpg") {
            $target_path = "imguser/" . mt_rand(1, 99999) . mt_rand(1, 1000) . $username . date("zihdYN") . ".webp";
            if (move_uploaded_file($tmp_name, $target_path)) {
                $uploaded_photos[] = $target_path;
            }
        }
    }

    // Construimos la cadena de fotos
    $photos_string = implode(',', $uploaded_photos);
    $videos_string = implode(',', $uploaded_videos);

    // Procesar el resto de tu código para insertar en la base de datos
    $querim = mysqli_query($conexion, "SELECT * FROM friends WHERE litefriends LIKE '%," . $id . ",%' AND username != '" . $username . "' ORDER BY id DESC");
    $quid = '';
    if (mysqli_num_rows($querim) === 0) {
        $quid .= '0,';
    }

    $ino = 1;
    while ($filo = mysqli_fetch_assoc($querim)) {
        $pinta = $ino++;
        $quala = mysqli_query($conexion, "SELECT * FROM profileuser WHERE username = '" . $filo['username'] . "' ORDER BY id DESC");
        $qilo = mysqli_fetch_assoc($quala);
        $quid .= '0,' . $qilo['id'] . ',';
    }

    $friendfly = str_replace(",0,", ",", $quid);
    mysqli_query($conexion, "INSERT INTO posters (idviews, idseguis, category, hora, photo, photo2, photo3, nombre, apellido, username, email, descripts, fecha) VALUES ('0,', '" . $friendfly . "', '" . $_POST['category'] . "', '" . date("d-m-Y H:i:s") . "', '" . $photos_string . "', '" . $videos_string . "', '', '" . $nombre . "', '" . $apellido . "', '" . $username . "', '" . $email . "', '" . $_POST['mensaje'] . "', '" . date('d M Y') . "')");

    // Notificaciones y etiquetado (ya tienes tu lógica aquí)
}
// Cierra conexión si es necesario

### Explicaciones Clave:

1. Manejo de Múltiples Archivos: Se utiliza un bucle foreach para procesar cada archivo que el usuario sube.

2. Subida de Archivos: Se valida el tipo de archivo, se generará un nuevo nombre para el archivo y se moverá el archivo a su destino deseado.

3. Array de Rutas: Se usan dos arrays ($uploaded_photos y $uploaded_videos) para almacenar las rutas de las imágenes y videos subidos.

4. Inserción en la Base de Datos: Al final, se inserta una fila en la tabla posters, incluyendo la cadena con las rutas de las fotos y videos subidos.

### Observaciones:

  • Asegúrate de que las columnas en tu tabla posters están correctamente configuradas para almacenar los datos.
  • Si quieres almacenar específicamente tres fotos y videos en columnas separadas, necesitarás lógica adicional para gestionar eso.
  • Recuerda que deberías realizar más validaciones y tratamientos de error en un entorno de producción.

Esto debería darte una buena base para manejar la subida de múltiples archivos en tu aplicación.
 
Aquí tienes una versión del código que permite subir múltiples archivos (tanto fotos como videos), incluyendo el manejo de photo2 y photo3. Vamos a asegurarnos de que todas las imágenes y videos se suban correctamente y se almacenen en la base de datos.

### Paso 1: Modificar el HTML

Asegúrate de que tu <input> acepte múltiples archivos, como se mostró anteriormente:

HTML:
<input name="fotoshop[]" id="fileclip" title="Permitido solo .jpg, .jpeg, .png, .mp4" accept="image/png,image/jpg,image/jpeg,video/mp4" class="sendluar" type="file" multiple />

### Paso 2: Manejo del PHP

A continuación, el código PHP que maneja la subida de archivos y la inserción en la base de datos:

PHP:
// Inicializa los arrays para almacenar las rutas de los archivos subidos
$uploaded_photos = [];
$uploaded_videos = [];

// Verifica si hay archivos subidos
if (!empty($_FILES['fotoshop'])) {
    foreach ($_FILES['fotoshop']['tmp_name'] as $key => $tmp_name) {
        $fileType = $_FILES['fotoshop']['type'][$key];

        // Manejo de videos
        if ($fileType === "video/mp4") {
            if (is_uploaded_file($tmp_name)) {
                sleep(1);
                $target_path = 'upload/' . mt_rand(1, 100) . bin2hex(random_bytes(mt_rand(5, 15))) . '.mp4';
                if (move_uploaded_file($tmp_name, $target_path)) {
                    $uploaded_videos[] = $target_path;
                }
            }
        }

        // Manejo de imágenes (jpeg, png, jpg)
        elseif ($fileType === "image/jpeg" || $fileType === "image/png" || $fileType === "image/jpg") {
            $target_path = "imguser/" . mt_rand(1, 99999) . mt_rand(1, 1000) . $username . date("zihdYN") . ".webp";
            if (move_uploaded_file($tmp_name, $target_path)) {
                $uploaded_photos[] = $target_path;
            }
        }
    }

    // Construimos la cadena de fotos
    $photos_string = implode(',', $uploaded_photos);
    $videos_string = implode(',', $uploaded_videos);

    // Procesar el resto de tu código para insertar en la base de datos
    $querim = mysqli_query($conexion, "SELECT * FROM friends WHERE litefriends LIKE '%," . $id . ",%' AND username != '" . $username . "' ORDER BY id DESC");
    $quid = '';
    if (mysqli_num_rows($querim) === 0) {
        $quid .= '0,';
    }

    $ino = 1;
    while ($filo = mysqli_fetch_assoc($querim)) {
        $pinta = $ino++;
        $quala = mysqli_query($conexion, "SELECT * FROM profileuser WHERE username = '" . $filo['username'] . "' ORDER BY id DESC");
        $qilo = mysqli_fetch_assoc($quala);
        $quid .= '0,' . $qilo['id'] . ',';
    }

    $friendfly = str_replace(",0,", ",", $quid);
    mysqli_query($conexion, "INSERT INTO posters (idviews, idseguis, category, hora, photo, photo2, photo3, nombre, apellido, username, email, descripts, fecha) VALUES ('0,', '" . $friendfly . "', '" . $_POST['category'] . "', '" . date("d-m-Y H:i:s") . "', '" . $photos_string . "', '" . $videos_string . "', '', '" . $nombre . "', '" . $apellido . "', '" . $username . "', '" . $email . "', '" . $_POST['mensaje'] . "', '" . date('d M Y') . "')");

    // Notificaciones y etiquetado (ya tienes tu lógica aquí)
}
// Cierra conexión si es necesario

### Explicaciones Clave:

1. Manejo de Múltiples Archivos: Se utiliza un bucle foreach para procesar cada archivo que el usuario sube.

2. Subida de Archivos: Se valida el tipo de archivo, se generará un nuevo nombre para el archivo y se moverá el archivo a su destino deseado.

3. Array de Rutas: Se usan dos arrays ($uploaded_photos y $uploaded_videos) para almacenar las rutas de las imágenes y videos subidos.

4. Inserción en la Base de Datos: Al final, se inserta una fila en la tabla posters, incluyendo la cadena con las rutas de las fotos y videos subidos.

### Observaciones:

  • Asegúrate de que las columnas en tu tabla posters están correctamente configuradas para almacenar los datos.
  • Si quieres almacenar específicamente tres fotos y videos en columnas separadas, necesitarás lógica adicional para gestionar eso.
  • Recuerda que deberías realizar más validaciones y tratamientos de error en un entorno de producción.

Esto debería darte una buena base para manejar la subida de múltiples archivos en tu aplicación.
no sube la imagen o video e photo2 y photo3
 
no sube la imagen o video e photo2 y photo3
Para asegurarte de que se suban correctamente las imágenes y videos a las columnas photo, photo2 y photo3, necesitamos modificar el script para manejar hasta tres archivos y almacenarlos apropiadamente.

Aquí tienes un código modificado que permite subir hasta tres archivos y los almacena en las respectivas columnas:

### Código PHP Modificado

PHP:
// Inicializa los arrays para almacenar las rutas de los archivos subidos
$uploaded_photos = [];
$uploaded_videos = [];

// Verifica si hay archivos subidos
if (!empty($_FILES['fotoshop'])) {
    foreach ($_FILES['fotoshop']['tmp_name'] as $key => $tmp_name) {
        $fileType = $_FILES['fotoshop']['type'][$key];

        // Manejo de videos
        if ($fileType === "video/mp4") {
            if (is_uploaded_file($tmp_name)) {
                sleep(1);
                $target_path = 'upload/' . mt_rand(1, 100) . bin2hex(random_bytes(mt_rand(5, 15))) . '.mp4';
                if (move_uploaded_file($tmp_name, $target_path)) {
                    $uploaded_videos[] = $target_path;
                }
            }
        }
        // Manejo de imágenes (jpeg, png, jpg)
        elseif ($fileType === "image/jpeg" || $fileType === "image/png" || $fileType === "image/jpg") {
            $target_path = "imguser/" . mt_rand(1, 99999) . mt_rand(1, 1000) . $username . date("zihdYN") . ".webp";
            if (move_uploaded_file($tmp_name, $target_path)) {
                $uploaded_photos[] = $target_path;
            }
        }
    }

    // Preparamos las rutas para el INSERT
    $photo1 = isset($uploaded_photos[0]) ? $uploaded_photos[0] : null;
    $photo2 = isset($uploaded_photos[1]) ? $uploaded_photos[1] : null;
    $photo3 = isset($uploaded_photos[2]) ? $uploaded_photos[2] : null;
    $video1 = isset($uploaded_videos[0]) ? $uploaded_videos[0] : null;

    // Si solo hay videos, los guardamos en la columna "photo"
    if ($video1) {
        $photo1 = $video1;
        $photo2 = null; // Reseteamos las otras fotos si solo hay un video
        $photo3 = null;
    }

    // Procesar el resto de tu código para insertar en la base de datos
    $querim = mysqli_query($conexion, "SELECT * FROM friends WHERE litefriends LIKE '%," . $id . ",%' AND username != '" . $username . "' ORDER BY id DESC");
    $quid = '';

    if (mysqli_num_rows($querim) === 0) {
        $quid .= '0,';
    }

    $ino = 1;
    while ($filo = mysqli_fetch_assoc($querim)) {
        $pinta = $ino++;
        $quala = mysqli_query($conexion, "SELECT * FROM profileuser WHERE username = '" . $filo['username'] . "' ORDER BY id DESC");
        $qilo = mysqli_fetch_assoc($quala);
        $quid .= '0,' . $qilo['id'] . ',';
    }

    $friendfly = str_replace(",0,", ",", $quid);
    mysqli_query($conexion, "INSERT INTO posters (idviews, idseguis, category, hora, photo, photo2, photo3, nombre, apellido, username, email, descripts, fecha) VALUES ('0,', '" . $friendfly . "', '" . $_POST['category'] . "', '" . date("d-m-Y H:i:s") . "', '" . $photo1 . "', '" . $photo2 . "', '" . $photo3 . "', '" . $nombre . "', '" . $apellido . "', '" . $username . "', '" . $email . "', '" . $_POST['mensaje'] . "', '" . date('d M Y') . "')");

    // Notificaciones y etiquetado (ya tienes tu lógica aquí)
}
// Cierra conexión si es necesario

### Explicación de los Cambios:

1. Almacenamiento Separado: Se utilizan variables individuales ($photo1, $photo2, $photo3) para almacenar las rutas de las imágenes. Esto facilita la inserción en la base de datos.

2. Subida de Videos: Si solo un video se sube, se lo asigna a photo1 y se eliminan photo2 y photo3 ya que deben estar vacías si no se cargan fotos.

3. Condicionales de Verificación: Se verifica si existen archivos subidos antes de acceso a las rutas, asegurando que no se generen errores.

4. Manejo de Errores: Asegúrate de que tu directorio de destino existe y tiene los permisos correctos para permitir la carga de archivos.

5. Inyección SQL: Aunque se está ingresando la consulta directamente, considera usar sentencias preparadas para evitar la inyección SQL.

Ahora, asegúrate de que la lógica y los permisos del servidor están configurados correctamente para que funcione la carga de archivos. Después de estos cambios, deberías poder subir hasta tres archivos de imagen o video correctamente.
 
Para asegurarte de que se suban correctamente las imágenes y videos a las columnas photo, photo2 y photo3, necesitamos modificar el script para manejar hasta tres archivos y almacenarlos apropiadamente.

Aquí tienes un código modificado que permite subir hasta tres archivos y los almacena en las respectivas columnas:

### Código PHP Modificado

PHP:
// Inicializa los arrays para almacenar las rutas de los archivos subidos
$uploaded_photos = [];
$uploaded_videos = [];

// Verifica si hay archivos subidos
if (!empty($_FILES['fotoshop'])) {
    foreach ($_FILES['fotoshop']['tmp_name'] as $key => $tmp_name) {
        $fileType = $_FILES['fotoshop']['type'][$key];

        // Manejo de videos
        if ($fileType === "video/mp4") {
            if (is_uploaded_file($tmp_name)) {
                sleep(1);
                $target_path = 'upload/' . mt_rand(1, 100) . bin2hex(random_bytes(mt_rand(5, 15))) . '.mp4';
                if (move_uploaded_file($tmp_name, $target_path)) {
                    $uploaded_videos[] = $target_path;
                }
            }
        }
        // Manejo de imágenes (jpeg, png, jpg)
        elseif ($fileType === "image/jpeg" || $fileType === "image/png" || $fileType === "image/jpg") {
            $target_path = "imguser/" . mt_rand(1, 99999) . mt_rand(1, 1000) . $username . date("zihdYN") . ".webp";
            if (move_uploaded_file($tmp_name, $target_path)) {
                $uploaded_photos[] = $target_path;
            }
        }
    }

    // Preparamos las rutas para el INSERT
    $photo1 = isset($uploaded_photos[0]) ? $uploaded_photos[0] : null;
    $photo2 = isset($uploaded_photos[1]) ? $uploaded_photos[1] : null;
    $photo3 = isset($uploaded_photos[2]) ? $uploaded_photos[2] : null;
    $video1 = isset($uploaded_videos[0]) ? $uploaded_videos[0] : null;

    // Si solo hay videos, los guardamos en la columna "photo"
    if ($video1) {
        $photo1 = $video1;
        $photo2 = null; // Reseteamos las otras fotos si solo hay un video
        $photo3 = null;
    }

    // Procesar el resto de tu código para insertar en la base de datos
    $querim = mysqli_query($conexion, "SELECT * FROM friends WHERE litefriends LIKE '%," . $id . ",%' AND username != '" . $username . "' ORDER BY id DESC");
    $quid = '';

    if (mysqli_num_rows($querim) === 0) {
        $quid .= '0,';
    }

    $ino = 1;
    while ($filo = mysqli_fetch_assoc($querim)) {
        $pinta = $ino++;
        $quala = mysqli_query($conexion, "SELECT * FROM profileuser WHERE username = '" . $filo['username'] . "' ORDER BY id DESC");
        $qilo = mysqli_fetch_assoc($quala);
        $quid .= '0,' . $qilo['id'] . ',';
    }

    $friendfly = str_replace(",0,", ",", $quid);
    mysqli_query($conexion, "INSERT INTO posters (idviews, idseguis, category, hora, photo, photo2, photo3, nombre, apellido, username, email, descripts, fecha) VALUES ('0,', '" . $friendfly . "', '" . $_POST['category'] . "', '" . date("d-m-Y H:i:s") . "', '" . $photo1 . "', '" . $photo2 . "', '" . $photo3 . "', '" . $nombre . "', '" . $apellido . "', '" . $username . "', '" . $email . "', '" . $_POST['mensaje'] . "', '" . date('d M Y') . "')");

    // Notificaciones y etiquetado (ya tienes tu lógica aquí)
}
// Cierra conexión si es necesario

### Explicación de los Cambios:

1. Almacenamiento Separado: Se utilizan variables individuales ($photo1, $photo2, $photo3) para almacenar las rutas de las imágenes. Esto facilita la inserción en la base de datos.

2. Subida de Videos: Si solo un video se sube, se lo asigna a photo1 y se eliminan photo2 y photo3 ya que deben estar vacías si no se cargan fotos.

3. Condicionales de Verificación: Se verifica si existen archivos subidos antes de acceso a las rutas, asegurando que no se generen errores.

4. Manejo de Errores: Asegúrate de que tu directorio de destino existe y tiene los permisos correctos para permitir la carga de archivos.

5. Inyección SQL: Aunque se está ingresando la consulta directamente, considera usar sentencias preparadas para evitar la inyección SQL.

Ahora, asegúrate de que la lógica y los permisos del servidor están configurados correctamente para que funcione la carga de archivos. Después de estos cambios, deberías poder subir hasta tres archivos de imagen o video correctamente.
puedes hacer que los videos se guarde en el mismo orden que se subio en photo?
 
puedes hacer que los videos se guarde en el mismo orden que se subio en photo?
Por supuesto. Para garantizar que los videos y las imágenes se guarden en el mismo orden que fueron subidos en las columnas correspondientes de la base de datos (como photo, photo2, photo3), puedes realizar la siguiente modificación en el código.

Aquí tienes el código que almacena los archivos en el orden en que se subieron, asegurando que la inserción en la base de datos refleje ese orden.

### Código PHP Modificado

PHP:
// Inicializa los arrays para almacenar las rutas de los archivos subidos
$uploaded_files = [];

// Verifica si hay archivos subidos
if (!empty($_FILES['fotoshop'])) {
    foreach ($_FILES['fotoshop']['tmp_name'] as $key => $tmp_name) {
        $fileType = $_FILES['fotoshop']['type'][$key];
        $target_path = '';

        // Manejo de videos
        if ($fileType === "video/mp4") {
            if (is_uploaded_file($tmp_name)) {
                sleep(1);
                $target_path = 'upload/' . mt_rand(1, 100) . bin2hex(random_bytes(mt_rand(5, 15))) . '.mp4';
                if (move_uploaded_file($tmp_name, $target_path)) {
                    $uploaded_files[] = $target_path; // Agregar video a la lista
                }
            }
        }
        // Manejo de imágenes (jpeg, png, jpg)
        elseif ($fileType === "image/jpeg" || $fileType === "image/png" || $fileType === "image/jpg") {
            $target_path = "imguser/" . mt_rand(1, 99999) . mt_rand(1, 1000) . $username . date("zihdYN") . ".webp";
            if (move_uploaded_file($tmp_name, $target_path)) {
                $uploaded_files[] = $target_path; // Agregar imagen a la lista
            }
        }
    }

    // Asignamos las rutas en el orden que fueron subidas
    $photo1 = isset($uploaded_files[0]) ? $uploaded_files[0] : null;
    $photo2 = isset($uploaded_files[1]) ? $uploaded_files[1] : null;
    $photo3 = isset($uploaded_files[2]) ? $uploaded_files[2] : null;

    // Procesar el resto de tu código para insertar en la base de datos
    $querim = mysqli_query($conexion, "SELECT * FROM friends WHERE litefriends LIKE '%," . $id . ",%' AND username != '" . $username . "' ORDER BY id DESC");
    $quid = '';

    if (mysqli_num_rows($querim) === 0) {
        $quid .= '0,';
    }

    $ino = 1;
    while ($filo = mysqli_fetch_assoc($querim)) {
        $pinta = $ino++;
        $quala = mysqli_query($conexion, "SELECT * FROM profileuser WHERE username = '" . $filo['username'] . "' ORDER BY id DESC");
        $qilo = mysqli_fetch_assoc($quala);
        $quid .= '0,' . $qilo['id'] . ',';
    }

    $friendfly = str_replace(",0,", ",", $quid);
    mysqli_query($conexion, "INSERT INTO posters (idviews, idseguis, category, hora, photo, photo2, photo3, nombre, apellido, username, email, descripts, fecha) VALUES ('0,', '" . $friendfly . "', '" . $_POST['category'] . "', '" . date("d-m-Y H:i:s") . "', '" . $photo1 . "', '" . $photo2 . "', '" . $photo3 . "', '" . $nombre . "', '" . $apellido . "', '" . $username . "', '" . $email . "', '" . $_POST['mensaje'] . "', '" . date('d M Y') . "')");

    // Notificaciones y etiquetado (ya tienes tu lógica aquí)
}
// Cierra conexión si es necesario

### Explicación de los Cambios:

1. Array Unificado: En lugar de tener dos arrays separados para fotos y videos, se usa un solo array $uploaded_files que almacena todos los archivos subidos, independientemente de si son imágenes o videos.

2. Orden de Inserción: Los archivos se añaden al mismo array en el orden en que fueron subidos. Luego, se asignan a photo1, photo2 y photo3 de acuerdo con el índice.

3. Manejo de Nulidad: Al momento de asignar las variables photo1, photo2 y photo3, se verifica si los elementos existen en el array, garantizando así que sea seguro hacer referencia a ellos.

Con esta configuración, puedes subir y guardar los archivos en el orden en el que fueron seleccionados por el usuario. Así, el primer archivo subido irá a photo, el segundo a photo2 y el tercero a photo3.
 
Por supuesto. Para garantizar que los videos y las imágenes se guarden en el mismo orden que fueron subidos en las columnas correspondientes de la base de datos (como photo, photo2, photo3), puedes realizar la siguiente modificación en el código.

Aquí tienes el código que almacena los archivos en el orden en que se subieron, asegurando que la inserción en la base de datos refleje ese orden.

### Código PHP Modificado

PHP:
// Inicializa los arrays para almacenar las rutas de los archivos subidos
$uploaded_files = [];

// Verifica si hay archivos subidos
if (!empty($_FILES['fotoshop'])) {
    foreach ($_FILES['fotoshop']['tmp_name'] as $key => $tmp_name) {
        $fileType = $_FILES['fotoshop']['type'][$key];
        $target_path = '';

        // Manejo de videos
        if ($fileType === "video/mp4") {
            if (is_uploaded_file($tmp_name)) {
                sleep(1);
                $target_path = 'upload/' . mt_rand(1, 100) . bin2hex(random_bytes(mt_rand(5, 15))) . '.mp4';
                if (move_uploaded_file($tmp_name, $target_path)) {
                    $uploaded_files[] = $target_path; // Agregar video a la lista
                }
            }
        }
        // Manejo de imágenes (jpeg, png, jpg)
        elseif ($fileType === "image/jpeg" || $fileType === "image/png" || $fileType === "image/jpg") {
            $target_path = "imguser/" . mt_rand(1, 99999) . mt_rand(1, 1000) . $username . date("zihdYN") . ".webp";
            if (move_uploaded_file($tmp_name, $target_path)) {
                $uploaded_files[] = $target_path; // Agregar imagen a la lista
            }
        }
    }

    // Asignamos las rutas en el orden que fueron subidas
    $photo1 = isset($uploaded_files[0]) ? $uploaded_files[0] : null;
    $photo2 = isset($uploaded_files[1]) ? $uploaded_files[1] : null;
    $photo3 = isset($uploaded_files[2]) ? $uploaded_files[2] : null;

    // Procesar el resto de tu código para insertar en la base de datos
    $querim = mysqli_query($conexion, "SELECT * FROM friends WHERE litefriends LIKE '%," . $id . ",%' AND username != '" . $username . "' ORDER BY id DESC");
    $quid = '';

    if (mysqli_num_rows($querim) === 0) {
        $quid .= '0,';
    }

    $ino = 1;
    while ($filo = mysqli_fetch_assoc($querim)) {
        $pinta = $ino++;
        $quala = mysqli_query($conexion, "SELECT * FROM profileuser WHERE username = '" . $filo['username'] . "' ORDER BY id DESC");
        $qilo = mysqli_fetch_assoc($quala);
        $quid .= '0,' . $qilo['id'] . ',';
    }

    $friendfly = str_replace(",0,", ",", $quid);
    mysqli_query($conexion, "INSERT INTO posters (idviews, idseguis, category, hora, photo, photo2, photo3, nombre, apellido, username, email, descripts, fecha) VALUES ('0,', '" . $friendfly . "', '" . $_POST['category'] . "', '" . date("d-m-Y H:i:s") . "', '" . $photo1 . "', '" . $photo2 . "', '" . $photo3 . "', '" . $nombre . "', '" . $apellido . "', '" . $username . "', '" . $email . "', '" . $_POST['mensaje'] . "', '" . date('d M Y') . "')");

    // Notificaciones y etiquetado (ya tienes tu lógica aquí)
}
// Cierra conexión si es necesario

### Explicación de los Cambios:

1. Array Unificado: En lugar de tener dos arrays separados para fotos y videos, se usa un solo array $uploaded_files que almacena todos los archivos subidos, independientemente de si son imágenes o videos.

2. Orden de Inserción: Los archivos se añaden al mismo array en el orden en que fueron subidos. Luego, se asignan a photo1, photo2 y photo3 de acuerdo con el índice.

3. Manejo de Nulidad: Al momento de asignar las variables photo1, photo2 y photo3, se verifica si los elementos existen en el array, garantizando así que sea seguro hacer referencia a ellos.

Con esta configuración, puedes subir y guardar los archivos en el orden en el que fueron seleccionados por el usuario. Así, el primer archivo subido irá a photo, el segundo a photo2 y el tercero a photo3.
puedes hacer que cuando $_POST['category'] sea igual a livs se suba solo una foto o video en photo1
 
puedes hacer que cuando $_POST['category'] sea igual a livs se suba solo una foto o video en photo1
Claro, aquí tienes el código modificado para que, cuando el valor de $_POST['category'] sea igual a "livs", solo se suba una imagen o un video a photo1. Para cualquier otra categoría, se permitirá que se suban hasta tres archivos.

### Código PHP Modificado

PHP:
// Inicializa el array para almacenar la ruta del archivo subido
$uploaded_files = [];

// Verifica si hay archivos subidos
if (!empty($_FILES['fotoshop'])) {
    foreach ($_FILES['fotoshop']['tmp_name'] as $key => $tmp_name) {
        $fileType = $_FILES['fotoshop']['type'][$key];
        $target_path = '';

        // Manejo de videos
        if ($fileType === "video/mp4") {
            if (is_uploaded_file($tmp_name)) {
                sleep(1);
                $target_path = 'upload/' . mt_rand(1, 100) . bin2hex(random_bytes(mt_rand(5, 15))) . '.mp4';
                if (move_uploaded_file($tmp_name, $target_path)) {
                    $uploaded_files[] = $target_path; // Agregar video a la lista
                    break; // Salimos del bucle después de subir un video
                }
            }
        }
        // Manejo de imágenes (jpeg, png, jpg)
        elseif ($fileType === "image/jpeg" || $fileType === "image/png" || $fileType === "image/jpg") {
            $target_path = "imguser/" . mt_rand(1, 99999) . mt_rand(1, 1000) . $username . date("zihdYN") . ".webp";
            if (move_uploaded_file($tmp_name, $target_path)) {
                $uploaded_files[] = $target_path; // Agregar imagen a la lista
                break; // Salimos del bucle después de subir una imagen
            }
        }
    }

    // Asignamos la ruta si la categoría es "livs"
    if ($_POST['category'] === "livs") {
        $photo1 = isset($uploaded_files[0]) ? $uploaded_files[0] : null;
        $photo2 = null;
        $photo3 = null;
    } else { // Para otras categorías, permite hasta tres archivos
        $photo1 = isset($uploaded_files[0]) ? $uploaded_files[0] : null;
        $photo2 = isset($uploaded_files[1]) ? $uploaded_files[1] : null;
        $photo3 = isset($uploaded_files[2]) ? $uploaded_files[2] : null;
    }

    // Procesar el resto de tu código para insertar en la base de datos
    $querim = mysqli_query($conexion, "SELECT * FROM friends WHERE litefriends LIKE '%," . $id . ",%' AND username != '" . $username . "' ORDER BY id DESC");
    $quid = '';

    if (mysqli_num_rows($querim) === 0) {
        $quid .= '0,';
    }

    $ino = 1;
    while ($filo = mysqli_fetch_assoc($querim)) {
        $pinta = $ino++;
        $quala = mysqli_query($conexion, "SELECT * FROM profileuser WHERE username = '" . $filo['username'] . "' ORDER BY id DESC");
        $qilo = mysqli_fetch_assoc($quala);
        $quid .= '0,' . $qilo['id'] . ',';
    }

    $friendfly = str_replace(",0,", ",", $quid);
    mysqli_query($conexion, "INSERT INTO posters (idviews, idseguis, category, hora, photo, photo2, photo3, nombre, apellido, username, email, descripts, fecha) VALUES ('0,', '" . $friendfly . "', '" . $_POST['category'] . "', '" . date("d-m-Y H:i:s") . "', '" . $photo1 . "', '" . $photo2 . "', '" . $photo3 . "', '" . $nombre . "', '" . $apellido . "', '" . $username . "', '" . $email . "', '" . $_POST['mensaje'] . "', '" . date('d M Y') . "')");

    // Notificaciones y etiquetado (ya tienes tu lógica aquí)
}
// Cierra conexión si es necesario

### Explicación de los Cambios:

1. Condicional para $_POST['category']: Se agrega una condición para verificar si la categoría es "livs". Si es así, solo se sube un archivo a photo1.

2. Uso de break: En el bucle que maneja la subida de archivos, se utiliza break para salir del bucle después de que se haya subido un archivo, evitando que se suban más archivos si ya se ha subido uno.

3. Multi-subida para Otras Categorías: Si la categoría no es "livs", se permite la subida de hasta tres archivos como anteriormente.

Con estos cambios, cuando se envíe una publicación con la categoría "livs", solo se guardará un archivo en la columna photo1. Para otras categorías, se seguirán permitiendo hasta tres archivos.
 
Claro, aquí tienes el código modificado para que, cuando el valor de $_POST['category'] sea igual a "livs", solo se suba una imagen o un video a photo1. Para cualquier otra categoría, se permitirá que se suban hasta tres archivos.

### Código PHP Modificado

PHP:
// Inicializa el array para almacenar la ruta del archivo subido
$uploaded_files = [];

// Verifica si hay archivos subidos
if (!empty($_FILES['fotoshop'])) {
    foreach ($_FILES['fotoshop']['tmp_name'] as $key => $tmp_name) {
        $fileType = $_FILES['fotoshop']['type'][$key];
        $target_path = '';

        // Manejo de videos
        if ($fileType === "video/mp4") {
            if (is_uploaded_file($tmp_name)) {
                sleep(1);
                $target_path = 'upload/' . mt_rand(1, 100) . bin2hex(random_bytes(mt_rand(5, 15))) . '.mp4';
                if (move_uploaded_file($tmp_name, $target_path)) {
                    $uploaded_files[] = $target_path; // Agregar video a la lista
                    break; // Salimos del bucle después de subir un video
                }
            }
        }
        // Manejo de imágenes (jpeg, png, jpg)
        elseif ($fileType === "image/jpeg" || $fileType === "image/png" || $fileType === "image/jpg") {
            $target_path = "imguser/" . mt_rand(1, 99999) . mt_rand(1, 1000) . $username . date("zihdYN") . ".webp";
            if (move_uploaded_file($tmp_name, $target_path)) {
                $uploaded_files[] = $target_path; // Agregar imagen a la lista
                break; // Salimos del bucle después de subir una imagen
            }
        }
    }

    // Asignamos la ruta si la categoría es "livs"
    if ($_POST['category'] === "livs") {
        $photo1 = isset($uploaded_files[0]) ? $uploaded_files[0] : null;
        $photo2 = null;
        $photo3 = null;
    } else { // Para otras categorías, permite hasta tres archivos
        $photo1 = isset($uploaded_files[0]) ? $uploaded_files[0] : null;
        $photo2 = isset($uploaded_files[1]) ? $uploaded_files[1] : null;
        $photo3 = isset($uploaded_files[2]) ? $uploaded_files[2] : null;
    }

    // Procesar el resto de tu código para insertar en la base de datos
    $querim = mysqli_query($conexion, "SELECT * FROM friends WHERE litefriends LIKE '%," . $id . ",%' AND username != '" . $username . "' ORDER BY id DESC");
    $quid = '';

    if (mysqli_num_rows($querim) === 0) {
        $quid .= '0,';
    }

    $ino = 1;
    while ($filo = mysqli_fetch_assoc($querim)) {
        $pinta = $ino++;
        $quala = mysqli_query($conexion, "SELECT * FROM profileuser WHERE username = '" . $filo['username'] . "' ORDER BY id DESC");
        $qilo = mysqli_fetch_assoc($quala);
        $quid .= '0,' . $qilo['id'] . ',';
    }

    $friendfly = str_replace(",0,", ",", $quid);
    mysqli_query($conexion, "INSERT INTO posters (idviews, idseguis, category, hora, photo, photo2, photo3, nombre, apellido, username, email, descripts, fecha) VALUES ('0,', '" . $friendfly . "', '" . $_POST['category'] . "', '" . date("d-m-Y H:i:s") . "', '" . $photo1 . "', '" . $photo2 . "', '" . $photo3 . "', '" . $nombre . "', '" . $apellido . "', '" . $username . "', '" . $email . "', '" . $_POST['mensaje'] . "', '" . date('d M Y') . "')");

    // Notificaciones y etiquetado (ya tienes tu lógica aquí)
}
// Cierra conexión si es necesario

### Explicación de los Cambios:

1. Condicional para $_POST['category']: Se agrega una condición para verificar si la categoría es "livs". Si es así, solo se sube un archivo a photo1.

2. Uso de break: En el bucle que maneja la subida de archivos, se utiliza break para salir del bucle después de que se haya subido un archivo, evitando que se suban más archivos si ya se ha subido uno.

3. Multi-subida para Otras Categorías: Si la categoría no es "livs", se permite la subida de hasta tres archivos como anteriormente.

Con estos cambios, cuando se envíe una publicación con la categoría "livs", solo se guardará un archivo en la columna photo1. Para otras categorías, se seguirán permitiendo hasta tres archivos.
una duda, tampoco se subira al servidor verdad?
 
una duda, tampoco se subira al servidor verdad?
Correcto, en el código actual, si la categoría es "livs", solo se permite la subida de un único archivo, y este se subirá al servidor. Si hay un archivo subido sin problemas, se moverá a la ubicación deseada en el servidor. Sin embargo, si no se sube ningún archivo o si se produce un error, no se guardará ninguno.

### Resumen:

  • Categoría "livs": Solo se permite un único archivo (foto o video) y este se subirá al directorio especificado en el servidor.
  • Otras categorías: Permiten hasta tres archivos, que también se subirán al servidor.

Si un archivo se mueve correctamente a la ubicación de destino, la ruta de ese archivo se almacenará en la base de datos. Puedes verificar la condición de subida y asegúrate de que la carpeta de destino tenga los permisos necesarios para permitir la escritura. Si la subida no funciona, revisa los mensajes de error o verifica que el archivo está en un formato permitido.

Si necesitas más aclaraciones o ajustes, ¡hazmelo saber!
 
Correcto, en el código actual, si la categoría es "livs", solo se permite la subida de un único archivo, y este se subirá al servidor. Si hay un archivo subido sin problemas, se moverá a la ubicación deseada en el servidor. Sin embargo, si no se sube ningún archivo o si se produce un error, no se guardará ninguno.

### Resumen:

  • Categoría "livs": Solo se permite un único archivo (foto o video) y este se subirá al directorio especificado en el servidor.
  • Otras categorías: Permiten hasta tres archivos, que también se subirán al servidor.

Si un archivo se mueve correctamente a la ubicación de destino, la ruta de ese archivo se almacenará en la base de datos. Puedes verificar la condición de subida y asegúrate de que la carpeta de destino tenga los permisos necesarios para permitir la escritura. Si la subida no funciona, revisa los mensajes de error o verifica que el archivo está en un formato permitido.

Si necesitas más aclaraciones o ajustes, ¡hazmelo saber!
no sube el photo2 y photo3
 
no sube el photo2 y photo3
Para asegurarte de que photo2 y photo3 se suban correctamente, necesitarás ajustar el código para manejar las condiciones que permiten múltiples archivos cuando la categoría no es "livs", y asegurarte de que los archivos sean efectivamente subidos y procesados.

A continuación, te muestro un código revisado que maneja correctamente la subida de hasta tres archivos, asignándolos a photo1, photo2 y photo3:

### Código PHP Modificado

PHP:
// Inicializa el array para almacenar las rutas de los archivos subidos
$uploaded_files = [];

// Verifica si hay archivos subidos
if (!empty($_FILES['fotoshop'])) {
    foreach ($_FILES['fotoshop']['tmp_name'] as $key => $tmp_name) {
        $fileType = $_FILES['fotoshop']['type'][$key];
        $target_path = '';

        // Manejo de videos
        if ($fileType === "video/mp4") {
            if (is_uploaded_file($tmp_name)) {
                sleep(1);
                $target_path = 'upload/' . mt_rand(1, 100) . bin2hex(random_bytes(mt_rand(5, 15))) . '.mp4';
                if (move_uploaded_file($tmp_name, $target_path)) {
                    $uploaded_files[] = $target_path; // Agregar video a la lista
                }
            }
        }
        // Manejo de imágenes (jpeg, png, jpg)
        elseif ($fileType === "image/jpeg" || $fileType === "image/png" || $fileType === "image/jpg") {
            $target_path = "imguser/" . mt_rand(1, 99999) . mt_rand(1, 1000) . $username . date("zihdYN") . ".webp";
            if (move_uploaded_file($tmp_name, $target_path)) {
                $uploaded_files[] = $target_path; // Agregar imagen a la lista
            }
        }
    }

    // Asignamos las rutas en el orden que fueron subidas
    $photo1 = null;
    $photo2 = null;
    $photo3 = null;

    if (count($uploaded_files) > 0) {
        $photo1 = $uploaded_files[0]; // Primer archivo subido va a photo1
    }
    if (count($uploaded_files) > 1) {
        $photo2 = $uploaded_files[1]; // Segundo archivo subido va a photo2
    }
    if (count($uploaded_files) > 2) {
        $photo3 = $uploaded_files[2]; // Tercer archivo subido va a photo3
    }

    // Procesar el resto de tu código para insertar en la base de datos
    $querim = mysqli_query($conexion, "SELECT * FROM friends WHERE litefriends LIKE '%," . $id . ",%' AND username != '" . $username . "' ORDER BY id DESC");
    $quid = '';

    if (mysqli_num_rows($querim) === 0) {
        $quid .= '0,';
    }

    $ino = 1;
    while ($filo = mysqli_fetch_assoc($querim)) {
        $pinta = $ino++;
        $quala = mysqli_query($conexion, "SELECT * FROM profileuser WHERE username = '" . $filo['username'] . "' ORDER BY id DESC");
        $qilo = mysqli_fetch_assoc($quala);
        $quid .= '0,' . $qilo['id'] . ',';
    }

    $friendfly = str_replace(",0,", ",", $quid);
    mysqli_query($conexion, "INSERT INTO posters (idviews, idseguis, category, hora, photo, photo2, photo3, nombre, apellido, username, email, descripts, fecha) VALUES ('0,', '" . $friendfly . "', '" . $_POST['category'] . "', '" . date("d-m-Y H:i:s") . "', '" . $photo1 . "', '" . $photo2 . "', '" . $photo3 . "', '" . $nombre . "', '" . $apellido . "', '" . $username . "', '" . $email . "', '" . $_POST['mensaje'] . "', '" . date('d M Y') . "')");

    // Notificaciones y etiquetado (ya tienes tu lógica aquí)
}
// Cierra conexión si es necesario

### Explicación de Cambios:

1. Array Unificado: Se utiliza un solo array [ $uploaded_files ] para almacenar todos los archivos subidos, ya sean imágenes o videos.

2. Asignación de Archivos: Se verifican las posiciones del array [ $uploaded_files ] para asignar archivos a [ $photo1, $photo2, $photo3 ] según el número de archivos subidos. Esto asegura que se asignen correctamente.

3. Inserción en la Base de Datos: Las variables [ $photo1, $photo2, $photo3 ] se insertan en la base de datos. Si no hay suficientes archivos, las variables restantes permanecerán nulas.

### Consideraciones Finales:

- Verifica la Lógica: Asegúrate de que estés enviando múltiples archivos desde el frontend al formulario y que el input tenga el atributo multiple.

- Permisos de Directorio: Verifica los permisos del directorio donde estás intentando subir los archivos para asegurarte de que el servidor puede escribir en él.

- Errores: Maneja posibles errores verificando el resultado de move_uploaded_file() y añade mensajes de depuración según sea necesario.

Este ajuste debería permitirte subir correctamente hasta tres archivos (en caso de que no sea "livs") y reflejarlo en las columnas designadas. Si sigues teniendo problemas, revisa la configuración del servidor o cualquier posible restricción en los tipos de archivos permitidos. Si necesitas más ayuda, ¡házmelo saber!
 
Atrás
Arriba