Tengo una base de datos solo con tres campos: id, IDAfiliado y IDPadrino. La idea es crear un arreglo multidimensional de tres niveles (sistema multinivel), pero tengo problemas para crear el tercer nivel, solo pude llegar al segundo nivel. Es decir, una persona tiene un nivel 1 con hasta 10 personas, en el segundo nivel, cada persona del nivel 1 puede tener hasta 10 personas, y así igual en el tercer nivel
El código que extrae hasta el segundo nivel y que funciona bien es el siguiente:
<?php
if (isset( $_POST['submit'] )) {
$numero_afiliado = ($_POST['numeroafiliado']);
include( 'conexion/conexion-abrir.php' );
#Extraer todas las filas primer nivel
$datosnivel1 = array();
$datosnivel2 = array();
$cantidaddatosdentrodelarreglo = array();
$consulta = "SELECT IDAfiliado FROM DatosAfiliados WHERE IDPadrino='$numero_afiliado'";
$resultado = $conexion -> query($consulta);
//echo "Sus afiliados de este nivel son: " . "<br>";
while($fila = $resultado -> fetch_array())
{
//echo "Afiliado primer nivel inferior: " . $fila["IDAfiliado"] . "<br>";
$datosnivel1[] = $fila["IDAfiliado"];
}
$cuentaregistrosdatosnivel1 = count($datosnivel1);
echo "El afiliado no. $numero_afiliado tiene $cuentaregistrosdatosnivel1 afiliados en este primer nivel.<br>";
echo "<pre>";
print_r($datosnivel1);
echo "</pre>";
echo "<br>Empiezo a buscar el nivel 2:<br><br>";
for($i = 0; $i < count($datosnivel1); ++$i)
{
$consulta = "SELECT IDAfiliado FROM DatosAfiliados WHERE IDPadrino=$datosnivel1[$i]";
$resultado = $conexion -> query($consulta);
while($fila = $resultado -> fetch_array())
{
$datosnivel2[$i][] = $fila["IDAfiliado"];
// AQUÍ INSERTO EL CÓDIGO PARA CREAR LA MATRIZ DE TRES NIVELES
}
echo "En este segundo nivel, si acaso existen, para el afiliado " . $datosnivel1[$i] . " tenemos " . count($datosnivel2[$i]) . " subafiliados.<br>";
$cantidaddatosdentrodelarreglo[$i] = count($datosnivel2[$i]);
echo "<pre>";
print_r($datosnivel2[$i]);
echo "</pre>";
}
echo "<br>Tenemos " . array_sum($cantidaddatosdentrodelarreglo) ." subafiliados en total en este nivel 2. <br>";
include('conexion/conexion-cerrar.php' );
}
?>
Ahora, si yo agrego el siguiente código, el script no funciona y me arroja un error fatal:
for($j = 0; $j < count($datosnivel2[$i]); ++$j) {
echo "Dentro del segundo for el valor de i=$i y el valor de j=$j;<br>";
$consulta2 = "SELECT IDAfiliado FROM DatosAfiliados WHERE IDPadrino=$datosnivel2[$i][$j][]";
$resultado2 = $conexion -> query($consulta2);
while($fila2 = $resultado2 -> fetch_array()) { //////LINEA 37 DEL ERROR
echo "Dentro del segundo while el valor de i=$i y el valor de j=$j;<br>";
$datosnivel3[$i][$j][] = $fila2["IDAfiliado"];
print_r($datosnivel3[$i][$j]);
}
}
ERROR:
PHP Fatal error: Call to a member function fetch_array() on a non-object in /home/globwsy/public_html/portal/hasta3nivel.php on line 37
Pueden ayudarme por favor???
Gracias