Foros del Web » Programando para Internet » PHP »

Ordenar un array bidimensional

Estas en el tema de Ordenar un array bidimensional en el foro de PHP en Foros del Web. Tengo un problemas, antes les describo el tema de una pantalla que cuenta con checksbox hago click sobre algunos registros presiono sobre un boton y ...
  #1 (permalink)  
Antiguo 26/07/2005, 11:13
 
Fecha de Ingreso: septiembre-2004
Mensajes: 91
Antigüedad: 19 años, 6 meses
Puntos: 0
Exclamación Ordenar un array bidimensional

Tengo un problemas, antes les describo el tema de una pantalla que cuenta con checksbox hago click sobre algunos registros presiono sobre un boton y los telefonos seleccionados son guardados, pero necesito que sea multiusuario porque luego tengo que procesar estos datos individualmente por usuario para lo que he ehecho lo siguiente:
Código PHP:
if (isset($_POST['fraude'])) {
//Definimos el tipo de variable
$numeros = array(); 
//Cargar los datos dep POST  a un array
while(list($key$val) = each($_POST)) {    
    
//Verifico si la cadena contiene 'chkfraude'
    
if (strstr($key'chkfraude')) {
        
//Verifico si la no sesion existe
        
if (!isset($_SESSION['numeros[$user]'])) {
            
//De no existir, registro la variable a la sesion
            
session_register('numeros[$user]');
        } else {            
            
//Si existe, verifico que el array no este vacio
            
if (count($_SESSION['numeros[$user]']) == 0) {
                
//Si esta vacio, asigno el contenido variable de sesion a una variable local
                
$numeros[$user][] = $_SESSION['numeros[$user]'];    
            }                    
        }
        
//Agrego un valor a la variable
        
$numeros[$user][] = $val;            
    }
}        
//Actualizo los valores de la variable de sesion
$_SESSION['numeros[$user]'] = $numeros[$user];

Luego estos quedaran almacenados hasta que el usuario vaya a otra pagina donde deberan aparecerle listados los numeros que haya ingresado con anterioridad ademas de la oportunidad de ingresar nuevos:

Código PHP:
//Variable para el usuario
$user $_SESSION['usuario'];
//Definimos el tipo de variable
$numeros = array(); 
//Verifica la variable POST
if (isset($_POST['limpiar'])) {
      
//Desregistra la variable de la sesion
      
session_unregister('numeros[$user]');
}     
//Verifica la variable de sesion
if (isset($_SESSION['numeros[$user]'])) {    
    
//Condicional para verificar si la variable de la sesion no tiene elementos
     
if (count($_SESSION['numeros[$user]']) == 0) {
        
//Asigna la variable de sesion a un array
        
$numeros[$user][] = $_SESSION['numeros[$user]'];     
    } else {
        
//Ordena el array
        
sort($numeros[$user]);
        
//Elimina los numeros repetidos
        
$repetidos array_unique($numeros[$user]);
        
//Elimina el array
        
unset($numeros[$user]);
        
//Asigna el array sin repetidos a otro array
        
$numeros[$user] = $repetidos;
        
//Bucle para cargar los numeros ingresados hasta el momento
        
for ($k=0$k count($numeros[$user]); $k++) {
            echo 
$numeros[$user][$k]."<br>";
        }
    }                
}        
//Verifica la variable POST      
if (isset($_POST['insertar'])) {
          
//Condicional para verificar que se haya ingresado un numero
    
if ($_POST['numero[$user]'] == "") {
        
//Mostrar un mensaje
        
echo "No ingreso ningun numero";
    } else {                
        
//Bucle para verificar que el numero no ha sido ingresado antes
    
for ($t=0$t count($numeros[$user]) ;$t++) {        
        if  (
$_POST['numero[$user]'] == $numeros[$user][$t]) {
            echo 
"El numero ya fue ingresado</br>";    
            
$flag true;
        }
    }    
    
//Condicional cuando el numero no es repetido
    
if ($flag == false ) {
        
//Agregar el numero POST a la variable
                     
$numeros[$user][] = $_POST['numero[$user]']; 
        
#for ($i=0; $i < count($numeros) ;$i++) {                #echo $numeros[$i]."</br>";                
        //Muestra el numero en pantalla
        
echo $numeros[$user][count($numeros[$user])-1]."</br>";                
        
#}    
    
}            
    
//Verifica si la sesion no esta registrada
    
if (!isset($_SESSION['numeros[$user]'])) {
        
//Registrar variable en la sesion
        
session_register('numeros[$user]');
    } else {
        
//No hacer nada en caso contrario
        
$_SESSION['numeros[$user]'] = $numeros[$user];
    }
}

Despues de esto proceso el array con los usuarios, pero la verdad no se si se procesa algo, no se si trabajar con sesiones permita guardar array dimensionales, o como deberia guardarlos, les agradecre su ayuda sujerencia ok, muchas gracias y disculpem lo extenso del msj
__________________
El amor es aquello que me da la fuerza para seguir, y ella es la bateria que Dios me dio para estar siempre activo. :corazon:
  #2 (permalink)  
Antiguo 26/07/2005, 12:19
 
Fecha de Ingreso: septiembre-2004
Mensajes: 91
Antigüedad: 19 años, 6 meses
Puntos: 0
disculpen el error me sale aqui es
Warning: sort() expects parameter 1 to be array, null given in d:\archivos de programa\apache group\apache\htdocs\sistema\prueba2.php on line 88

Warning: array_unique(): The argument should be an array in d:\archivos de programa\apache group\apache\htdocs\sistema\prueba2.php on line 91
alguna ayuda
__________________
El amor es aquello que me da la fuerza para seguir, y ella es la bateria que Dios me dio para estar siempre activo. :corazon:
  #3 (permalink)  
Antiguo 26/07/2005, 12:36
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 1 mes
Puntos: 9
Veamos si puedo ayudarte .. Podrias imprimir el resultado que generan estas lineas para saber que se esta enviando, ya que el error esta en lo que llega a sort()..

Código PHP:
$_SESSION['numeros[$user]']

sort($numeros[$user]) 
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:05.