Originariamente inviato da piero.mac
Lo scenario presupposto da chris indicherebbe relazione molti a molti nel db ed allora ci vorrebbe una gomma per cancellare....


se fosse così dovrebbe fare una funzione ricorsiva che scende nel ramo delle sottocategorie finchè non ne trova una senza ulteriori ramificazioni. a questo punto elimina gli eventuali link presenti, cancella la categoria e ritorna alla funzione che l'ha chiamata.

codice:
function elimina($cat){
    $res = @mysql_query(SELEZIONA SOTTOCATEGORIE DI $cat);
    if( !@mysql_num_rows($res) ){
        // elimina link
        // elimina categoria $cat
    }
    else{
        while( $row = @mysql_fetch_assoc($res) ){
            elimina($row['id']);
        }
    }
}
all'incirca una cosa del genere dovrebbe andare