B
blankito1998
Beta
¡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!


