Ver Mensaje Individual
  #9 (permalink)  
Antiguo 27/12/2013, 08:32
Avatar de reborn
reborn
 
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Cómo eliminar el índice [0] de un array?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Eso es porque lo que devuelve una consulta a la base es eso: un array de arrays. Lo que no debes estar haciendo es validar que la consulta devuelva algo, y eso es otro problema. Es un error de programación no validar la salida de una consulta.
Un resultado de la query devolverá los encabezados pero no los registros, cuando la query es correcta pero no hay datos que cumplan las condiciones. Y eso es correcto. pero tu script debe verificar eso antes de intentar tareas con un array que puede estar vacío.
postea el código completo, y veremos.
Si, eso fue lo q hice recien.

Código PHP:
    public function confirmar($id null){               

        
//Cuento cantidad de caracteres del id
        
$id40 strlen($id);
         
        
//Confirmo que el id de activacion contenga 40 caracteres
         
if($id40 != 40){
             
$this->Session->setFlash(__('La clave que ingresó no existe'));
             
$this->redirect(array('action' => 'index'));
         }else{           
         
           
$this->User->recursive 0;
           
//Busco todo con $id q viene por get
           
$searchIdActivate $this->User->find('all', array(
            
'conditions' => array('User.id_activate' => $id)));   
           
           
//Count para verificar q la clave existe. 0 = no existe, 1 = existe
           
$countIdActivate count($searchIdActivate);
           
           
//Si la clave no existe ($countIdActivate != 1) redirijo a posts
           
if(!$countIdActivate == 1){
               
$this->Session->setFlash(__('La clave de confirmación no existe o ya caducó 1'));
               
$this->redirect(array('controller' => 'posts''action' => 'index'));
           }
           
                
//Id de usuario a activar
                
$this->User->id $searchIdActivate[0]['User']['id'];

                
//Si el campo active es != 1, continuo. Si el campo active es = 1, la cuenta ya fue activada y redirijo
                
if(!$searchIdActivate[0]['User']['active'] == 1){

                   
//Update: "active" = 1 y "id_active" = 0
                   
$this->User->saveField('active'1);
                   
$this->Session->setFlash(__('Su cuenta ha sido activada. Gracias'));

                }else{
                    
$this->Session->setFlash(__('Esta cuenta ya fue activada. Ingrese con su usuario y contraseña'));
                    
//$this->redirect(array('action' => 'confirmar'));
                
}     

         }
    } 
Lo q hago con eso es obtener un id alfanumerico para activar una cuenta.
En ese metodo hago lo siquiente:
- Primero q el id contenga 40 caracteres antes de realizar cualquier consulta
- Segundo, hago la consulta a la db comparando ese id
- Hago un count con ese array, si es 0 no existe el id y si es 1 existe
- Hago un update al campo "active", lo paso de 0 a 1 y se activa la cuenta del usuario

y eso es lo q me salio por ahora... funciona bien