Salve a tuttti,scusa il titolo disastrato,non sapevo nemmeno come chiamarlo stò problema :-)
Allroa stò realizzando un sito che avrà dei prodotti,tali prodotti saranno contenuti in sotto-categorie che dalle categorie madri,e importante dire che anche queste sotto-categorie diventeranno madri,nel caso registro una sotto-categoria in queste.... Ho fatto tutto i lsito,il backend praticamente,la navigazione funziona benissimo,la modifica delle categorie e sotto-categorie và bene,il problema è che stando su aruba,non posso appoggiarmi al motore innodb,ma solo myISAM,quindi nasce il problema della cancellazione a cascata...ho scritto un algoritmo che me le cancella a cascata e mi elimina anche gli articoli appartenenti ad ogni sotto-categoria che stà per cancellare,il problema sustiste qualora ho un albero categorie così composto:
1 - 2 - 3 - 4,4.1,4.2,4.3
Non è faciele spiegarlo cmq ci provo:
allora il trattino sarebbe a dire "che contiene" quindi la 1 contiene la 2 (questa sò che appartiene alla 1 tramite il campo id_rif che è uguale all'id della categoria contenuta nel livello precedente) e così via,appena si arriva al separatore virgola significa che sono contenute tutte in quella prima del trattino...
Il problema è che,seguendo sempre l'esempio sopra, con il mio algoritmo cancellando la 1,mi cancella anche la 2 la 3 la 4 la 4.1 la 4.2 la 4.3 tutte quelle incluse insomma,però se queste incluse hanno delle sottocategorie,non sò come fargliele cancellare...Il codice per la cancellazione è questo:
$query_table=mysql_list_tables('$nome_database');
$i = 0;
$num_table = mysql_num_rows ($query_table);
while ($i < $num_table){
$tabella[$i] = mysql_table_name($query_table,$i);
if(strcmp($tabella[$i],$table) == 0)
{
$query = "delete from $table where id=$id";
mysql_query($query);
for($a = 1;$a<$num_table;$a++){

$query_rec_id="SELECT id FROM sub_level_$a WHERE id_rif = $id";
//CANCELLO PRIMA GLI ARTICOLI CONTENUTI
$query_del_art="delete from articoli WHERE id_cat = $id AND level = $a";
mysql_query($query_del_art);

$result=mysql_query($query_rec_id);
$row=mysql_num_rows($result);

if($row != 0){
//EFFETTUO LA CANCELLAZIONE DELLA CATEGORIA
$query_delete="delete FROM sub_level_$a WHERE id_rif = $id";
mysql_query($query_delete);
$dati=mysql_fetch_assoc($result);
$id=$dati['id'];
}
else{
header("Location: $redirect.php");
exit;
};
}
}
$i++;
}
}

Il problema è dove ho if($row != 0),perchè se $row > 1,tutto questo codice dovrebbe essere applicato anche a questa categoria,ho provato a pensare alla ricorsione,ma mi sono perso del tutto...
Se non avete voglia di rispondere leggere o altro forse vi capisco....