sto sbattendo la testa da tempo su questo problema, tento di semplificare al massimo:
in allegato la struttura della tabella.
lo script deve restituire un array associativo di "nodi" chiamato 'mNode' con una chiave per ogni anno_pronuncia (se il nodo "2005" è già inserito, appendo allo stesso nodo i contenuti della riga letta).
Quindi $NodeId dovrebbe incrementarsi solo quando creo il nodo 'anno', non quando appendo dati al nodo già creato. Il problema è che $NodeId invece si incrementa anche quando array_key_exists() trova il nodo 'anno' e appendo contenuti (solo la prima volta).
Nell'esempio in allegato, $NodeId deve essere 0 per tutte le iterazioni dell'anno 2005, invece diventa 1 alla seconda iterazione id=1857 (poi rimane 1 alle successive)
Codice PHP:
$NodeId=0;
while($row=$res->fetch_assoc()){
$iter=0;
$anno=$row['anno_pronuncia'];
$PronId='Pron'.$index++;
//se esiste nodo anno
if(array_key_exists($anno, $cc['mNodes'])){
$PronNum++;
$cc['mNodes'][$anno]['numeroPronunce']++;
$cc['mNodes'][$anno]['pronunce'][$PronNum]['Pid']=$row['id'];
$cc['mNodes'][$anno]['content'].='C.Cost '.$row['numero_pronuncia'].'/'.$row['anno_pronuncia'].'<br>'.utf8_encode($row['tipologia_giudizio']).'<br><button class="btn btn-primary" data-toggle="" data-target="" onclick="showPronunces(\'CC'.$NodeId.'\',\''.$PronNum.'\')">Full text <i class="fa fa-gavel"></i></button><br>';
}
//se non esiste nodo anno
else {
$PronNum=1;
$cc['mNodes'][$anno]['label']=$anno;
$cc['mNodes'][$anno]['id']='CC'.$NodeId;
$cc['mNodes'][$anno]['anno']=$anno;
$cc['mNodes'][$anno]['numeroPronunce']=1;
$cc['mNodes'][$anno]['pronunce']=array();
$cc['mNodes'][$anno]['pronunce'][$PronNum]['Pid']=$row['id'];
$cc['mNodes'][$anno]['manage']='<p class="title">Anno '.$anno.'</p>';
$cc['mNodes'][$anno]['content']='C.Cost '.$row['numero_pronuncia'].'/'.$row['anno_pronuncia'].'<br>'.utf8_encode($row['tipologia_giudizio']).'<br><button class="btn btn-primary" data-toggle="" data-target="" onclick="showPronunces(\'CC'.$NodeId.'\',\''.$PronNum.'\')">Full text <i class="fa fa-gavel"></i></button>';
$NodeId++;
}
}