Los expertos en PHP y MySQL están aquí para ayudar. ¿Cómo calcular si un determinado nodo a continuación está debajo de un determinado nodo?
El diseño de la tabla de datos no es razonable.
Diseño de tabla sugerido:
Nº, número superior, cantidad, ruta
La ruta es la descripción completa de la relación de un registro de usuario
El contenido puede ser #1#2#3#4#
Significa que el nivel superior del usuario es el usuario con ID 1. El nivel superior es el usuario con ID4
Si la tabla está diseñada así, puede usar directamente la comparación de cadenas para determinar si un determinado usuario existe bajo un determinado usuario.
Por ejemplo: consultar si el usuario actual es un subordinado del ID de usuario 1. Primero averigüe la ruta del usuario.
Supongamos que el registro de usuario es el número 5, ID superior 4, cantidad 100, ruta #1#2#3#4#
Luego use strpos() para determinar si #1# existe en la ruta del usuario actual (#1#2#3#).
Por ejemplo: obtener todos los miembros subordinados del usuario con ID1. Esto se puede lograr usando select * de la tabla de miembros donde instr (ruta, '#1#')
La ventaja de este diseño es que puede consultar y obtener de manera rápida y eficiente los usuarios que pertenecen a la relación.
La desventaja es que el mantenimiento es un poco más problemático Al realizar actualizaciones y eliminaciones, es necesario actualizar las rutas de todos los usuarios relevantes.
Pero en general, es mejor que extraer datos de la base de datos, uno por uno. Es mucho más rentable.