Crei un ciclo while con all'interno, a sua volta, un secondo ciclo while
Con il primo ciclo while estrai i nomi delle categorie, mentre con il secondo tutti i record con il numero di quella categoria.
Crei una query per il nome della categoria e inizi il primo ciclo while.
Crei una seconda query che avrà come condizione WHERE idcategoria=$array['idcategoria']
Il secondo ciclo while estrarrà tutti i singoli articoli di quella categoria.
Poi chiudi i cicli e quando farà il secondo giro l'id categoria sarà il 2 e così via.

Riassunto:
Query per estrazione nome e id categoria
ciclo while che estrae il nome e l'id categoria
l'id categoria lo usi per la condizione della seconda query (assegnala ad una variabile differente dalla prima)
Crei un secondo ciclo while in base alla seconda query.

Fine