Estás obteniendo el resultado esperado. Si tiene el conjunto de resultados a,b,c,d
, estás comenzando con a
que es una categoría principal, por lo que retrocede hasta el inicio del conjunto e itera a través de a,b,c,d
de nuevo como subcategorías. Ahora está al final del conjunto, por lo que ambos bucles se cerrarán porque no hay más datos.
Lo que probablemente quiera hacer es leer primero todos los datos en una matriz de PHP, luego iterar sobre eso y construir algún tipo de estructura de árbol. También puede construir su estructura de árbol directamente en el ciclo mysql_fetch.
Dependiendo de lo que intente lograr, también hay mejores formas de almacenar sus datos. Vale la pena leer sobre cómo almacenar árboles y datos jerárquicos en SQL. Los conjuntos anidados son probablemente lo que desea.
Otra cosa:no uses mysql_fetch_array
, utilice mysql_fetch_assoc
en cambio. De lo contrario, terminará con claves numéricas y asociativas y una matriz de filas que contiene el doble de la cantidad de datos que debería.