He cambiado el código, creo que está mejor ahora, pero no me llega a liminar las categorías, por que no entra en el último for().
Te pongo el código
Código PHP:
/*******Aquí se empieza el delete*******/
/*Primero empezamor rellenando los arrays*/
//el $nombre_campo es el código de la categoría que queremos eliminar
$sentenciaBorrar="select * from CATEGORIAS_PRODUCTOS where Id_CategoriaPadre=".$nombre_campo;//Miramos todas las categorias hijo que tiene
$resultBorrar=mysql_query($sentenciaBorrar,$link);
$cont=1;//Contador de arrays
while($datosBorrar=mysql_fetch_array($resultBorrar)){
array_push($arrayBorrar[],$datosBorrar['Cod_Categoria']); //Metemos en un array los codigos de los hijos
}
array_push($arrayGeneral[$cont],$arrayBorrar);//Incorporamos al array general el último array
//Empezamos un bucle para ver todos los hijos de todos los padres del array
while($arrayBorrar[0]!=""){//Primero hacemos un bucle de para rellenar arrays segun su nivel y que pare cuando el último relleno esté vacio
$cont++;//Cuenta el array que estamos rellenando
$contAnterior=$cont-1;//Para hacer la busqueda en el array anterior
$maximo=$arrayGeneral[$contAnterior].length;//calculamos la longitud del array anterior
for($i=0;$i<=$maximo;$i++){//Hacemos otro bucle para pasar por todos los registros del array anterior y sacar sus hijos
$sentenciaBorrar2="select * from CATEGORIAS_PRODUCTOS where Id_CategoriaPadre=".$arrayGeneral[$contAnterior][$i];//Miramos todas las categorias hijo que tiene
$resultBorrar2=mysql_query($sentenciaBorrar2,$link);
while($datosBorrar2=mysql_fetch_array($resultBorrar2)){
array_push($arrayBorrar,$datosBorrar2['Cod_Categoria']); //Metemos en otro array los codigos de los hijos
}
}
array_push($arrayGeneral[$cont],$arrayBorrar);
}
/*Terminamos de rellenar los arrays*/
/*-------------------------------------------------------------------------------------------------------------------------*/
/*Empezamos a eliminar*/
for($i=$cont;$i>=0;$i--){//Este for es para que pase por todos los objetos del arrayGeneral
for($k=1;$k<=$arrayGeneral[$i].length;$k++){//Este for es para que pase por todos los objetos que se encuentran en un array dentro del arrayGeneral
$sentencia="delete from CATEGORIAS_PRODUCTOS where Cod_Categoria=".$arrayGeneral[$i][$k];//Esta sentencia borra las categorias
$result=mysql_query($sentencia,$link);
;
}
}
/*Terminamos de eliminar*/
/************Aquí se termina el delete***********/
No se que podrá ser, es que no estoy muy puesto en arrays multidimensionales, por eso será digo yo.