B
blankito1998
Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
sigue seleccionando solo el primer id encontradoEl problema puede estar en cómo estamos manejando el flujo lógico al verificar y actualizar la información. Vamos a asegurarnos de que usamos el último registro correctamente y que verificamos el valor deusersposttras haber salido del bucle, sin depender de un registro que no esté evaluado correctamente.
### Corrección Propuesta
Asegúrate de que estamos analizando y utilizando correctamente únicamente la última fila procesada. También necesitamos comprobar si$serides realmente el ID de la última fila que queremos actualizar.
Aquí tienes el código corregido:
### Código Corregido
PHP:if (isset($_GET['drio'])) { $drio = mysqli_real_escape_string($conexion, $_GET['drio']); $sett = mysqli_query($conexion, "SELECT * FROM viewpost WHERE idpost='" . $drio . "' ORDER BY id DESC"); if (mysqli_num_rows($sett) > 0) { $usuarioExiste = false; $serid = null; // Inicializamos $serid $userspost = null; // Inicializamos userspost // Procesamos las filas para encontrar el usuario y la última fila while ($pats = mysqli_fetch_assoc($sett)) { if (strpos($pats['users'], ',' . $id2 . ',') !== false) { $usuarioExiste = true; break; // Salimos del bucle si encontramos el usuario } $serid = $pats['id']; // Guardamos el ID de la última fila procesada $userspost = $pats['userspost']; // Actualizamos el valor de userspost en cada iteración } // Después del bucle, verificamos el valor de userspost de la última fila if ($usuarioExiste) { echo 'El usuario existe en la fila.'; } else { echo 'El usuario no existe en la fila.'; // asegurarse de que $serid y $userspost son válidos if ($serid !== null && $userspost !== null) { if ($userspost < 99) { // Update si la fila tiene menos de 99 (la última fila encontrada) mysqli_query($conexion, "UPDATE viewpost SET userspost=userspost+1, users=CONCAT(users,'" . $id2 . ",') WHERE id='" . $serid . "'"); } else { // Lógica para crear un nuevo registro si userspost es igual o mayor que 99 mysqli_query($conexion, "INSERT INTO viewpost(users, idpost, userspost) VALUES ('0," . $id2 . ",','" . $drio . "','1')"); } } else { echo 'No se encontró un registro válido para actualizar.'; } } } else { echo 'No hay registros existentes para este idpost.'; } }
### Modificaciones Realizadas
1. Verificación Después del Bucle: Ahora, al final, verificamos que tanto$seridcomo$userspostno sean nulos antes de realizar actualizaciones, asegurándonos de que estamos utilizando los valores de la última fila procesada.
2. Mensaje de Error: Se añadió un mensaje que indica si no se encuentra un registro válido para actualizar, para ayudarte a depurar el código.
3. Evitamos Crear Nuevas Filas: La lógica ahora revisa correctamente el último registro para saber si debería realizar unUPDATEo unINSERT.
### Consideraciones
- Depuración: Si sigue creando filas nuevas, puede ser útil agregar mensajes de depuración (como imprimir valores de$seridy$userspost) antes delUPDATEyINSERTpara entender mejor por qué la lógica no se está ejecutando como se espera.
- Estructura de la Base de Datos: Asegúrate de que la columnauserspostestá correctamente configurada en tu base de datos para evitar que se creen nuevas entradas inesperadamente.
Prueba este código y, si el problema persiste, vuelve a revisar las entradas en tu base de datos para verificar cómo se están almacenando los datos. Si necesitas más ayuda, ¡no dudes en preguntar!


