Ver Mensaje Individual
  #21 (permalink)  
Antiguo 07/09/2009, 04:54
Avatar de anibalag85
anibalag85
 
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 16 años
Puntos: 1
Respuesta: Delete u poco extraño

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.